1 Introduction
Loyalty Program ("we", "our", "us") operates the Loyalty Program application for Shopify —
a points-based rewards program that lets your customers earn points for orders and redeem
them for discounts at checkout. This Privacy Policy explains how we collect, use, store,
and protect information when you install and use our app on your Shopify store.
2 Information We Collect
To run the loyalty program on your store we collect and store the following:
- Shop Information: Store name, domain, email, timezone, currency, and plan —
provided by Shopify during the OAuth process.
- Loyalty Program Configuration: Your earn rules (e.g. "Place an order"),
redeem rules (Amount discount, Percentage discount), point currency labels, point expiry
policy, and program on/off status.
- Branding Configuration: Appearance settings for the Rewards launcher,
Rewards panel, and Product page badge (colors, icons, sizes, positions).
- Customer Loyalty Records: For each enrolled customer we store their
Shopify customer ID, current points balance, lifetime earned points, exclusion status, and
a history of point transactions (earned from orders, deducted on refund/cancel, expired,
spent on rewards, or manually adjusted by you).
- Order Data: Order ID, order name, eligible subtotal, processed/cancelled
dates, and customer ID — received via Shopify webhooks (
orders/paid,
orders/fulfilled, orders/cancelled, refunds/create) —
used to award or withdraw points and recorded in the customer's point history.
- Generated Discount Codes: Codes we create on Shopify when a customer
redeems points; stored against that customer's history with expiry date and value.
We do not store customer payment information, browsing history, or
marketing preferences. Customer names, emails, and phone numbers are fetched on demand
from Shopify when you open a customer detail page in the admin — they are not persisted
on our servers.
3 How We Use Your Information
- To run the loyalty program: award points when customers place qualifying orders,
withdraw points on cancellations or refunds, and process redemptions into Shopify discount
codes.
- To enforce point expiry: a scheduled job runs every 5 minutes to deduct points whose
expiry date has passed, recording the deduction in the customer's history.
- To publish branding settings to your storefront via Shopify shop metafields, so the
Rewards launcher, panel, and product badge render with your chosen styling.
- To respond to storefront requests via Shopify's App Proxy (e.g. customers viewing their
balance, activity log, and available coupons through the Rewards panel).
- To let you adjust points, spend points on behalf of customers, or exclude customers
from the program from the admin Customers page.
- To improve our app, troubleshoot issues, and maintain operational logs.
4 Data Storage & Security
All data is stored using Google Firebase (Cloud Firestore and Firebase
Functions), hosted on Google Cloud Platform. Firebase provides enterprise-grade security
including:
- Data encryption in transit (TLS/SSL) and at rest.
- Firestore security rules restricting access to authorized backend functions only.
- Regular security audits and compliance with industry standards.
Your loyalty configuration is also published to Shopify shop metafields
(namespace ja_loyalty, key widget_config) so the theme app
extension can render the widget without an extra backend round-trip.
App Proxy requests from the storefront to our backend are signed by Shopify with
HMAC-SHA256; we verify the signature before serving any data.
5 Data Sharing
We do not sell, rent, or share your data with any third parties. Your
data is used only to operate the app. We rely on the following services:
- Shopify API: To authenticate your store, fetch customer / order
details, manage metafields, create discount codes for redemptions, and register webhooks.
- Google Firebase: For secure data storage, scheduled functions (point
expiry), and backend processing.
6 Shopify API Scopes
Our app requests the following Shopify permissions:
- read_themes: To check whether the loyalty theme app embed is enabled
on your storefront and surface the status on the Dashboard.
- read_files / write_files: To upload custom icons and images you choose
for the Rewards launcher, panel, and Product page badge.
- read_customers: To look up customer name / email / phone on demand when
you open a customer detail page.
- read_orders: To read order details delivered via the orders webhooks
so we can compute and award the correct number of points.
- write_discounts: To create Shopify discount codes when a customer
redeems points for a reward.
- read_content: Reserved for future metafield-driven features (e.g.
program announcements). Not currently used to read merchant content.
7 Webhooks We Subscribe To
Shopify pushes the following events to our backend so we can keep the program in sync:
app/uninstalled — clean up sessions and trigger data deletion.
orders/paid, orders/fulfilled — award points for the order
(depending on your earn rule's reward trigger).
orders/cancelled — reverse points awarded for the order.
refunds/create — proportionally deduct points based on the refunded amount.
customers/data_request, customers/redact,
shop/redact — Shopify-mandated GDPR compliance topics (see section 9).
8 Data Retention & Deletion
We retain your program configuration and customers' point history for as long as you have
the app installed. When you uninstall the app:
- Shopify sends an
app/uninstalled webhook to our backend.
- Your OAuth session data is removed immediately.
- Program configuration, branding settings, and customer loyalty records are permanently
deleted within 30 days of uninstallation.
You can request immediate data deletion by contacting us at the email listed below.
9 GDPR & Compliance
We comply with Shopify's mandatory privacy webhooks:
- customers/data_request: We respond to merchant requests for the data
we hold about a specific customer (their Shopify customer ID, points balance, and point
history). We do not store the customer's name, email, phone, or address.
- customers/redact: When a customer requests redaction, we delete the
associated customer loyalty record and all point-history entries for that customer.
- shop/redact: 48 hours after a shop uninstalls, Shopify sends this
webhook and we erase all remaining shop data (configuration, customer records, history,
generated discount codes references).
10 Your Rights
You have the right to:
- Access the data we hold about your store and customers (viewable in the app's Customers
and Customer detail pages).
- Export, correct, or delete customer loyalty records on request.
- Exclude any customer from the program at any time from the Customer detail page.
- Uninstall the app at any time to stop all data collection.
11 Contact Us
If you have questions or concerns about this Privacy Policy, please contact us:
- Email: janova048@gmail.com
- App: Loyalty Program