Skip to content

BOGOX Upsell BOGO & Free Gift privacy policy

Last updated: October 24, 2026

This policy explains what information the Shopify app BOGOX Upsell BOGO & Free Gift ("the app", "we", "us") collects, why we collect it, how long we keep it and how it is deleted. It applies to merchants who install the app, to their staff, and to the shoppers who visit stores that use it. The app is listed on the Shopify App Store at apps.shopify.com/bogox-freegifts.

1. Who we are and what the app does

The app is developed and operated by Bogox. Contact: [email protected].

The app lets merchants create quantity-break, BOGO, bundle, upsell and free-gift offers. The offers appear in the store through a Shopify theme app extension (an app embed and an app block). The discounts are applied in the cart and at checkout by a Shopify Function, which runs on Shopify's own infrastructure. The app is free and does not process any payment information.

For the merchant's own account data, we decide how that data is used, as this policy describes. For the data of a store's shoppers, we act on behalf of the merchant, because the merchant is the one who chooses to use the app in their store.

2. Information we collect

2.1 Merchant and store information (received from Shopify)

  • Store details: the store's myshopify.com domain, the store name, the store contact email set in Shopify, the Shopify plan name, whether it is a development store, the app installation ID, and the store's time zone, currency and money format. We receive these when the app is installed or reinstalled. When the store's settings change, Shopify sends the app a notification; the app updates only the time zone, currency and money format and does not keep the other details in it, such as the store address or the owner's contact details.

  • Access credentials: the access and refresh tokens Shopify gives the app when it is installed and when they are renewed, with their permissions and expiry dates. We also keep a Storefront API token that the app creates so the widget can read product information.

  • Your app configuration: the offers you create (names, texts, tiers, discount values, schedules, design and brand colors) and the products, variants, collections and tags you select for them. We also keep the codes and IDs of the discounts the app creates in your Shopify admin, and whether you have started or finished the in-app theme setup guide. The app publishes this configuration to your store's app data in Shopify so the widget and the discount can read it.

  • Technical records: a history of background tasks (for example, the processing of each Shopify notification) and application logs with errors and diagnostic messages. These can contain your store domain, order IDs, internal IDs and the content of requests to Shopify that failed. The hosting servers may also keep standard request logs (for example IP address, date and time, and the address requested) for security and troubleshooting.

Most of the product, collection and market data shown in the app's editor is read directly from Shopify in your browser. When the app's server needs catalog or theme data (for example to save an offer, scan your theme's colors or match an order to an offer), it reads it from Shopify and keeps only what your offers need, such as product, variant and collection IDs. Images you upload in the app, such as swatch images, go directly to your store's Shopify Files and are not stored on our servers.

2.2 Store staff

Staff open the app inside the Shopify admin, which signs them in with Shopify session tokens. The app stores only a store-level ("offline") access token. It does not store the names or email addresses of the staff who use it. While the app is open, its own website uses only strictly necessary cookies: a session cookie and a security token that protects against forged requests. If Shopify's installation has to fall back to the standard sign-in flow, a short-lived sign-in security cookie is also set. The app's pages keep a few interface preferences in your browser's local and session storage, such as the panel language, whether you hid the setup guide and your theme's font names. These stay in your browser.

To preview offers in your theme's font, the editor may load that font from Google Fonts (fonts.googleapis.com). When it does, your browser connects to Google, which receives your IP address and browser information under Google's own privacy policy.

2.3 Shoppers (the store's customers)

Order information. To measure how your offers perform, the app receives Shopify order notifications (webhooks) when the store's orders change or are deleted, for example when an order is paid, edited or cancelled. From each order it keeps only:

  • the Shopify order ID, when the order was counted, the time of its latest update and its processing status (for example counted, cancelled or deleted);

  • the currency, the order revenue and, for each offer and tier the order qualified for, its ID, whether the order included it and the revenue credited to it;

  • the IDs of the products that made the order eligible for an offer, and a technical fingerprint of the order lines that is used to detect changes.

The app does not store shoppers' names, email addresses, phone numbers, postal addresses, payment details or IP addresses. Each order notification waits in the app's processing queue only until it is processed and is then deleted. If processing fails at the server level, the notification can remain in the app's error records (see section 7).

Earlier versions of the app kept a full copy of each order, which could include the buyer's name, contact details and addresses, and a copy of the store's product catalog. This version no longer creates these copies and deletes any that remain, as described in section 7.

Offer views (only when analytics are allowed). On product pages, the widget does the following only if Shopify's Customer Privacy API reports that analytics are allowed for that shopper. That depends on the shopper's choice in the store's cookie or privacy banner and on the privacy settings the merchant has set in Shopify for the shopper's region:

  • It creates a random browser identifier and saves it in the shopper's browser (localStorage key "bogox_analytics"), together with the time each offer was last counted, for up to 50 offers.

  • When at least half of an offer is visible (in browsers that cannot measure this, when the offer is shown), it sends that identifier and the offer IDs to the app through the store's own address (/apps/bogox/views). It sends each offer at most once every 4 hours.

Shopify forwards these requests to our server and adds the store domain and, if the shopper is logged in, their customer account ID. On our server, the identifier is immediately turned into a one-way keyed hash. The hash also depends on the store, so hashes from different stores cannot be matched with each other. The identifier itself is never stored. The app does not store the shopper's IP address, page URL, browser user agent or customer account ID from these requests, although the server's standard request logs (section 2.1) may record the request. An automatic daily cleanup deletes the hashed entries once they are more than 72 hours old, and only daily visitor counts per offer and per store remain. When analytics are not allowed, no identifier is created or read and nothing is sent. The theme editor, admin previews and obvious bots are left out. If analytics permission is withdrawn later, nothing more is sent, but the existing "bogox_analytics" entry stays in the browser until it is cleared.

Other data kept in the shopper's browser and cart. To work, the widget also:

  • keeps the discount codes already applied to the shopper's cart in localStorage ("bogox-discount-codes-v2"), so they are not lost when the widget updates the cart's discounts;

  • may set a cookie named "zm-offer-id-" followed by an offer ID, valid for 1 day, when the shopper closes an upsell, so the upsell is not shown again;

  • reads the store's cart currency cookies without changing them;

  • receives from the page, in the shopper's own browser, the logged-in customer's tags, whether they buy for a B2B company, their country and their market, which it can use to decide which offers and prices to show;

  • adds hidden properties (the offer ID, the offer type and the chosen tier) to the cart lines it adds, so the right discount is applied. Shopify keeps them with the cart and the order.

This information stays in the shopper's browser and in the store's Shopify cart and orders. It is not sent to our servers. The checkout discount (Shopify Function) runs on Shopify and reads only the cart lines with the properties above, the delivery options and their prices (for free-shipping rewards), the market, the currency conversion rate and whether the buyer is purchasing for a B2B company.

2.4 Shopify permissions the app requests

The app asks Shopify for these permissions:

  • read orders, to receive order notifications for offer statistics;

  • read and write discounts, to create your offer discounts and keep them in sync;

  • read products, themes, locales and markets, to build and show offers that match your catalog, theme, languages and markets;

  • write files, to upload the images you choose;

  • unauthenticated read access to product listings, inventory, tags, selling plans and content, so the widget can show product information, availability and subscription options.

3. How we use the information

  • To install the app and keep it working in your store: authenticating requests, saving your offers and publishing them to your theme and to Shopify.

  • To create the discounts that apply your offers, and to keep them in sync when they are created, changed or deleted in your Shopify admin.

  • To show offers to shoppers in the right currency, time zone, language and market.

  • To calculate offer statistics for your store (views, eligible orders, orders with an offer, revenue). Statistics may be recorded even when the statistics screens are not visible in the app.

  • To keep the service secure, find errors and give you support.

  • To verify requests you send us and, when needed, to contact you at the store's contact email about support or important changes to this policy.

We do not sell personal information and we do not use it for advertising or profiling. The app itself does not send emails to merchants or shoppers.

4. Legal basis and consent

We process merchant and store information because it is needed to provide the app you installed, and because of our legitimate interest in keeping the service secure and working. Shopper information is processed on the merchant's behalf. The merchant is responsible for informing shoppers in the store's own privacy policy, for setting up the store's cookie or privacy banner, and for collecting any consent their law requires. The offer-view counting in section 2.3 starts only after Shopify's Customer Privacy API reports that analytics are allowed for that shopper.

5. Sharing and service providers

  • Shopify: the app runs inside Shopify and exchanges data with it through Shopify's APIs, webhooks, theme app extension and Functions. Shopify's privacy policy applies to the data Shopify holds.

  • Hosting: the app's servers and database are run by our hosting provider, which processes this information only to host the app for us.

  • Google Fonts: only in the app's editor, to preview your theme's font, as described in section 2.2. The widget that shoppers see does not use it.

The app does not use third-party analytics, advertising, chat, email or error-tracking services. We do not share your information with anyone else unless the law requires it.

6. Storage and security

Information is stored in the app's database on our hosting provider's servers, which may be located in a country other than yours. Connections to the app use HTTPS. Requests from the app's admin pages are authenticated with Shopify session tokens. Shopify notifications and storefront requests are processed only when they carry a valid Shopify signature. Shopper browser identifiers are stored only as keyed hashes. No system is completely secure, and we aim to keep only the information the app needs.

7. Retention and deletion

  • While the app is installed: store details and offers are kept so the app can work. An offer is deleted when you delete it in the app; the orders it was counted in stay in your store's statistics. If you delete an offer's discount in your Shopify admin, the offer is turned off and its settings are kept so you can reconnect or remove it in the app. Hashed visitor entries are deleted once they are more than 72 hours old. Order statistics are kept while the app is installed. The task history is kept until you uninstall the app. Application logs and the records of failed processing are kept for as long as they are needed to troubleshoot and secure the app. You can ask us to delete the entries about your store at any time.

  • When you uninstall the app: Shopify revokes the app's access. The app then deletes its stored Shopify sessions (access and refresh tokens), its records of webhook subscriptions and its task history. It also turns off your offers and deletes any remaining copies from earlier versions (orders, product catalog and data of removed features). Order statistics are kept for 48 hours so they are not lost if you reinstall.

  • 48 hours after uninstalling (Shopify's shop/redact request): if the app has not been reinstalled, it deletes all of the store's statistics (order records, daily counts and visitor entries) and any remaining copies from earlier versions.

  • What is kept after that: the store record, your offer configuration and your store settings (time zone, currency and money format) are kept so your offers can be restored if you reinstall the app. The store record holds the domain, name, contact email, plan, app installation ID and copies of access tokens that Shopify revoked at uninstall. Application logs are kept as described above. You can ask us to delete all of this at any time by writing to [email protected].

  • Shopper erasure requests (customers/redact): the app does not keep shopper profiles, contact details or addresses. When Shopify sends an erasure request, the app deletes any remaining copies of the listed orders from earlier versions. Order-level statistics (order ID, amounts and product IDs, with no name, email or address) are not deleted by this request: they are kept while the app is installed and deleted with the store's statistics as described above, or sooner if the merchant asks us.

  • Shopper data requests (customers/data_request): the app receives these requests from Shopify. Because it keeps no shopper profiles, the only related data can be the order-level statistics described in section 2.3. The merchant can request it at [email protected].

  • In the shopper's browser: the items described in section 2.3 stay in the browser until they expire or the shopper clears the browser's storage. The "bogox_analytics" entry has no expiry date of its own.

8. Your rights

Depending on where you live, you may have the right to access, correct or delete your personal information, or to receive a copy of it. You may also have the right to object to or limit certain uses, and to withdraw consent at any time.

Merchants can use these rights by writing to [email protected], ideally from the store's contact email so we can verify the request. Shoppers should first contact the store where they shopped, because the merchant controls their information; we will help the merchant respond. Shoppers can withdraw analytics permission at any time in the store's privacy settings, where the store offers them, and can clear the app's data from their browser. You may also have the right to complain to your local data protection authority.

9. Contact

10. Changes to this policy

We may update this policy when the app, the information it uses or the law changes. The new version will be published on this page with a new "Last updated" date. If a change significantly affects how we handle your information, we will make reasonable efforts to let merchants know, for example in the app or by email.

Pick where to start

Install the app you need from the Shopify App Store and try it in your store.