Privacy policy
Last updated 18 October 2026.
Ovation Upsell is a Shopify app that offers one more product to a shopper who has already paid. It is built and run by Lucas Reygrobellet. This page says exactly what the app stores, what it does not store, where it is kept and for how long. If anything here is unclear, write to support@rgbl.dev.
What Ovation reads from your store
Four read-only permissions are always held. read_products, so a merchant can choose which products an offer triggers on and which it gives. read_metaobjects, which is required by the app’s Shopify configuration and which the app never reads from. read_orders, added on 28 August 2026. And read_all_orders, added on 17 October 2026, which lets the app read orders older than sixty days: without it Shopify answers for the last sixty days only. It reads no field the list below does not already name; it only reaches further back, and each item below says how far. Until your store approves it, which Shopify asks the next time you open the app, every item stays at sixty days.
Two optional permissions, held only if you turn them on. Since September 2026 a merchant can turn on Exact prices in other currencies, on the app’s Thank you and Order status settings page, which asks Shopify for unauthenticated_write_checkouts and unauthenticated_read_product_listings. With them, when a shopper who paid in another currency is shown a fixed-amount offer, Ovation asks Shopify to price a cart holding that one product with the offer’s discount code in the shopper’s country. That request carries the shopper’s country and IP address, which Shopify asks for to protect your store from bots, and no name, email, address or order. Ovation keeps the price for ten minutes, keeps neither the country nor the address, and never checks the cart out. Turning the setting off, there or in Shopify, takes both permissions back.
Why Ovation reads orders, and it is a short list. Eight things, each with the date it started, so that you can tell what the app was doing when. Apart from the order, payment and refund notifications Shopify sends it, it asks Shopify about an order only while you have a page of the app open that needs one or when you ask Shopify’s Sidekick a question that one of Ovation’s Sidekick tools answers. It asks about your orders rather than about the people who placed them, and it never builds a profile of anybody.
- Looking up one of your own orders by its number, since 29 August 2026. When you type an order number, a confirmation number or the web address of an order into the app’s Orders page, the app asks Shopify which order that is, then shows you whether Ovation offered anything on it and why. Shopify lets the app see orders placed in the last sixty days, and since 17 October 2026, once your store has approved
read_all_orders, any of your orders however old; when Shopify names an order that has a checkout of its own, the app writes down which order that checkout belonged to, so an order looked up once stays findable by its number afterwards. Since 2 September 2026 the same lookup also runs from the Ovation card you can add to an order’s own page in your Shopify admin, on the order you are looking at, and reads exactly the same fields. Since 18 September 2026 the same lookup also runs from the offer editor, when you check whether an offer would have shown on one of your past orders, and reads the same fields. From that same day the Orders page also opens on a list of your recent orders, fifty at a time, each beside what Ovation did on it, and one order’s page also shows the products on it, how many and at what price, its tags and whether it has been paid. Since 24 September 2026 that page also adds the order up the way Shopify does, from its subtotal through its discounts, shipping and taxes to its total. Nothing about the listed orders is written down, and the list reaches back sixty days at most. - Keeping your own test orders out of your own figures, since 29 August 2026. Each time you open the Analytics page, and since 25 September 2026 the Home page, the app asks Shopify which orders in the period you are looking at were test orders, and leaves the pages it answered on those orders out of the figures it reports. Since 25 September 2026 the Plans page asks the same for its figure of what Ovation added to your orders. Since 26 September 2026 so do the offers list, the offer editor’s figures and an offer’s status page, each over the period it shows, and an offer’s A/B test page, over the A/B test period. Since 26 September 2026 the Analytics page’s A/B tests tab asks about the A/B test period, and while one of your offers is running an A/B test, the Home page also asks about the A/B test period, whatever period you are looking at, because a test counts from the day it started, and since 18 October 2026 the offers list, while one of your offers is running an A/B test, also asks about the A/B test period. Since 25 September 2026, when you ask Shopify’s Sidekick about your offers, the Sidekick tools ask the same about the period they answer for, and since 26 September 2026 about the A/B test period when you ask how an A/B test is doing, even when no page of the app is open. The A/B test period is the last sixty days, and since 17 October 2026, once your store has approved
read_all_orders, it reaches back to the day your earliest running A/B test started when that is longer ago. Nothing about those test orders is written down. Until your store has approvedread_all_orders, Shopify answers about the last sixty days only, and a page where you pick the period says so when the period you picked reaches further back than that; since 17 October 2026, once it has, each of these reads covers its whole period, up to a thousand test orders each. - Working out what share of your store these figures are, since 1 September 2026. On the Analytics page, the app asks Shopify how many orders your store took over the period you are looking at, and what those orders came to in all, so that it can show you how much of your own trade Ovation had a hand in. It asks for a count first, and adds up order totals only when the period holds few enough orders to add up while you wait for the page. Nothing about those orders is written down. Until your store has approved
read_all_ordersthe same sixty days applies, and for a period reaching further back than that the app shows no share at all rather than one worked out from the days Shopify would answer for; since 17 October 2026, once it has, the share is shown for any period you pick. Since 18 September 2026 the Orders page asks for the same count, over the period you pick and the one before it, to show the trend on its first figure: only when both fit inside the sixty days until your store has approvedread_all_orders, and always once it has (since 17 October 2026). It opens no order and writes nothing down. - Showing which of your orders could reach the post-purchase page, since 18 September 2026. On the same Analytics page and from the same orders, the app sorts each one by the reasons Shopify lists for not showing a post-purchase page: the sales channel it came through, and whether it was paid with a wallet, in installments, with a gift card or by a manual method, whether duties were charged on it in another currency, and whether it came to less than Shopify’s minimum. It shows you the counts and nothing else. It reads the kind of payment only, never the card, and nothing about any of those orders is written down. Until your store has approved
read_all_ordersthe same sixty days applies, and since 17 October 2026, once it has, any period you pick. When there are more orders than the app can read while you wait, the page says how many it read rather than working the rest out. - Recommending a plan on the orders your store really took, since 2 September 2026. On the Plans page, the app asks Shopify how many orders your store took over the last thirty days, leaving out the ones you marked as tests, and points at the plan that fits that volume. On the free plan, when the free plan already fits it, the page points at the cheapest paid plan instead. It is the same count as the one above and it opens no order: nothing about any of them is read or written down. The number, and whether you are on the free plan, choose which plan is suggested to you and never which plans you may pick. If Shopify does not answer, the page says so on screen and works the suggestion out from the offers Ovation itself showed instead.
- Working out which of your products your shoppers buy together, since 2 September 2026. When you pick a product on the Offers screen and ask Ovation to suggest a pairing, the app reads a page of your own recent orders and counts how often each product was bought in the same order as the one you picked, so that those products can be suggested first. When that leaves the list short, it also counts which products appear in the most of those orders, to suggest your best sellers after the rest. Your test orders are left out, and so are orders where Ovation itself sold something, because those would be the app counting its own work. This suggestion writes nothing about those orders down and runs only when you ask for one; the counts the best pairing keeps are described further down this list. The same sixty days applies, and when your orders cannot be read, the screen says so and suggests products from your catalogue alone. Since 17 October 2026, once the counts the best pairing keeps cover at least those sixty days, the suggestion reads those counts instead, ranking pairs bought recently higher, and asks Shopify for no order.
- Taking refunds and cancellations off the figures Ovation shows you, since 2 September 2026. When one of your orders is refunded or cancelled, Shopify tells Ovation, and the app works out whether the product it had added to that order was part of what came back. What came back is recorded beside the figure rather than taken out of it, so you can still read both what Ovation added and what was given back. To tell which of your orders is which it reads the order number, the confirmation number and the checkout reference that ties it to the page Ovation answered, and it writes that reference down so the next refund on the same order costs no lookup at all. It never reads who placed the order. The lookup only runs when Ovation does not already hold that reference. Since 18 October 2026, when an order is cancelled Ovation also writes down that it was cancelled, and when, beside that reference, so the blocks on your Thank you and Order status pages offer nothing on a cancelled order. Since 18 October 2026, once a day Ovation also asks Shopify about the orders it sold into over the last sixty days, in case Shopify’s message about a refund or a cancellation never arrived: it reads whether and when each was cancelled, its checkout reference, your store’s currency, and its refunds with the product and amount of each refunded line. Until your store has approved
read_all_orders(asked since 17 October 2026) the same sixty days applies: on an order older than that, the figure stays as it was. Once it has, any order is read. - Counting what the button on your Thank you and Order status pages sold, since 24 September 2026. That button opens a new checkout with the offered product in it, and its link adds a note to the order it creates naming which of your offers it came from and, since 18 October 2026, the checkout reference of the order whose page the button was on, signed by Ovation so a note typed by hand is not believed. When any order is paid, Shopify tells Ovation, and for this count the app looks for that note. On an order that carries it, the app reads the order number, the checkout reference, whether it is paid and, for the offered product’s line only, how many and at what price after its discounts, then writes down the sale and that reference so a later refund of the order can be taken off it. Where the note’s signed reference checks out, it also writes down, under the earlier order’s checkout reference, which offer and which variant were bought, so that order’s Thank you and Order status pages do not offer it again. An order without the note is not counted as a sale of the button; what the best pairing reads from it is described next. From the paid-order notice it never reads who placed the order.
- Finding the best pairing for each order, since 10 October 2026. When any order is paid, Shopify tells Ovation, and the app counts which of your products were bought in it together: for each product, how many paid orders held it, and for each two products, how many paid orders held both, with the date of the last one. It reads the product on each of the first five lines and whether that line is a gift card (a gift card is left out of the counts, and noted as one so it is never offered), whether the order is paid, whether you marked it a test (tests are left out), the date it was placed, its checkout reference and its order id. Its checkout reference and order id are used only to leave out orders where Ovation itself sold something, and are not kept. The counts carry no order number, no checkout reference and nothing about who placed the order. The next time you open the app after this started, or save a best-pairing offer, it also counts, once, up to 180 of your most recent paid orders from the last sixty days that were placed before counting began, read the same way, so the counts do not start from nothing. Since 17 October 2026, once your store has approved
read_all_orders, that count covers your paid orders of the last year instead, read in one background request to Shopify, and a store whose sixty days were already counted has the rest of that year counted once, never an order twice. Since 17 October 2026 each count of two products also carries a weight worked out from the date each of those orders was placed, which halves for every ninety days of an order’s age, so that pairs bought recently rank higher. The counts choose the product a best-pairing offer shows, and the pairings Ovation suggests you start with. - Choosing the product to offer from what the same customer bought before, since 10 October 2026. When the post-purchase page reaches a best-pairing offer, or an A/B test in which either version sells the best pairing (on both versions’ pages, so the two are judged on the same orders), and the free plan has not put your offers on hold, the app may ask Shopify which products the same customer bought in their orders from the last sixty days, using the customer reference Shopify gives that page; since 17 October 2026, once your store has approved
read_all_orders, from the last year. Since 17 October 2026 it asks only as the page opens, when the page carries that reference. It reads the products on the first five lines of up to twenty of those orders, the most recent first, and since 17 October 2026 the date each was placed, and nothing else (a customer with more orders than that in the period has their older ones left out). It uses them at that moment to choose the products again, ranking first what goes with what the customer bought before when your settings use their earlier orders, to leave out a product the customer bought before and offer the next one, and, for an offer set to offer a product again when it is due, to offer it again only once the customer last bought it longer ago than your customers usually wait before buying it again. Of that, it keeps which of your products it left out, on the page’s own row, so the Thank you and Order status pages do not offer them either, and, when the products changed as the page opened, which products the page had been given before, so a page that did not wait for the change can still be paid for. Since 17 October 2026 it also adds, for each product of the order that the customer had bought before, how many days had passed since then to a count per product kept for your store, with no customer, order or checkout in it. It does not keep the customer reference, those orders, their dates or the list of their products. What it keeps, on the page’s own row described further down, is which of your products it chose and the signal that chose it, which can be that it came from the customer’s earlier orders. If Shopify does not answer within 400 milliseconds, nothing is changed, and a page that has waited a second for the answer shows the products it was first given, chosen without them.
What it reads off an order, and nothing else: the order number, the confirmation number, and the id in the address of its page in your admin; the date it was placed; whether you marked it a test order; the checkout reference that ties it to a post-purchase page this app answered; what the order came to before any upsell; what the order came to in all, tax and delivery included; its subtotal after discounts, its shipping and its taxes, and whether its prices include tax; the price of each shipping line before and after its discounts; any tip the shopper added; any additional fees Shopify charged on it; which of your products were on it, which variant, how many of each, at what price, whether each was bought on a subscription, and whether each was a gift card; the tags you gave it; whether it has been paid; the sales channel it came through; which payment providers it was paid through, and whether the payment was made with a wallet, in installments or by a manual method; your store’s currency and the currency it was paid in; whether duties were charged on it; and the note Ovation’s own button adds to an order placed through it. On the post-purchase page only, it also sends Shopify the customer reference that page carries, to ask for that customer’s earlier orders as described above, and keeps neither.
Ovation does not hold your customers’ names, addresses, email addresses or phone numbers, and it has not asked Shopify for them. Shopify grades these permissions, and those four fields are asked for separately from order data itself. Ovation asks for none of them, so Shopify removes them from everything it sends the app. Ovation has never read your customer list or any customer’s details.
What Ovation stores about your shop
- Your shop domain and an access token, so the app can read your products when you are not signed in. The token is issued by Shopify and is deleted when you uninstall.
- The offers you write, and a copy of the title, variant name, image, description and price of each product you put in one, whether each variant can still be bought, whether the product is sold on subscription only, whether the product is Active in Shopify or set to Draft or Archived, and the product’s published translations into your shoppers’ languages, so a shopper is not kept waiting while the app asks Shopify.
- One row for each post-purchase page the app answered: the page’s own reference, which offer was shown, how many products were on it, which of your products each card offered and at what discount, counter-offers included, the amount, whether it was accepted, which of your products was accepted when one was, whether the shopper declined it, whether its countdown was on screen, and the time. For a best-pairing offer it also keeps, on the page’s row and on its accept, which of your products it chose for the page and which signal chose it, including whether that came from the customer’s earlier orders, but never those orders, the list of their products or the customer reference. Since 17 October 2026 the same row also keeps which of your products the page left out as it opened because the customer had bought them before, so each of those says that the customer bought it before, and, when the products changed as the page opened, which products and terms the page had been given first. These are counts, your own product ids and the reason one was chosen, not people.
- One row each time the block on your Thank you or Order status page shows an offer, and one when its button is pressed. The first holds that page’s checkout reference, which offer it showed, how many products, and the time. The second holds the same reference, which offer, which of your products was pressed, its price, and the time. Counts and your own product ids, not people.
- A marker that each Ovation block or card has been added to your checkout, order or product pages, so the app can tell you which of them are in place. It carries no order and no person.
- One row for each paid order placed through the button on your Thank you or Order status page: that order’s checkout reference and number, which offer it came from, which of your products it sold and for how much, and the time; and, when the note named the earlier order the button was on, a second row under that earlier order’s checkout reference with the offer, the variant bought and the time, and no amount. The same kind of row, and not a person either.
- Your settings: colours, wording, and how offers are displayed.
- Which of your products are in which of your collections, worked out when you save an offer and kept current as Shopify reports changes to your products and collections, and each collection your offers use is read again once its copy is a day old, the next time you open the app or one of your products changes, so that the shopper-facing page needs no live lookup.
- Which of your products carry the tags and product types your offers are triggered by, worked out when you save an offer, kept current the same way as Shopify reports changes to your products, and for the same reason.
- The result of each A/B test you end: which offer it was, when it ran, which version you kept, and the counts for each version when it ended. Counts, not people.
- How often your products were bought together: for each of your products, how many of your paid orders held it, for each two of your products, how many held both, and the date of the last such order, and how many paid orders were counted in all, and since 17 October 2026 the weight that ranks recent pairs higher. Product ids and counts, with no order and no person in them.
- How long your customers usually wait before buying a product again, since 17 October 2026: for each of your products, how many repeat purchases were seen after how many days, counted as the post-purchase page opens from the earlier orders it reads. Product ids, numbers of days and counts, with no customer, order or checkout in them.
- A copy of your products: the title, handle, picture, the first 500 characters of the description, product type, vendor, whether it is Active, Draft or Archived, up to twenty variants with their price, whether each can be bought and whether it is sold on subscription only, the products your Search & Discovery settings list as complementary to it, and, where you have granted the optional product listings permission, the products Shopify recommends as related to it. Kept current as Shopify reports changes to your products, so a best-pairing offer can show any of them without a live lookup.
- The delivery reference of each paid-order notice Shopify sends, so a notice sent twice is counted once. It names the notice, not the order.
- Your plan, and any discount code applied to your subscription.
- The note you type when you answer Bad on the feedback card, written with your shop domain to the server’s logs. Those logs are deleted on a schedule, and a note is gone with them within about five weeks of your sending it.
What Ovation stores about your customers
Nothing that identifies a person. No name, no email address, no postal address, no customer identifier, no payment information, and no browsing history. Reading orders did not change this: what the app keeps out of an order is the order’s own identifiers, and the amounts and dates it reads off an order are read while you are looking at a screen rather than written down. The best pairing did not change it either: it counts products bought together with no order or person attached. The earlier orders of a customer it reads on the post-purchase page are used as the page opens and are not kept. The page’s row keeps which of your products was chosen and the signal that chose it, which can say it came from that customer’s earlier orders; which of your products it left out because that customer bought them before; and, when the products changed as the page opened, which ones the page had first. The usual wait before buying a product again is a number of days per product, with nobody in it.
It keeps two things about the order, so that you can look one up in the app by its number: the post-purchase page’s own reference, which Shopify generates, and, for orders placed from 28 August 2026, the order number and confirmation number that Shopify’s Thank you page shows to the shopper who placed it. Those are your own bookkeeping rather than your customer’s details, nothing is stored beside them, and they are deleted two years after the app first writes them down in any case, sooner if you ask.
Since 29 August 2026 the app writes down that same handful of identifiers when you look an order up yourself and Shopify names one, adding the id of that order’s own page in your admin. It is how an order the app never showed an offer on can still be found here by its number later, and it is the only thing an order lookup leaves behind. Asking Shopify which of your orders were tests writes nothing down at all.
Ovation sets no advertising or analytics cookies, loads no analytics or tracking code, and embeds nothing from a third party, neither in your admin nor on any page a shopper sees. The pages your shoppers meet show your products and nothing else. Signing in to the admin app uses Shopify’s own session tokens rather than a cookie of ours. The admin app sets one cookie of its own, ovation_locale, which holds only the language the admin is shown to you in and is kept for a year. It also keeps two markers in your browser’s own storage, your answer to the feedback card and that you were asked for a review, and those never leave your browser.
Where it is kept, and who else sees it
On a single virtual server in Strasbourg, France, rented from OVHcloud, reached only over HTTPS. Nothing is copied to a third party: there is no analytics provider, no advertising network, no data broker and no other sub-processor. Ovation itself is a customer of Shopify and of OVHcloud, and of nobody else in respect of your data.
How long it is kept
- Your offers, your settings and your plan are kept while the app is installed, for as long as you keep it. They are how you have set the app up, so the app forgetting them would be the app undoing your work.
- The record of a post-purchase page or of a block showing an offer, and the order reference beside it, are deleted two years after they are written. Two years is the shortest period that still answers the longest question this app lets you ask: the Analytics page accepts a range of up to one year and can compare it with the same year before, which reads back two years from today. A job inside the app deletes anything older every day, whether or not you ask and whether or not anybody ever looks at it.
- The counts of products bought together are kept while the app is installed, and a count whose last order was placed two years ago is deleted by the same daily job. So is the usual wait before buying a product again, deleted two years after its last repeat purchase was counted, and with its product. The copy of your products is kept while the app is installed and follows your catalogue: a product you delete leaves it. The delivery reference of a paid-order notice is deleted after seven days.
- When you uninstall, the access token is deleted straight away. Your offers are kept and turned off, so a reinstall finds them where you left them, ready to turn back on: an offer you had paused stays paused, and an A/B test still running is paused with its two versions. Your plan is set back to free: the subscription, its price and any discount code on it are cleared. Your plan keeps two facts about the shop: the date it first installed Ovation, which the free days are counted from, and whether it is a development store. Everything else on this page, your settings and the counted pages included, stays until the erasure below, so that a merchant who reinstalls finds their own history where they left it.
- Forty-eight hours after an uninstall, Shopify asks the app to erase the shop. Everything above is then deleted, the counted pages included.
You can ask for that erasure sooner, at any time, by writing to support@rgbl.dev.
On behalf of one customer, ask through Shopify rather than here. When a shopper asks a store to delete their data, Shopify passes the request on to every app the store has installed, naming the orders it covers. Ovation deletes the identifiers it holds for each of those orders, and takes the checkout reference off every record behind them, the post-purchase page’s and the Thank you and Order status blocks’ alike. What stays is a count of what a page did, with nothing left in it that points at anybody.
Your rights
Under the GDPR you may ask what is held about you, ask for a copy of it, ask for it to be corrected or erased, and object to it being processed. The address for all of those is support@rgbl.dev, and an answer will come within 30 days. If you are a shopper rather than a merchant, the store you bought from is the party to write to: it holds your details and this app holds none of them, and a deletion you ask the store for reaches this app too, which erases the identifiers of the orders it covers. Since 17 October 2026, once the store has approved read_all_orders, that includes an order the app never saw, whose checkout it asks Shopify for at that moment and keeps no record of.
The agreement behind this page
This page describes what the app does. The data processing agreement is the contract that holds it to it: it sets out that you are the controller and Ovation is your processor, what it may and may not do with your data, who its sub-processors are, how quickly it has to tell you about a breach, and what it deletes when you leave. It is required by Article 28 of the GDPR and you enter into it by installing the app. Where the two disagree, the agreement wins.
Changes to this policy
This page changes when the app changes what it stores, and the date at the top is what says so. There is no separate archive: the page and the code that decides what is kept ship together.