RestockRadar Privacy Policy

Last updated: 2026-04-29

RestockRadar is a Shopify app that predicts stockouts before they happen. This document describes what merchant data we receive, where it is stored, how long we keep it, and how merchants can request deletion.

What we collect

When a merchant installs RestockRadar, our backend reads the following through Shopify's Admin GraphQL API:

DataWhy we read it
Product catalog (products + variants)Build the per-variant dashboard rows
Inventory levels (available qty)Compute Days-Until-Stockout
Order line items (last 30 days)Calculate average daily demand and demand variance
Shop name + email (from session)Send the merchant their alert digests

We do not read or store:

Order line items are aggregated to per-variant per-day quantity counts on ingest. The customer-identifying fields on each order are dropped before anything is persisted.

Where we store it

All systems are accessed over TLS. Secrets are kept in Fly.io secrets and Firebase Functions config — never in source control.

How long we keep it

Data classRetention
Product / inventoryWhile the app is installed. Refreshed every 6h by the recalc cron.
Daily sales bucketsWhile the app is installed. Older than 90 days are pruned by the recalc.
Webhook event log30 days, then auto-deleted by Firestore TTL.
Session tokensWhile the app is installed. Removed by Shopify on uninstall.
Sentry errors30 days (Sentry default for the free tier).
Resend logs7 days (Resend default).

When a merchant uninstalls, the app/uninstalled webhook flips the store's state to inactive. 48 hours later Shopify fires shop/redact, and our handler deletes every Firestore document associated with the shop — products, daily sales, webhook events, inventory-item mapping, and the store settings root document.

Compliance webhooks

Per Shopify App Store requirements we implement all three GDPR webhooks:

TopicBehavior
customers/data_requestReturns 200 with a confirmation that we hold no customer-level PII.
customers/redactNo-op — we hold nothing to redact. Returns 200.
shop/redactDeletes the shop's entire document tree in Firestore. Returns 200.

How a merchant can request deletion

The fastest path is to uninstall the app from the Shopify admin. That triggers the shop/redact flow above and we are required to comply within 48 hours of the redact webhook firing.

For ad-hoc requests, email projects2024.omkar@gmail.com with the shop domain (e.g. your-store.myshopify.com). We will manually purge the data and confirm via reply within 7 business days.

Sub-processors

VendorRoleRegion
Google Cloud (Firebase)Firestore + Cloud Functionsus-central1
NeonPostgres for session storageus-east-2
Fly.ioRemix application hostingiad
ResendTransactional emailus-east-1
SentryError trackingus

Changes to this policy

Material changes are announced 14 days before they take effect via the in-app banner. The "Last updated" date at the top of this document reflects the most recent change.

Contact

Questions, deletion requests, or anything else: projects2024.omkar@gmail.com.