Discount Devil Coming soon

Coupons your customers collect.

Coming soon

Privacy policy

Last updated

Ioun Developers operates this website and the apps described on it.

Discount Devil is a Shopify app built and operated by Ioun Developers. It issues personal, single-use discount codes to the customers of the stores that install it. This policy explains what the app stores, why, who else sees it, and how long it lasts.

Merchants who install the app are our customers. Their shoppers are not: we handle a minimal amount of shopper data on the merchant’s behalf, as a processor, so a shopper with a question should start with the store they shop at.

The short version

The only thing Discount Devil keeps about a shopper is their Shopify customer id, the coupons and stamps issued against it, and, where a merchant uses invite lists, unique links or reward emails, one-way hashes of email addresses. No names, readable email addresses, phone numbers or addresses.

What we store

  • Customer references. The Shopify customer id, an opaque identifier such as gid://shopify/Customer/123. That is the only customer identifier the app keeps. When the merchant’s admin screens show a customer’s name, it is fetched live from Shopify and not retained.
  • Coupons. For each coupon issued: which store and customer it belongs to, the discount’s title and value, the code, and its lifecycle (issued, redeemed, expired, revoked), with timestamps.
  • Stamps. For stamp-card campaigns: which customer earned a stamp on which campaign, and when.
  • Email hashes. When a merchant restricts a claim link to an invite list, mints unique links for named recipients, or sends reward emails, the app keeps a one-way SHA-256 hash of each address, never the address itself. Hashes are used to check invite lists, to hold a unique link to its recipient, and to keep a suppression list of addresses that unsubscribed, bounced or complained, so they are never emailed again by that store.
  • Send records. For each email send: the campaign, subject line, sending domain and counts (sent, suppressed, failed). No recipient addresses.
  • Your shop domain and access token. The myshopify.com domain of your store and the access token Shopify issues at install, so the app can make API calls back to your store.
  • Your configuration and an audit log. Your settings (code prefix, expiry defaults, combination rules, reward wording, tagging, which other apps may issue coupons), your campaigns, and an append-only log of coupon actions. Audit entries contain error codes and identifiers only, never personal details.

That is the whole list.

What we do not store

Customer names, readable email addresses, phone numbers, postal addresses, order contents and payment details are never stored by this app. When a merchant sends reward emails, recipient addresses are read from Shopify (or from the list the merchant pastes) and passed to our email processor in-flight only; the app does not keep them. All payments, and all billing for the app itself, are handled by Shopify.

Why it is stored

Every item above exists to run the wallet you installed the app for: show a customer their own coupons, hold each code to one customer and one use, track stamp progress, and tell you what happened. None of it is sold, rented, or used for advertising or profiling, and none of it is used to train anything.

Sharing and processors

We do not sell, rent or share your data. The app is hosted on Railway (United States), which stores the records described above in its database on our behalf. Shopify is the source of customer and discount data, handles authentication, checkout and app billing, and is an independent controller of your store’s data under its own terms. The discount codes the app creates live in your own Shopify store.

Reward emails that a merchant chooses to send are delivered through Resend (United States), our email processor. Resend receives each recipient address and the message content in order to deliver it, and tells us about bounces and complaints. Emails go only to customers the merchant has marked as subscribed to email marketing in Shopify, or to addresses the merchant supplies for unique links. Every email carries an unsubscribe link; an unsubscribe is honored automatically and that store never emails the address again.

There are no other processors. The app calls no analytics or advertising services.

Retention

Data is kept for the life of the installation: a coupon that has to keep working needs the record behind it to keep existing. When you uninstall and Shopify sends the shop redaction request, the app deletes your store’s record and everything under it: coupons, stamps, campaigns, settings, audit log and sessions. Discount codes already created in your store are yours and remain there until you delete them.

GDPR requests

The app implements Shopify’s mandatory privacy webhooks.

  • A customer data request is answered from the coupons and stamps held against that customer id, so the merchant can pass the summary on.
  • A customer redaction request deletes that customer’s coupons and stamps entirely; the app records only that a redaction happened.
  • A shop redaction request deletes the shop’s records as described above.

Merchants can see and change everything the app holds for their store from inside the app. Shoppers should send access and erasure requests to the store they shop at; Shopify routes those requests to us automatically.

Security

The wallet page authenticates every request with a signed, short-lived Shopify customer session token, so a customer can only ever see their own coupons. Claim links take the customer’s identity from Shopify’s signed-in session, never from the link. Each code is restricted to one customer with a single use, so a leaked code cannot be redeemed by anyone else. Access to the production systems is limited to the operator of the app.

Contact

Questions about this policy, or about data the app holds: hello@ioun.dev.