Privacy Policy
Last updated: October 23, 2026
This Privacy Policy describes how NerdLabs ("we," "us," or "our") collects, uses, and protects information through the TraceKit application ("the App"). TraceKit is a Shopify application, embedded in the Shopify admin, that lets merchants log and track lot, batch and expiry information against their products — for food, cosmetics, supplements, and any other perishable or regulated goods.
1. Information We Collect
1.1 Shopify Store Data
TraceKit requests only the minimum Shopify API access it needs:
- Products (read): so you can pick a product from your catalog when logging a lot (a lot attaches to the product, and to its variant when the product has exactly one)
- Orders (read): so a recall trace can list the orders placed in a lot's date window that contain that product. Shopify's standard order access covers the last 60 days of orders; a trace whose window starts earlier shows a warning and lists only the orders within that period. Each trace is computed on request from Shopify and shown to you; nothing from a trace is stored. The report shows the order number, date, quantity, payment status and fulfillment status, the buyer's name and email address (so you can contact affected buyers), and a link to the order in your Shopify admin. Name and email are read from Shopify at that moment and shown to you; they are never stored by TraceKit. It does not read phone numbers or shipping addresses. Separately, Shopify notifies TraceKit of new orders and refunds so that, when "Sales deplete lots" is on, it can count sold units down from your lots (see Section 1.3); from those notifications TraceKit keeps only order and refund IDs, order numbers, line item IDs and units per lot — no buyer data.
- Customers (read): required by Shopify for the buyer name and email on a recall trace. TraceKit does not read your customer list and stores no customer data.
Those are the only Shopify API scopes the App requests. Beyond the buyer name and email shown on a recall trace, TraceKit does not read your customer records or any personal data about your store's customers, and it does not write to your store.
1.2 Store and Session Data
To run the App for your store, we store:
- Your store's
myshopify.comdomain - An app session token issued by Shopify (short-lived and refreshed automatically)
- The plan tier your store has chosen
- Your store's timezone, used to schedule the weekly expiry email (below) on your Monday morning, and your setting for whether that email is on or off
1.3 Lot Records You Enter
To provide the App's core functionality, we store the lot records that you and your staff enter:
- Product ID and title, and optionally the variant ID and SKU the lot is attached to
- Lot or batch code, quantity, and unit
- Supplier name (merchant-entered business data)
- Manufactured, received, and expiry dates
- Status (active, depleted, expired, or recalled)
- Free-text notes
- Timestamps for when the record was created and last changed
- When "Sales deplete lots" is on (on by default for stores that install TraceKit after this feature was released; off for stores that had installed it before, until switched on): how many units have sold out of each lot, and for each order line of a product that has lots, the order ID, order number (such as #1001), line item ID, the lot it drew from (or none, if no lot had stock) and the number of units. A record that an order or refund was already handled (its ID only, so a repeated notification is never counted twice) is kept for every order of a store that has lots, even while "Sales deplete lots" is off. A refund that arrives before its order (order and line item IDs and units) is kept, whether or not "Sales deplete lots" is on, until the order arrives; one older than 7 days is dropped the next time an order reaches TraceKit (or a refund for an order TraceKit has not yet handled), and in any case when your store's data is deleted. No buyer name, email, address or other buyer data is stored.
Recall traces are not stored. A recall trace is read from Shopify when you open it and again when you export it; nothing from it is written to TraceKit's database.
No buyer personal data is stored. The only buyer personal data TraceKit touches is the buyer name and email shown on a recall trace, read live from Shopify for that report and never written to TraceKit's database, logs or backups. Lot depletion stores order references only (order ID, order number and line item ID), never the buyer's details.
1.4 Store Owner's Email
While the App is installed, we register with our email service:
- The email address on the store owner's Shopify account (as set in Shopify — not your store's public contact email)
- Your store's admin language, and whether the store is a Shopify development store
1.5 Support Messages
If you message us from inside the app (including a free setup or customization request), we store your messages, your shop domain, the reply-to email address and name you provide or that Shopify lists for your store, and your admin language — used only to answer you and to email you when we reply.
1.6 Error Reports
If a page of the app in your Shopify admin hits a technical error, your browser sends us the error message and stack trace, the page address (without its query string), the browser type, and your shop domain, so we can find and fix the bug. Our support service on our DigitalOcean server stores the report and, through Mailgun, emails an alert with the error text and stack trace, page address and shop domain to our team's mailbox, which Google hosts. When Shopify's shop/redact request arrives, your shop domain in the stored reports is replaced with an anonymous identifier and the page address and browser type are removed. That does not cover the alert emails: we keep them while we need them to fix the bug and delete them on request.
2. How We Use Your Information
We use the collected data exclusively to:
- Display, edit, and manage the lot records you enter
- Calculate expiry summaries (lots expiring soon and lots past expiry) inside the App
- When "Sales deplete lots" is on (switchable on the App's home page): count units sold out of your lots as orders come in, earliest expiry first, and put units back when a refund restocks them
- Build a recall trace when you open or export one: read the orders placed in a lot's date window, identify the ones containing that product, and show each order with the buyer's name and email so you can contact affected buyers (read live, never stored)
- Send a weekly expiry email to your store's contact email address every Monday morning listing lots past expiry or expiring within 30 days, while the App is installed. It is on by default and can be switched off at any time from the App's home page; weeks with nothing expiring send nothing. The address is read from Shopify when the email is sent and is not stored by TraceKit
- Email the store owner, using the store owner's email (section 1.4): account alerts, a one-time welcome note when you upgrade to a paid plan, and a one-time note after you uninstall asking what we could improve
- Provide customer support, including in-app support messages and free setup and customization help
- Apply the active-lot capacity of the plan tier you have chosen
- Authenticate your store's embedded-app session with Shopify
- Find and fix bugs, using the technical error reports described in section 1.6
- Improve and maintain the App
3. Data Sharing and Disclosure
We do not sell, rent, or share your data with third parties for their marketing purposes. Your data may be shared only in the following circumstances:
- Service Providers: We use a hosting provider (DigitalOcean) that stores and processes data on our behalf, and an email delivery provider (Mailgun) that receives your store's contact email address and the contents of the weekly expiry email (your store name and the lot summaries) in order to deliver it. Mailgun, our email provider, also receives the store owner's email (section 1.4) to deliver our emails to the store owner, and the reply-to address you give us for support messages (section 1.5) to deliver our replies, sent from support@nerdlabs.us. If one of your customers makes a data request through Shopify, the report described in Section 6 is emailed to the store owner through Mailgun; it names the requesting customer as Shopify identified them (their email address and/or Shopify customer ID). Our team mailbox (hosted by Google) is notified when such a report is sent or cannot be sent: your shop domain, Shopify's request ID, the number of records and, if it cannot be sent, the customer ID — never the report itself. Apart from Google (below), which hosts our team's mailbox for these notices and for error alerts, no other third-party service receives your data.
- Google: hosts our team's mailbox, which receives error alerts.
- Legal Requirements: We may disclose data if required by law, subpoena, or court order.
- Business Transfers: In the event of a merger or acquisition, data may be transferred as part of business assets.
4. Data Storage and Security
- Data is hosted on NerdLabs servers on DigitalOcean in the United States.
- Data is encrypted in transit (TLS 1.2+).
- Daily backups of the app's database are taken and retained for 7 days.
- Access to production systems is restricted to authorized NerdLabs personnel only.
5. Data Retention and Deletion
We retain your data only as long as you have TraceKit installed. When you uninstall the App:
- Your store's session tokens are deleted immediately.
- Your lot records are retained for 48 hours, so an accidental uninstall can be reversed by reinstalling.
- Shopify then issues its shop-redaction request (about 48 hours after uninstall) and TraceKit permanently deletes every record for your store (except technical error reports and their alert emails, which are handled as described in Section 1.6) — always within 30 days of uninstall.
- The store owner's email, admin language and development-store flag are deleted when Shopify sends that shop data erasure request, about 48 hours after uninstall.
- Backups of the app's database age out within 7 days after that.
- Support messages are deleted together with your store data when Shopify sends its store-deletion (shop/redact) request, or sooner on request. Backup copies of support messages age out within 30 days.
6. Shopify Privacy Webhooks (GDPR)
TraceKit implements all three of Shopify's mandatory privacy webhooks:
- Customer data request: TraceKit stores no buyer personal data. If lot depletion recorded draws for the orders in the request, TraceKit emails the store owner a report of them (order number, product, lot and units) so you can answer your customer; otherwise there is nothing to return.
- Customer redaction: TraceKit deletes every lot-depletion record for the orders listed in the request (the order references described in Section 1.3). Lot totals are kept, as they are stock counts, not order data. Records that a refund was already handled hold a refund ID only, are not linked to an order, and are deleted with the rest of your store's data on shop redaction.
- Shop redaction: TraceKit permanently deletes every record for the store (technical error reports and their alert emails are handled as described in Section 1.6), as described in Section 5.
7. Your Rights
You have the right to:
- Access: Request a copy of the data we hold about your store.
- Correction: Request correction of inaccurate data. Lot records can also be edited directly in the App.
- Deletion: Request deletion of your data at any time. Uninstalling the App triggers automatic deletion as described in Section 5.
- Portability: Request your data in a portable format.
To exercise any of these rights, email support@nerdlabs.us.
8. Cookies and Tracking
TraceKit does not use cookies for advertising or tracking purposes. It uses only what Shopify's embedded-app session requires in order to function. The App contains no third-party analytics and no advertising pixels.
9. Children's Privacy
TraceKit is a business tool for Shopify merchants. We do not knowingly collect information from children under 13.
10. Changes to This Policy
We may update this Privacy Policy from time to time. We will notify you of significant changes by posting an update within the App or by email.
11. Contact Us
If you have questions about this Privacy Policy or how we handle your data, contact us at:
NerdLabs
Email: support@nerdlabs.us
Website: nerdlabs.us