For every store that installs AutoApprove, the merchant is the data controller and AutoApprove is a data processor acting on the merchant’s behalf. We process data only to provide the app’s functionality.
What we collect
From the Shopify store (via the Shopify Admin API)
- Products & variants — read to match purchase-order line items to the correct SKU. (
read_products) - Customers & companies — read to attach the correct B2B buyer / purchasing entity to a draft order. (
read_customers) - Draft orders — created on the merchant’s behalf. (
write_draft_orders) - Session & shop identifiers — the shop domain and OAuth access token required to call the Shopify API for that store.
From purchase orders submitted to the app
- The purchase-order document and the data extracted from it — line items, quantities, prices, PO numbers, and any buyer contact details the document contains.
- Buyer email addresses — when a PO arrives by email, we store the sender and any customer email resolved from it, so the merchant can review who the order is for.
- Mapping memory — a per-store record linking the free-text product names a buyer uses to the Shopify variant they map to, so repeat orders match automatically. It is keyed by a customer key and the raw line text; it does not store buyer contact details.
How we use it
Solely to extract, match, and prepare draft orders for merchant review, and to remember per-store product mappings so future orders from the same buyer match more accurately. We do not sell data or use it for advertising.
Sub-processors
| Sub-processor | Purpose | Data shared |
|---|---|---|
| OpenAI | AI extraction of structured order data from the PO document | The purchase-order content (text or image extracted from the file). Not used to train their models. |
| Mailgun (only if email intake is enabled for a store) | Receiving purchase orders sent to the store’s forwarding address | Inbound email content and attachments |
| Fly.io | Running the application | All data listed above, in transit and in application memory |
| Supabase | Managed database (data at rest) | All stored data listed above |
Where data is stored & retention
Data is stored in the app’s own database, isolated per store. We retain purchase-order records and mapping memory only as long as needed to provide the service, and delete them as described below.
Data deletion
- On uninstall: we immediately delete the store’s stored purchase orders and mapping memory.
- Shopify GDPR compliance webhooks are implemented:
customers/data_request— we compile the data we hold for a given buyer so the merchant can respond to a data-access request.customers/redact— we delete all stored purchase-order records tied to that buyer’s email.shop/redact— 48 hours after uninstall, we erase all remaining data for the store (purchase orders, mapping memory, the inbound-email token, and sessions).
Merchant & buyer rights
Buyers should direct data-access and deletion requests to the merchant (the data controller), who can fulfill them through the app or the Shopify request flow. Merchants can trigger deletion at any time by uninstalling the app.
Contact
Questions about this policy or a data request: [email protected]