The ceiling
The permission list
Every scope Refik asks for is on Shopify’s own approval screen, and that screen is the whole of it. Adding one would put a fresh approval in front of every installed store, which is exactly why the list stays short.
Privacy
Refik reads your catalogue and answers your shoppers, so it touches your data and theirs. This is the measured account: what is read, what is stored, what it is for, where it goes and how long it stays. The last section is what is still open.
Provider
This is the company responsible for Refik and the one to write to about anything on this page. Which legal role it holds for each kind of data is a separate question, and it is on the open list at the bottom.
Responsibility
Two different answers, and keeping them apart is the only way the rest of this page stays honest.
That last one is not a deflection: we hold no contact route for a shopper, so a request sent to us directly could not be matched to anybody. The route that works is a page of its own.
It exists so that “nobody looked at your data” is a thing that can be checked rather than a thing we say.
That split is how the app is built, not a legal opinion about it. Which role each of us holds under a given law is one of the open questions at the bottom of this page, and it is on the list because a lawyer has not answered it yet.
From your store
Nothing here is collected by us; it is read through the permissions you approved, and the list of those permissions is the ceiling on all of it.
The ceiling
Every scope Refik asks for is on Shopify’s own approval screen, and that screen is the whole of it. Adding one would put a fresh approval in front of every installed store, which is exactly why the list stays short.
Orders
Order number and date, fulfillment status, expected and actual delivery, carrier name, tracking number and link, the carrier’s own event messages, and the product titles in the order. It opens for a shopper Shopify has proved, or for a guest who supplies an order number and the matching e-mail.
Measured absence
No query anywhere in the server asks Shopify for a shopper’s first name, last name, phone number or address. The only place those words appear in the codebase is two instructions telling the assistant not to ask for them.
One thing is written back rather than read: the preferences a shopper states about themselves, saved to a metafield on their own Shopify customer record with a timestamp. It lives in your store, not in our database, and no other customer field is ever written.
Collected directly
This is the half Shopify does not hand us. It is short, and the shortest item is the one people assume is the longest.
From a shopper
Their messages and the assistant’s replies, a saved routine they build, and a thumbs up or down on an answer. Plus an e-mail address if they give one — to look up a guest order, to be told when something is back in stock, or to be contacted by your team.
A shopper can of course type anything into a chat box, including an address. When they do, it is in the conversation because they wrote it there.
In their own browser
The storefront widget keeps a random identifier and the recent chat in the shopper’s own browser storage, so a guest’s saved routine survives a reload on that device. It contains no name and no contact detail.
This site — the one you are reading now — stores nothing at all, sets no cookie, and loads nothing from another domain. That is also why it never asked you to consent to anything.
For 60 seconds
One endpoint counts attempts per address, so a guest order lookup cannot be used to walk through sequential order numbers. The counter expires after 60 seconds and the address is never written anywhere else.
The bot check on our public demo sends a visitor’s address to Cloudflare for verification; the raw address is never written to our storage, and with that check unconfigured the free-form box is closed rather than left open.
Purpose
Each row on the left is a feature you can see working. The right-hand list is the part that matters more, because you cannot see the absence of a thing.
The training line is the one item on this page that is not a measurement of our code. It is read off two providers’ published terms, and it is on the open list at the bottom because those terms have to be read again on the day this becomes a policy.
Retention
Two regimes, and the honest thing is to say which is which rather than average them into one comfortable number.
That is a decision, not an oversight: it is how long they serve their purpose — recognizing a returning shopper, and letting you read back a conversation from last season. They go when you uninstall, or earlier if that shopper asks for deletion.
Every period above is a constant in the code with a cleanup job behind it, not a number chosen for a policy. Two things sit outside both columns. Our hosting provider keeps a recovery window, so deleted rows may stay restorable there for up to 30 days — that is the provider’s mechanism and not a copy we keep on purpose. And the preference metafield lives in your Shopify customer record rather than our database, so while Refik is installed it is yours; we delete it on a redaction request.
Sub-processors
Four companies process data on our behalf. The list, with what each one does and what leaves our system to reach it, is on the security page rather than copied here.
Named, with the data that reaches each one, on the security page. A test walks every origin the code talks to and fails if one of them is missing from the policy, so the list is a measurement rather than a promise.
That last point is the one people are surprised by, so it is written here rather than left implied. Your Klaviyo account is not on this list at all: a back-in-stock event goes to your account under your own agreement with them, and only if you configured one.
Rights
Depending on where a shopper lives they may have the right to see their data, correct it, have it deleted, take it elsewhere, or object to how it is used. Because their relationship is with your store, the request starts there.
The route
Shopify forwards privacy requests to installed apps through three mandatory webhooks, and Refik is subscribed to all three and acts on them within 30 days. What each one returns or removes is a page of its own.
The limit
A guest shopper is only a random identifier in their own browser. We hold no contact details for one, so an e-mail request cannot be matched to those records. They go when you uninstall, and there is no shorter route.
The deletion paths
The three paths, and the one we cannot close, are set out with what they touch on the security page. This page says how long things stay; that one says how they go.
The contact form
Everything above is about the app. The site has one form of its own, on the contact page, and this is all it does.
The e-mail stays in the Pirahas inbox as correspondence. No deletion period has been set for that inbox, so none is written here.
Open
This is the part a privacy policy usually leaves out, which is why a policy you cannot see the gaps in is worse than one you can. None of these carries a date.
The provider is named at the top of this page. Whether it also needs a representative in the EU or the UK, or a data protection officer, has not been decided, and none is named here.
Nothing on this page has been read by counsel. It is an accurate description of the code as far as we can measure; whether the description satisfies a given law is a separate question we have not put to anyone.
We treat you as the controller of your shoppers’ data and ourselves as the processor, and ourselves as responsible for our own staff log. That allocation is how the code is built, not a conclusion a lawyer reached.
Our hosting runs on a global network and we did not set a location preference for the database. Cloudflare placed it in eastern North America, and the server is configured to run in the US East region next to it. Neither is a region we have contracted for, so neither is a promise that it stays there.
Our own log lines are written by us and carry no shopper identifier we did not put there. Whether the platform’s request logs underneath contain an address or a browser string is not something we have verified, so it is not something we claim either way.
Processing may happen outside the country you or your shopper is in, including in the United States. Our sub-processors’ own agreements incorporate the standard contractual clauses; whether that is the right mechanism for your store is a legal question, not a code one.
Refik is not built for children and nothing in it is aimed at them. The wording a particular law wants in a particular market has not been settled, so there is no age sentence here pretending to be one.
The storefront widget’s browser storage is not wired to Shopify’s customer-privacy consent signal today. Whether it has to be depends on which law applies to your store, and that is being decided before code is written for it rather than after.
Every one of those is written down because it is the kind of gap that closes quietly and then gets forgotten. The legal hub tracks the four that apply to all three pages; the rest belong to this one.