PairCart

PairCart Privacy Policy

Effective date: [Effective date]

PairCart ("the app", "we") is a Shopify app that shows product offers in the cart of an online store. It is operated by [Company name], [Company address]. Contact: [Contact email].

This policy explains what data the app reads, stores and shares, for merchants who install it and for shoppers who use their stores. It covers the app and the cart it adds to your storefront.

1. Summary

2. Data about the merchant's store

2.1 What the app reads through the Shopify Admin API

DataUsed for
Products: title, handle, product type, category, vendor, tags, images, prices, variants and options, inventory and availability, publication status, subscription-only status; the Search & Discovery complementary products list; product rating metafields reviews.rating and reviews.rating_count when they existChoosing offers, showing them in the cart and in the admin, upgrades, stars on offers
Orders of the last 60 days (Shopify gives apps no more without extra access): creation time, cancelled and test flags, and for each line the product, quantity, price after discounts and the line properties _ca_upsell and _ca_upgrade. Also the cart attribute _ca_cart where used"Bought together" signals, "Sales through PairCart", Analytics, the upgrade result
Shipping rates (delivery profiles) and automatic discountsThe free shipping bar threshold; telling whether our pair discount can combine with other discounts
Published theme files config/settings_data.json and templates/product*.json, and theme colorsWarning when another cart app is on; checking our product block is placed; matching cart colors in the preview
Store name, currency, money format, billing country, plan type (development store or not)Showing prices, the preview, test-order handling
Webhooks: products created, updated, deleted; discounts updated, deleted; app uninstalled; scopes updated; the three mandatory privacy requestsKeeping offers current; deleting data

Orders: exactly what we read. Our order queries select: creation time, cancelled flag, test flag, and per line item the product id (and title for the report), quantity, price after all discounts and line properties. They do not select customer, billing or shipping address, email, phone, name, payment, or note fields. Order data is processed in memory to compute counts and totals and is not saved in our database.

Line properties. Shopify returns the properties of an order line (the "line item properties" a theme or another app puts on it, for example an engraving text a shopper typed). We read them in memory only to find PairCart's own markers (_ca_upsell and _ca_upgrade; for the upgrade marker also its value, the id of the variant that was replaced). Every other property, key or value, is discarded at once: we never save it, never write it to a log and never send it anywhere.

2.2 What we write to your store

Through Shopify we write app-owned metafields (readable only by the app and by the storefront code of the app): the offer map, settings, shipping threshold, discount settings, the "why" notes for each offer, kind cache, rules, onboarding progress and the subscription on/off status. They contain product ids, handles, prices and your settings. Shopify removes app-owned metafields when the app is uninstalled. We also create one automatic discount ("PairCart kit discounts") running our Shopify Function when you save a pair discount, and register a Web Pixel (see 3.2). We delete the discount when the last pair discount is removed.

2.3 What is in our database

TableContentKept
SessionStore domain, the app's access token for the store, granted scopes, and session fields from the Shopify template. The app uses store-level (offline) tokens; it does not save staff names or emails [verify on production before publishing]Until uninstall
MapStateStore domain, time of the last offer map build, "products changed" flagUntil uninstall
ShopBackupStore domain and copies of your pair edits, kind rules and pair discount settings (product ids, discount id), plus a one-time "restored" noticeAfter uninstall (to restore on reinstall) until Shopify's shop/redact request or until we delete it on request
FunnelDay, FunnelPairDayStore domain, UTC day, counts: cart opens; per pair (product ids): offers shown, offers added400 days, then deleted. Deleted at uninstall

Our server's temporary memory caches product data and the offer inputs for up to 30 minutes. Server logs contain store domains and technical errors, not shopper data [hosting provider's standard request logs may include IP addresses, see 6].

2.4 Staff accounts

We do not store the names or email addresses of your staff. Billing and plan are handled by Shopify.

2.5 Subscription status

We ask Shopify's Partner API whether the store has an active subscription or trial. The request contains the app id and the store's numeric id. We receive the status only.

3. Data about shoppers

3.1 The cart on your storefront

The cart script runs in the shopper's browser. It reads the cart and product data from your own store (/cart.js, /cart/*.js, /products/*.js) and shows offers. It does not send data to our servers.

3.2 Funnel counters (Web Pixel)

We register a Web Pixel in your store. It runs only for shoppers who have allowed analytics where consent is required (the pixel declares analytics only; marketing, preferences and sale of data are off). It counts three events: cart opened, offer shown, offer added. It sends batches of counts to our server: the store domain, a random batch id, counts per pair of product ids. It does not send or store a client id, cookie, name, email, IP address or user agent. Our server may see the shopper's IP address in transit; it is used only for rate limiting in memory and is not stored or logged. The counters are kept 400 days. Because of consent rules the funnel numbers can be lower than real activity; sales numbers come from orders.

4. Processors and recipients

WhoWhat they getWhyWhere
ShopifyAll data above flows through its platformHosting the store and app APIsSee Shopify's policy
OpenAIProduct types and categories ("kinds") of your catalog, with up to 3 example product titles for each kind. No customer, order, price, or merchant identity data. Sent only when new kinds appear, at most 5 times a day and 30 times a month per store. Optional: the app works without itDeciding which kinds go with whichUnited States. [Add the OpenAI API data terms link after checking]
[Hosting provider: Render]All data in section 2.3, and server request logsRunning the app and its database[Hosting region]
[Database provider, if not Render]Section 2.3 dataDatabase[Region]
[Email/support provider]Messages you send to supportSupport[Region]

We do not sell personal data, share it for advertising or use third-party analytics or advertising trackers in the app. We may disclose data if the law requires it.

5. How long we keep data

6. Security and location

Data is sent over HTTPS. Access tokens are stored in the database [with encryption at rest by the hosting provider]. Secrets are held in environment variables, not in the code. The cart sends no data to us. Our hosting is in [Hosting region]. If your store is in the EU or UK and our hosting or OpenAI is outside it, we rely on [Standard Contractual Clauses / other transfer mechanism]. The hosting provider may keep standard infrastructure logs that include IP addresses for [period].

7. Your rights

Depending on where you live (for example under the GDPR or the CCPA), you can ask us to access, correct or delete your data, or to stop processing it. We hold no personal data about individual shoppers. For shoppers' requests, Shopify passes customers/data_request and customers/redact requests to us; we answer them and confirm we hold no data about the customer. shop/redact deletes all of a store's data including the copy of pair edits. For merchants: uninstalling deletes your data as described in section 5; you can also email [Contact email] and we will delete the rest within 30 days. California residents: we do not sell or share personal information.

8. Shopify privacy requests

The app handles the three mandatory webhooks: customers/data_request, customers/redact and shop/redact, verified with Shopify's signature. It also handles app/uninstalled.

9. Children

The app is for merchants. It does not knowingly collect data from children.

10. Changes

We will post changes here and change the effective date. Material changes will be shown in the app.

11. Contact

[Company name], [Company address], [Contact email]