Privacy policy
Bundles Monk is a Shopify app built and operated by Ioun Developers. It applies bundle and complete-set discounts to the carts 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 buyers are not: the app holds nothing about them at all, as set out below.
The short version
Bundles Monk does not collect, store or process the personal data of your customers. What we keep is what the app needs in order to talk to your store and to know which plan it is on.
What we store
- Your shop domain and access token. The
myshopify.comdomain of your store and the access token Shopify issues when you install the app, together with the refresh token and expiry that keep it valid. These exist so the app can make API calls back to your store. The token is an offline access token, which belongs to the installation rather than to a member of your staff. - A small record about your shop. Your shop’s Shopify identifier, the last plan we were able to read for it, which source that reading came from, and when. This exists so that a failed plan read cannot silently drop a paying store to the free allowances and switch its promotions off.
- Server logs. Request timestamps, shop domains and error messages, kept for operational troubleshooting. They contain no customer identifiers.
That is the whole list.
What we do not store
Your bundle and complete-set configuration is not stored by us. It is written into your own Shopify store: metafields on your products, app-owned records for your complete sets, and a compiled copy of those sets in a shop-level metafield that the discount function reads. It stays in your store, under your control.
Customer names, email addresses, phone numbers, shipping and billing addresses, order contents and
payment details are never collected by this app. We do not request the read_customers or
read_orders access scopes, so Shopify does not send us that data in the first place.
The scopes the app requests are read_discounts, write_discounts, read_products,
write_products, read_themes, read_metaobjects and write_metaobjects. The theme scope is
read only, and is used for one thing: checking whether the app’s block is present on your
published theme’s product template.
The discount function
The pricing logic runs as a Shopify Function, executing on Shopify’s own infrastructure at checkout. It receives cart contents transiently in order to calculate a discount, and returns the result to Shopify. That data is never transmitted to us, and nothing from it is retained anywhere.
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 on our behalf. To find out which plan your store is on, we ask Shopify, using Shopify’s own APIs.
Beyond Railway and Shopify itself, no third party receives data from this app. There is no analytics, tracking or advertising code in the app or in the storefront blocks it provides. The only script the app loads from outside its own server is Shopify’s App Bridge, from Shopify’s CDN, which every embedded Shopify app loads.
Privacy requests
The app subscribes to Shopify’s three mandatory privacy webhooks and answers each of them:
customers/data_request: we hold no data about your customers, so there is nothing to export.customers/redact: we hold no data about your customers, so there is nothing to erase.shop/redact: we delete the session records and the shop record for your store. Uninstalling already deletes the session records immediately; this webhook clears anything left behind.
Retention
Session records are deleted as soon as the app is uninstalled, and again on shop/redact if any
remain. The shop record, which holds your shop domain and Shopify identifier, is deleted on
shop/redact. Metafields and records written into your store belong to you and are yours to keep
or remove.
Security
All traffic to and from the app is over HTTPS. Incoming webhooks are verified against Shopify’s signature and rejected when it does not match. Access tokens are stored server side and are never exposed to the browser.
Changes
If this policy changes we will update the date at the top of this page.
Contact
Questions about this policy go to hello@ioun.dev.