Crux Privacy Policy
Last updated: 2026-10-25
This policy explains what data the Crux Shopify app ("Crux", "we", "us") collects when a merchant installs it, why, where it is processed, how long it is kept, and how it is deleted. Crux is operated by aze3ma. Contact: support@gocrux.me.
Crux analyzes a store's order history to find products that are often bought together, turns the best pairs into bundle offers with a discount, tests each offer against a holdout group of shoppers, and reports the incremental revenue.
1. Data we collect from your store
When you install Crux, it reads data from your store through the Shopify Admin API and webhooks, using the permissions you approve at install.
Orders
- Orders from the last 365 days are imported once at install. New orders arrive through the
orders/createwebhook. Cancellations and refunds update the stored order totals. - For each order we store: the Shopify order ID, the order total, the order date, and, when the order came from a Crux experiment, the experiment ID and the shopper's test group (offer or holdout).
- For each line item we store: the product, the variant ID, the quantity and the unit price.
- We do not request or store customer names, email addresses, phone numbers, postal addresses or Shopify customer IDs. The order import query does not ask for customer fields, and customer and address fields in the
orders/createwebhook are dropped before the order is queued for processing.
Products
- For each product we store: the Shopify product ID, title, vendor, price, status, image URL, and the cost per item of the first variant (from Shopify inventory data). Cost is used to estimate profit and to block offers whose discount would push the margin below a set floor.
Store and account data
- The shop domain and the ID of the automatic discount Crux creates in your store.
- A Shopify access token for your store, used to call the Admin API on your behalf. Crux uses offline access tokens, so it does not store personal details of your staff members.
- Your subscription plan is read from Shopify Billing when needed and is not stored by Crux.
Offers and experiments
- The product pairs Crux finds, their purchase statistics, the offers you approve or skip, the discount you set, and aggregate experiment results (visitor counts, revenue per group, confidence).
2. Data we collect from your storefront visitors
Crux installs a web pixel and a theme app block on your storefront to run its holdout tests.
Cookies
The Crux web pixel sets two first-party cookies on your storefront domain:
| Cookie | Contents | Purpose |
|---|---|---|
crux_visitor_id | A random identifier generated in the browser | Keeps a visitor in the same test group across visits |
crux_assignment | The experiment ID and the visitor's group (offer or holdout) | Decides whether the theme block shows the offer to this visitor |
The pixel sets both cookies without an explicit expiry, so their lifetime is determined by Shopify's web pixel sandbox and the visitor's browser.
The pixel is declared to Shopify's Customer Privacy API as an analytics pixel (not marketing, no sale of data). Shopify only runs it when the visitor's consent settings allow analytics.
Visitor data sent to Crux
- When a visitor views a product that is part of a running experiment, the pixel sends the shop domain, the experiment ID and the random visitor ID to Crux. Crux stores the visitor ID, the experiment ID and the assigned group.
- On page views and completed checkouts by assigned visitors, the pixel sends the shop domain, the event type and the experiment ID. Crux only increments aggregate counters for the experiment. The pixel also sends the checkout total, which Crux discards and does not store.
- When a visitor in the offer group adds the bundle to the cart, the theme block writes a
crux_assignmentcart attribute containing the experiment ID, the group and the visitor ID. Shopify copies cart attributes onto the order, which is how Crux attributes the order to the experiment.
The visitor ID is pseudonymous: it does not contain the visitor's name or contact details, but because it is attached to the order as a cart attribute, it can be linked to that order in your Shopify admin.
IP addresses
Requests from the pixel are rate limited by IP address. The IP is held in server memory for at most one minute and is not written to the database. Crux's own access log records only the request method, path and status. Our hosting provider may record request metadata, including IP addresses, in its own platform logs under its retention policy.
3. How we use data
We use the data above only to:
- find products that are bought together and estimate the profit of a bundle offer;
- show the offer to the offer group, hide it from the holdout group, and apply the discount at checkout;
- measure and report the incremental revenue of each offer, and pause offers that are not helping;
- keep stored order totals correct after cancellations and refunds;
- operate, secure and debug the app.
We do not sell data, use it for advertising, or share it with other merchants.
4. Where data is processed and who processes it
- Hosting and database: Crux runs on Render (render.com), in the Oregon (US West) region, with a Render-managed PostgreSQL database in the same region.
- Background jobs: queued jobs are stored in the same PostgreSQL database.
- OpenAI (openai.com): used to write short explanations of offer opportunities and draft storefront headings. Only aggregate store numbers (attach rate, order counts, estimated profit, discount, margin) and product titles are sent. No customer data is sent.
- Resend (resend.com): used to email the merchant when Crux pauses an offer. Resend receives the shop's contact email address and the email text, which names the two products in the offer.
- Shopify: Crux reads and writes data through Shopify's APIs. Shopify's own privacy policy applies to data held by Shopify.
The Render PostgreSQL database is encrypted at rest with AES-256, including backups. Traffic between Shopify, storefront browsers and Crux uses HTTPS (TLS).
5. Retention
- Orders, line items, products, offers and experiment results: kept while Crux is installed, so reports stay accurate. There is currently no fixed retention period for these records.
- Visitor test assignments: deleted 180 days after their experiment has ended.
- Background job records: order webhook jobs keep a reduced copy of the order (order ID, name, date, total, line items and cart attributes, with no customer or address fields). Job records, including failed jobs, are deleted 7 days after they finish, and queued jobs that never run expire after 14 days.
6. Deletion
- When you uninstall Crux: your store's access tokens are deleted immediately. Shopify then sends a
shop/redactrequest, normally 48 hours after uninstall. - On
shop/redact: Crux deletes all data stored for your store: orders, line items, products, opportunities, offers, experiments, visitor assignments, refund records, access tokens and the store record. - On
customers/redact: Crux deletes the orders and line items Shopify lists in the request. Visitor assignments and queued job records are not covered by this request. Visitor assignments are deleted 180 days after their experiment ends, and job records are deleted as described in section 5. - On
customers/data_request: Crux checks which of the requested orders it holds. Crux does not yet deliver that data to the merchant automatically. Contact us at the address above and we will provide it.
7. Your rights and your customers' rights
Merchants can ask us to access, correct or delete the data we hold about their store at any time by contacting support@gocrux.me. Customer privacy requests are handled through Shopify, which forwards them to Crux as described in section 6.
8. Changes
We will update this page when Crux's data handling changes and update the date at the top.
9. Contact
aze3ma, support@gocrux.me.