What the app collects, how it respects your consent banner, and what gets deleted — stated plainly. This page describes the app's behavior; it is not legal advice.
The app respects your consent banner
The app reads each shopper's decision through Shopify's Customer Privacy API — the same system your cookie banner writes to. There is nothing to configure. When a shopper declines tracking, the app stops collecting that shopper's events at the source, in the browser.
Banners that save the shopper's choice to the Customer Privacy API work with no setup. This includes Shopify's own cookie banner, Pandectes, Consentmo, Enzuzo, and CookieYes. If you use a different banner, check that it saves choices to Shopify's Customer Privacy API. See Works automatically.
What changes without consent
The short version:
- Search, filters, and most recommendation widgets work fully. They read the store or the product on the page, not the shopper.
- Widgets built on personal history — Recently Viewed and Up Next — fall back to popularity.
- Smart Mix does not change: it never reads tracked history.
- Revenue attribution keeps working for direct widget purchases. Only the same-visit fallback level stops, so the dashboard undercounts; it never overcounts.
The per-widget table is in How recommendations work, under "Shopper privacy consent".
What the app collects
Data | What it contains | Consent-gated? |
|---|---|---|
Catalog | Your products and collections, from Shopify. | No — store data, not shopper data. |
Browsing events | Page views, product views, widget clicks, searches, and cart adds. Each event is tied to a random browser id, not to a name. | Yes. Declined consent = no events. |
Wishlist events | A signal that the shopper added or removed a product in your own wishlist app, if you connect one. Tied to the same random browser id. The app uses it for ranking only. It does not store the wishlist. | Yes. Declined consent = no events. |
Interest profile | A per-shopper score of the brands and categories they browse most, built from the browsing events above. It personalizes search results and recommendations for that shopper. | Yes — it is built only from the consent-gated browsing events. |
Popular searches | Store-wide counts of submitted searches, shown in the empty search box. A term needs searches from at least 3 different sessions, and terms that could identify a person (an @, a web address, 6+ digits in a row) are dropped. It is never linked to a customer. See Popular searches. | Yes — built only from the consent-gated search events. Deleted with your store data. |
Checkout events | Checkout started, payment info submitted, and the purchase — via the app's web pixel. | Yes — Shopify's pixel system applies the shopper's consent before the app sees the event. |
Orders | Your order history, from Shopify. Orders include customer details, so this is personal data — the app stores it scoped to your store and deletes it on request (below). | No — order sync is store data from Shopify, not browser tracking. |
What the app keeps in the shopper's browser
These are written whatever the shopper chose on your banner, because search and recommendations need them to work. They stay in the shopper's browser; the app never sends them as they are stored.
Key | Where | Holds |
|---|---|---|
| Local storage | A random browser id. |
| Session storage (this tab) | A random session id. |
| Local storage | Up to 20 recently viewed product ids, for 30 days. |
| Session storage (this tab) | Only a flag: this tab used a PersonalizerAI widget, so its session may mark the cart for your results. |
| Session storage (this tab) | Whether search results were last shown as a grid or a list. |
| Session storage (this tab) | Only a time, for about 10 seconds after one of your search redirects sends the shopper to another search, so two redirect rules cannot bounce the shopper back and forth. |
| Local storage | Text the shopper typed: their last 5 searches, for 30 days, shown back to them as recent searches. |
| Session storage (this tab) | Text the shopper typed: the one search they left for a product page, with its filters, so Back brings it back. Ignored after 30 minutes. |
| Session storage (this tab) | Only the value |
| Session storage (this tab) | Only when the shopper arrives from a PersonalizerAI email link: the product they landed on, which recommendation it was and when, for 30 minutes, so an add to cart of that product counts toward your email results. No shopper id. |
That note to your admin is about your theme, not the shopper: it carries your theme's name and id, the kind of page, whether the screen is phone-sized, and whether your search button selector matched. No shopper id, no address, no search text. It is sent at most once per visit, and only when the app cannot find your theme's search button (see Search widgets).
One more key is only ever in your browser: _pai_pv (session storage, this tab) holds the id of a Preview on my store preview you opened, for up to 30 minutes. While it is set, the page saves and sends nothing about the visitor, and none of the keys above is written except the two random ids and the grid or list choice.
If your consent policy treats remembered search text as needing consent, list _pai_rs and _pai_sr in your banner's functional category.
Model training
Every model the app trains for your store learns from your store's data only. Nothing is combined with other stores' data, and your data never trains a model another store uses.
- Your consent comes first. During setup the app asks you to agree to model training on your store's data. It records what you agreed to, when, and which account agreed. Setup cannot be finished without it.
- What it learns from: your catalog, your orders, and your storefront's browsing events. Browsing events from shoppers who declined analytics tracking on your store are never sent, so they never train anything. Orders still reach us through Shopify, as they do for every order.
- Withdrawing consent: there is no switch for this in the app. Contact support, or uninstall the app. When you uninstall, training stops, and your store's data is deleted when Shopify asks us to, about 48 hours later.
The web pixel
The app installs a Shopify web pixel to see the checkout steps, which storefront code cannot reach. The pixel runs inside Shopify's sandbox: no access to the page, no access to other scripts. Shopify applies each shopper's consent decision before the pixel receives any event.
GDPR requests — handled through Shopify
Shopify sends apps three mandatory privacy webhooks. The app handles each one:
Request | What the app does |
|---|---|
Customer data request | Compiles the data the app holds about that customer overnight and emails you (Customer data export ready). To get the file, open the app in your Shopify admin, go to Settings, and click View privacy requests. Click Get download link on the request, then download the file and send it to the customer. The download link expires in 5 minutes; click again for a new one. The export is deleted 30 days after it is created. If the customer's data was already erased, the request shows Erased. |
Customer redact | Deletes that customer's profile and behavior history from the app automatically — including their interest profile — and keeps an internal record of the deletion. |
Store redact | Deletes the store's data automatically — see the uninstall section below. |
You do not trigger these in the app. Shopify sends them when a customer or a store owner makes a privacy request.
Ask us to delete your data
To ask for your store's data to be deleted while the app is still installed, open Settings → Advanced in the PersonalizerAI dashboard. In Request data deletion, click Send deletion request.
This sends a request to our team, and we contact you by email. Nothing is deleted automatically, so your recommendations, search and analytics keep working until we agree the next step with you. If you click again on the same day, the app tells you that we already have your request.
Uninstall = deletion
When you uninstall the app:
- The app stops serving your storefront immediately.
- 48 hours later, Shopify sends the store-redact request. The app then deletes your database records, cached data, and search index right away.
- Within 24 hours, an automatic purge removes the event archive and any stored files.
- The app keeps an internal record of each deletion.
Related pages
- How recommendations work — the per-widget consent table.
- How we measure revenue — why attribution needs no personal data.
- Integrations — consent and the forwarded GA4 / Meta / Klaviyo events.
- Data sync settings — the data retention card.