Privacy policy — Shelfmark Labels
Who we are
Shelfmark Labels ("the app") is a Shopify app that generates barcode and price labels as PDF files. Controller: Tidewell Apps, contact: tidewellapps@gmail.com.
What data we process and why
| Data | Source | Purpose | Stored? |
|---|---|---|---|
Shop domain (*.myshopify.com) and OAuth tokens (access token and refresh token) | App installation | Authenticate the app's requests to Shopify | Yes, while the app is installed |
| Last confirmed app plan and when it was confirmed | Shopify Partner API | Avoid repeated checks (reused for 5 min on Pro and 60 s on Free) and avoid blocking paying merchants if the plan check fails (up to 72 h) | Yes, while the app is installed |
| Label settings (fields shown, font size, symbology, printer resolution) | Merchant | Generate labels as configured | Yes |
| Custom label templates and calibration (offsets, rotation) | Merchant | Generate correctly sized PDFs | Yes |
| Number of labels generated per month | App | Apply the plan quota | Yes (only the number, per shop and month), until the shop/redact request |
| Product data (title, variant, SKU, price, compare-at price, barcodes) | Shopify Admin API, only for the selected products | Draw the labels | No: read on demand; the PDF is not stored on the server. In the Shopify mobile app, the PDF waits in server memory (never on disk or in the database) for at most 2 minutes, until its download link has been opened 3 times or expires |
| Shop identifier sent to Shopify's Partner API | App | Find the active plan | Not in the database (server memory only). The result is cached in memory for up to 5 minutes (5 min for Pro, 60 s for Free or no plan, 30 s after an error) |
| Redirect counters for the plan selection page (numbers and dates) | App | Keep merchants out of a redirect loop | Yes, while the app is installed |
Server logs contain the requested addresses (with the shop domain and technical parameters sent by Shopify), the response status, the webhook event type and technical error messages. They contain no data about the shop's customers and are not copied to the app's database.
We do not process data about the shop's customers (buyers): no names, emails, phone numbers, addresses, IP addresses or customer IDs. The app only requests read_products access and never changes the store.
Where data is kept
The app is hosted by Fly.io in its Amsterdam region (the Netherlands, European Union). The database is on a volume on that server; Fly.io keeps daily backups of the volume for 14 days.
Retention and deletion
- When the app is uninstalled (
app/uninstalledwebhook) we immediately delete the sessions, settings, templates, calibrations, last confirmed plan and redirect counters. - The monthly label counter (shop domain, month and a number) is kept until Shopify's deletion request (
shop/redact, sent 48 hours after uninstall), so uninstalling and reinstalling does not reset the free plan quota. That request deletes all remaining shop data. - Customer data and deletion requests (
customers/data_request,customers/redact): we store no customer data, so there is nothing to export or delete. - Deleted data can remain in the volume backups until they expire (14 days).
Sharing
Data is only used to provide the service. It is not sold or shared with third parties, except the app's hosting provider (Fly.io, Amsterdam region, the Netherlands, EU) and Shopify.
Your rights
Merchants can request access, correction or deletion through tidewellapps@gmail.com or by uninstalling the app.