Privacy Policy — Parcel Pulse

Last updated: 12 July 2026

Parcel Pulse ("the app", "we", "us") is a Shopify app that helps a merchant catch duplicate orders and broken shipping addresses on their own unshipped orders before a shipping label prints. This policy explains exactly what data the app accesses, why, how long we keep it, and how to have it deleted. It is deliberately narrow because the app is narrow.

Who this policy is for

Our direct customer is the merchant who installs Parcel Pulse on their Shopify store. In the course of its two pre-ship checks the app reads certain fields from that merchant's orders, which can include a shopper's phone number and shipping address. We process this on the merchant's behalf as a data processor.

What data we access

Parcel Pulse is classified as Protected Customer Data Level 2. It requests exactly two Shopify Admin API scopes — read_orders and write_orders — and deliberately does not request read_customers, because every field it uses is read off the order itself. To run its two checks it reads, from the merchant's own store only, the following fields off unshipped (unfulfilled, open) orders:

The order query is scoped to unshipped orders only (Shopify filter fulfillment_status:unfulfilled AND status:open). If Shopify returns a field-level access-denied for a Protected Customer Data field (e.g. email before it is approved), the app tolerates it and proceeds with the remaining fields — it does not force access to data it is not entitled to.

How we use it

The data is processed in memory to run two deterministic, rule-based checks:

The optional blocklist (Pro) additionally compares an order's phone/email to a list the merchant manages themselves. After the checks run, we discard the raw data. Parcel Pulse uses no AI and no third-party model — the checks are plain, deterministic rules, and no customer data is sent to any external service.

The one write we perform

The only change Parcel Pulse ever makes to a store is cancelling a duplicate order — and only when the merchant explicitly clicks "Cancel duplicate" on a specific flagged row (this is what write_orders is for). The cancellation is cash-on-delivery-safe (no refund, because nothing was charged), restocks the items, and does not email the shopper.

What we store (PII-minimised)

We persist only what the flagged-order queue needs to be actioned:

We do not store line items, customer names, email addresses, full shipping addresses, or raw (unmasked) phone numbers at rest. The flag queue is replaced on every scan, so it only ever reflects the current set of unshipped orders.

Sub-processors & hosting

Order data is read from Shopify's Admin API. The app runs on our own server infrastructure, using a PostgreSQL database (for the PII-minimised flags described above) and Redis (for background scan jobs). We do not sell, rent, profile, or share customer data with any third party, and we never combine data across different merchants.

What we never do

Retention

Flag rows live only until the next scan replaces them. On uninstall the store record is marked uninstalled and its derived flags are removed. On a customer-redact or shop-redact request we delete the relevant rows (see below).

Deletion & GDPR

We honour Shopify's mandatory compliance webhooks. On a customers/redact request we delete the flagged-order rows for that customer; on a shop/redact request we delete the store's data; the customers/data_request topic is supported. Because we store only masked, PII-minimised flags, there is minimal personal data to export or erase. Merchants and their customers may exercise GDPR rights (access, erasure, rectification) by contacting us at the address below.

Contact

Questions or data requests: privacy@syncerp.work.

See also our Protected Customer Data disclosure and Terms of Service.