MyGroceryPal privacy policy
Version 2026-10-14. Last updated 14 October 2026.
MyGroceryPal compares UK supermarket prices. This policy says what we collect, why we are allowed to collect it, who else sees it, how long we keep it, and how you change your mind.
Who we are
MyGroceryPal is the controller of the personal data described here. It is run independently in the United Kingdom.
Write to hello@mygrocerypal.co.uk about anything in this policy, including to exercise any of your rights. We have not appointed a data protection officer, because we are not required to.
This policy covers the MyGroceryPal app on iOS and Android, the website at mygrocerypal.co.uk, and the MyGroceryPal browser extension.
Your choices
Three things are optional, and two of them are off until you turn them on.
- Analytics is off by default in the app and on the website. Product improvement is one optional choice covering usage analytics and masked recordings of the app and website with Amplitude. Both help us improve MyGroceryPal. Recordings hide all text and everything you type, block loyalty card barcodes and the barcode scanner's camera view, and cover only some visits. Until you allow analytics, its client is never started: it writes nothing to your device and sends nothing to our analytics provider. The browser extension asks in its own popup, and sends nothing to our analytics provider until you allow it there: see The browser extension below.
- Crash reporting is on by default, under our legitimate interest in a working app. You can object at any time, and it stops.
On the website, Google also asks whether its ads may use cookies, and in the app it may ask the same about its ads. Those choices are Google's to record, not ours, and changing them changes nothing above: see Advertising on the website and Advertising in the app.
If you are signed in, our servers note each day you use MyGroceryPal, whatever your analytics choice. We keep the date against your account, with the platform (app, website or extension) and app version you last used, never what you did, and use them only to count how many people come back each week and on which platform. Nothing is read from or stored on your device for it. We keep each date for 13 months, and delete them all when you delete your account. It is under our legitimate interest in knowing whether MyGroceryPal is useful; to object, email us and we will stop.
To change any of them:
- On the website: choose in the privacy prompt, or open Profile › Privacy at any time. Ads have their own Change ad choices button there.
- In the app: choose in the privacy prompt, or open Profile › Privacy at any time.
- In the browser extension: choose in the privacy prompt in its popup, or open Privacy choices at the bottom of the popup at any time. The extension has its own device identifier, so its choices are its own: changing them does not change the app or the website, and changing those does not change the extension.
Turning something off is exactly as easy as turning it on, in the same place, and takes effect at once. Withdrawing consent does not make our earlier processing unlawful, but it stops the processing from then on.
Recordings now cover the app as well as the website, so we ask again anyone who chose about recordings before 15 September 2026. That answer covers analytics and recordings together.
We keep any earlier choice to allow analytics without recordings. We change it only when you use the Product improvement control or make a new choice in the prompt.
On the website and in the app, allowing or declining analytics and recordings in the prompt does not change your crash-reporting choice. You can turn crash reporting off separately in Privacy settings.
The extension's prompt answers both of its choices at once: Accept all allows product analytics and keeps crash reports on, and Reject all refuses analytics and turns crash reports off. Choose Manage to answer them separately.
We keep a record of each choice you make, so we can show what you agreed to and when. That record is in the table below.
What we process, and why
| Purpose | Lawful basis | What we collect | Who processes it | Where | How long |
|---|---|---|---|---|---|
| Running the service — showing prices, saving your basket, keeping you signed in | Contract, and legitimate interest for guests who have no account | Your device identifier; your saved products and baskets; loyalty card numbers you add; your store and region settings; your email address and account identifier if you sign in | MyGroceryPal; Auth0 for sign-in; Cloudflare in front of our servers | United Kingdom. Auth0 is hosted in the United States. | Until you delete your account. Guest data is held against the device identifier only. |
| Personalising deals | Legitimate interest in showing you relevant deals, and in checking that the order we show them in helps | If you are signed in, the products you view and share, and which deals and search results we showed you and in what order. Never your search text. | MyGroceryPal | United Kingdom | 90 days |
| Counting returning users | Legitimate interest in knowing whether MyGroceryPal is useful. You can object by email. | If you are signed in, the dates you used the app, website or extension, the platform and app version you last used, and whether you created your account in the app or website, the extension or ChatGPT. Recorded whatever your analytics choice. If you allow analytics, we also record which screen asked you to sign up. | MyGroceryPal | United Kingdom | 13 months, and deleted with your account. Where you created your account is kept until you delete it |
| Recording your privacy choices | Legal obligation — we must be able to show what you agreed to | The purpose, whether you allowed it, the policy and consent version, how and where you decided, the browser or app you used, and a truncated IP address | MyGroceryPal | United Kingdom | 24 months from the decision, even if you delete your account |
| Security and abuse prevention | Legitimate interest in keeping the service available | Request logs, daily rate-limit counters keyed on your account or your IP address, and short-lived sign-in codes | MyGroceryPal; Cloudflare | United Kingdom | Rate-limit counters 90 days. Sign-in codes 24 hours. |
| Crash reporting — diagnosing errors so the app keeps working | Legitimate interest. You can object, and it stops. | The error and where in the code it happened, your app version and platform, your device identifier, your analytics identifier if you allow analytics, and your account identifier if you are signed in. Not your IP address, and not your email address. | Sentry | Germany | Deleted automatically at the end of Sentry's retention period, currently 30 days |
| Analytics — understanding which features get used | Consent. Off until you allow it. | Which screens and features you use, searches you run, an analytics identifier created by Amplitude, and your account identifier if you are signed in. Not your IP address, advertising ID, mobile carrier or device manufacturer. | Amplitude | European Union | 12 months. On request, and when you delete your account, we send Amplitude an erasure request for everything it holds against your account identifier, and keep retrying it until it succeeds. That request only takes an account identifier, not a device identifier, so it cannot reach anything you sent before you first signed in: those events carry only an identifier Amplitude assigned before you had an account, and they are deleted after 12 months instead. |
| Session replay — a replay of your use of the app or your visit to the website, to find usability problems | Consent. Off until you allow Product improvement, which includes analytics and masked recordings of the app and website. | A recording of the screens and pages you saw and what you tapped, with all text and everything you type masked out, and loyalty card barcodes and the camera view blocked. Only some of those visits. | Amplitude | European Union | 30 days from when Amplitude receives the recording, or 90 days if we bookmark it to look into a problem. Erased by the same request as your analytics profile. |
| Notifications — price drops, restocks and reminders you asked for | Consent for marketing messages. Contract for messages about something you set up, such as a price alert. | Your push token, your notification settings, and a record of what we sent | MyGroceryPal; Expo for push delivery; Apple and Google for delivery to the handset | Expo is hosted in the United States | Until you turn notifications off, or delete your account |
| Email — email about your account, and separately email about deals and features | Contract for account email. Consent for marketing email, recorded per type. | Your email address, your per-type email settings, and delivery events such as bounces | MyGroceryPal; Amazon Web Services (SES) | London (AWS eu-west-2) |
Until you delete your account. A list of addresses that bounced or unsubscribed is kept indefinitely, so we do not email them again. |
| Feedback and product reports | Legitimate interest in fixing what you tell us is wrong | Your message, its type and the screen you sent it from, your app version and platform. If you are signed in, your account. If you gave one, a reply address. | MyGroceryPal. A copy is emailed to us so we can read and reply to it; that mailbox is a personal Google Gmail account. | United Kingdom. The emailed copy is held by Google, which may store it outside the UK. | Kept. If you delete your account the message stays but is detached from you. The emailed copy is a separate record in our own mailbox. |
| MyGroceryPal Pro — selling the optional subscription and giving you what it includes | Contract. Checking whether you can have the free trial before you buy: legitimate interests (telling you the offer that actually applies to you) | Your account identifier, which RevenueCat uses as your subscriber id; which plan you bought; your purchases, renewals and cancellations as the App Store, Google Play or our website checkout reports them; the email address you give at website checkout, for receipts; whether Pro is active and until when; and the store you bought it in. When you are signed in to the app and it shows you Pro or an ad, it sends your account identifier to RevenueCat to ask whether you can still have the free trial. We never see your card or payment details. | MyGroceryPal; RevenueCat. Apple or Google take an in-app payment under their own terms; Stripe takes a website payment for us, and we never see your card details. | RevenueCat and Stripe are hosted in the United States | Until you delete your account. When you do, we ask RevenueCat to delete its record of you too. Deleting your account cancels a subscription bought on the website, but not one bought in the App Store or Google Play: cancel that there. |
| Improving search | Legitimate interest | The search text and filters used, and how many results came back. Not linked to you, your account or your device. | MyGroceryPal | United Kingdom | 90 days |
We do not process special category data. We do not sell your data. We do not use it for advertising ourselves: ads on the website and in the app are served by Google, as Advertising on the website and Advertising in the app below explain. There is no automated decision-making that produces legal effects for you.
The device identifier
Your device has a random identifier, and it is not optional. Every request the app makes to our servers carries it. It is how our servers know that a request from someone who is not signed in comes from a real MyGroceryPal app, and which saved data belongs to it. The app cannot work without it, so it is not covered by the choices above.
It is a random value we generate on first launch. It is not your device's serial number, not an advertising ID, and not any identifier your phone gives to anyone else. On its own it tells us nothing about you.
Using that identifier for telemetry is a separate matter, and it does follow your choices. Tagging a crash report with it rides the crash reporting basis, which you can object to. Attaching it to an analytics profile happens only if you allow analytics. Turn analytics off and there is no analytics profile for it to be attached to. Object to crash reporting and no crash report is sent at all.
What we store on your device
This is everything MyGroceryPal writes to your device. On the website most of these are entries in your browser's local or session storage. Three are cookies instead: one from Auth0, always; two from Amplitude, only if you allow analytics. Cloudflare, which serves the site, may also set cookies of its own to tell people from bots. If the website shows ads, Google's ad code sets its own cookies: see Advertising on the website. Clearing site data removes all of them. In the app they are app storage, and uninstalling removes them. If the app shows an ad, Google's ad software keeps its own data and your ad choice in app storage too: see Advertising in the app.
Strictly necessary
These are needed for the service to work, so they are not covered by the choices above.
| Key | What it is for | How long it lives |
|---|---|---|
device_id | The device identifier described above | Until you clear site data or uninstall |
@mygrocerypal:consent:<subject> | A copy of your privacy choices, so the app can honour them before it has reached our server. <subject> is your account identifier, or guest if you are not signed in, so a choice you made on an account cannot carry over to the next guest who uses this device. | Until you clear site data or uninstall |
Auth0 sign-in entries. On the website, keys beginning @@auth0spajs@@ in local storage. In the app, credentials in the iOS Keychain or the Android Keystore. | Keeping you signed in. Written and named by Auth0's own SDK, not by us. | Until you sign out |
auth0.jq9nHgG8IGKC30uNRxOav7PEl1TRIOCs.is.authenticated (website, cookie) | Strictly necessary. Tells Auth0's SDK a session probably exists, so it can skip an extra check with Auth0 before it asks. Holds no token, just a marker. Written and named by Auth0's own SDK, not by us. | 1 day from when it was last set |
AMP_2001dd3b9d, AMP_MKTG_2001dd3b9d (website, cookies) | Amplitude's analytics device id, session id and opt-out state, and the referrer or campaign the page was opened with. Written only if you allow analytics, and deleted when you withdraw it. In the app the same values are app storage, not cookies. | Up to 365 days |
session.started.v2.<account id> | Marks that this sign-in has been registered, so it is not registered twice | Removed when you sign out or switch account |
authCallbackRecoveryAt (website) | Stops a failed sign-in redirect from looping | Written once, acted on for 5 minutes |
pendingOnboardingCompletion (website, session storage) | Carries an unfinished sign-up across the redirect back from Auth0 | Until the tab closes |
pendingSignUpSource | Written only if you allow analytics. Remembers which screen sent you to sign up, across that same redirect, so it can be saved with your new account | 1 hour |
@mygrocerypal:registeredPushToken | The push token already registered, so it is not registered again | Removed when you turn notifications off |
Your settings, and what the app remembers
None of these are sent anywhere. They exist so the app opens the way you left it.
| Key | What it is for | How long it lives |
|---|---|---|
@mygrocerypal:themePreference | Light or dark | Until cleared |
@mygrocerypal:hasCompletedOnboardingV2 | Whether you have been through onboarding | Until cleared |
@mygrocerypal:notificationStores | Which stores you want alerts for | Removed when you sign out |
lidl-region | Your selected Lidl region | Removed when you sign out |
@mygrocerypal:dealsFilters, @mygrocerypal:selectedStorePills, @mygrocerypal:dealsOnlyFilter, @mygrocerypal:freeFromOnlyFilter, @mygrocerypal:savedFilter, @mygrocerypal:savedStoreView, @mygrocerypal:uncheckedOnly | The filters you last chose | Until cleared |
@mygrocerypal:dealsSort, @mygrocerypal:lidlSort | The sort order you last chose | Until cleared |
@mygrocerypal:comparisonCollapsed | Whether the price comparison panel is collapsed | Until cleared |
@mygrocerypal:searchHistory | Your last 8 searches, offered back as suggestions. You can clear this in the app. | Until you clear it |
@mygrocerypal:brandAlertsSeenAt | When you last looked at brand alerts, so the badge is right | Until cleared |
@mygrocerypal:hasSeenSavedRenameSheet, @mygrocerypal:firstSaveNudgeShown, @mygrocerypal:savedEmailCaptureDismissedAt, @mygrocerypal:savedEmailCaptured, mygrocerypal:intent_modal_seen | Tips and prompts you have already seen or dismissed, so you are not asked twice | Until cleared |
@mygrocerypal:compareSavedCtaDismissedAt, @mygrocerypal:guestPriceDropAskDismissedAt, @mygrocerypal:keywordAlertsBannerDismissedAt, @mygrocerypal:marketingNudgeDismissedAt:<type>, @mygrocerypal:storeLinkInterceptSeenAt | When you dismissed a banner or prompt, so it is not shown again straight away | 7 to 90 days, then it can show again, depending which one. One of them, once dismissed, does not come back at all. |
@mygrocerypal:firstOpenDate, @mygrocerypal:lastReviewPromptDate, @mygrocerypal:favouriteCount, @mygrocerypal:triggerFired:listItemAdded, @mygrocerypal:triggerFired:nthFavourite, @mygrocerypal:reviewPromptMinorVersion | Decides whether and when to ask you to rate the app, so it is asked rarely | Until cleared. Two are reset when the app updates. |
@mygrocerypal:pendingDeepLink, @mygrocerypal:pendingNotificationUrl | Holds a link you tapped until the app has started enough to open it | Removed as soon as it is used |
mygrocerypal:pending_save | Holds something you tried to save before signing in, so it is not lost | 1 hour |
storeLinkInterceptArmed (website, session storage) | Remembers that you were about to visit a supermarket, so we can ask how it went when you come back | Until the tab closes |
@mygrocerypal:installReferrerConsumed (Android) | Marks the Play Store install referrer as read, so it is read once | Until cleared |
Written only if you allow analytics
In the app and on the website, if you allow analytics, Amplitude's SDK loads and writes entries of its own. On the website these are two cookies: AMP_2001dd3b9d, holding an analytics device id, a session id, and whether you have opted out; and AMP_MKTG_2001dd3b9d, holding the referrer and any campaign parameters the page was opened with. Both last up to 365 days, and withdrawing consent deletes both. In the app it is ordinary app storage, not a cookie — the SDK is told not to use cookies there — and its entries are named with an AMP prefix. Until you allow analytics, none of this runs, so none of it is written at all. Withdrawing consent stops it again. The extension does not load Amplitude's SDK at all, so it writes none of these entries; it sends its own events, and only if you allow analytics there. See below.
The browser extension
The extension stores four things of its own: local:device_id, its device identifier; local:consent, the privacy choices you made in it; local:auth_session, your sign-in tokens if you sign in; and session:auth_pkce, a short-lived value that secures the sign-in exchange and is discarded straight after. Removing the extension removes all four.
On a supermarket product page the extension reads that page's web address and sends it to our servers, to look up prices elsewhere. It does not read your browsing history, and it does nothing on any other site.
The extension asks before it reports anything about how it is used. The prompt appears in its popup, the first time you open it, and covers two things: Product analytics, which is feature usage events sent to Amplitude, and Crash reports, which is errors sent to Sentry. Product analytics is off until you allow it, so nothing reaches Amplitude before you answer, and nothing reaches it at all if you say no. Crash reports are on from the moment the prompt appears, under our legitimate interest in a working extension, and you can turn them off in the same place. The extension does not record sessions.
To change either choice later, open the popup and choose Privacy choices. These are the extension's own choices, kept against its own device identifier, and separate from the ones you make in the app or on the website.
MyGroceryPal in ChatGPT
You can add MyGroceryPal to ChatGPT as an app. When ChatGPT asks us something for you, it sends the product search text or product ids for that question, and OpenAI's pseudonymous identifier for your ChatGPT account. We use them to answer that one request. We do not keep the search text, we do not link the products to you, and we do not use any of it to build a profile. Product ids join the anonymous count of which products people look at. The identifier, or the IP address the request came from, goes into the daily rate-limit counter described below.
Comparing a basket or setting an alert needs your MyGroceryPal account. Connecting signs you in through Auth0, as the app does, and gives ChatGPT a token that can do only those two things. If you have no account, connecting creates one, and we record that it was created from ChatGPT. Alerts set from ChatGPT are ordinary MyGroceryPal alerts and reach you however your notification settings say. You can disconnect in ChatGPT's settings at any time, and delete your account in the app as usual.
What you type into ChatGPT is handled by OpenAI under its own privacy policy. We only see what ChatGPT sends us.
Who else processes your data
| Processor | What it does | What it receives | Where |
|---|---|---|---|
| Auth0 (Okta) | Sign-in and account credentials | Your email address, your login, and the profile you signed up with | United States |
| Cloudflare | Serves the website and protects our servers | Every request to the website, including your IP address, your browser and the page requested | Global network |
| Sentry | Crash and error reporting | Errors, app version and platform, your device identifier, your analytics identifier if you allow analytics, and your account identifier if signed in. Not your IP address, not your email address. | Germany |
| Amplitude | Product improvement: usage analytics and masked recordings of the app and website, if you allow them | Feature usage events and an analytics identifier. In the app, on the website and in the browser extension, only if you allow analytics. | European Union |
| Oracle Cloud | Hosts our servers: the database, the search index and the price data | Everything our servers hold | London |
| Amazon Web Services | Sending our email, and storing encrypted database backups | Your email address and the message; backups of everything our servers hold | London (eu-west-2) |
| Expo | Delivering push notifications | Your push token and the notification text | United States |
| Apple and Google | Delivering that notification to your handset | Your push token and the notification text | Global |
| RevenueCat | Running the MyGroceryPal Pro subscription, and its website checkout | Your account identifier, the email address you give at website checkout, and your subscription purchases and renewals | United States |
| Stripe | Taking payment for Pro bought on the website | Your card details, email address and billing country, entered in the checkout; we never see your card details | United States |
Everything else runs on our own servers, hosted by Oracle in London.
Sending data outside the UK
Auth0, Expo, RevenueCat and Stripe are hosted in the United States, and Cloudflare, Apple and Google run global networks. Auth0, Cloudflare, RevenueCat and Stripe transfers rely on the standard contractual clauses with the UK Addendum in each provider's data processing terms. Expo's rely on its certification under the UK Extension to the EU-US Data Privacy Framework. The emailed copy of your feedback sits in a personal Google Gmail mailbox, which Google may store outside the UK under its own consumer terms, not processor terms. Amplitude is on its European Union instance and Sentry is in Germany, so telemetry does not leave Europe. Ask us if you want more detail about any of these arrangements.
How long we keep things
- Your account and everything attached to it: until you delete your account, which you can do in the app.
- Your privacy choices: 24 months from each decision. This outlives your account on purpose, because we have to be able to show what you agreed to.
- Your product interaction history: 90 days.
- Search text and filters, which are not linked to you: 90 days.
- Rate-limit counters, which can hold an IP address or a ChatGPT identifier: 90 days.
- Sign-in codes: 24 hours.
- Unsubscribed and bounced email addresses: kept indefinitely, so we do not email them again.
- Feedback and product reports: kept, but detached from you when you delete your account.
Crash reports are answered by retention, not by deletion
We want to be straight about this one. Sentry gives us no way to delete one person's crash reports on request, so we are not going to promise one.
Instead: a crash report carries no name, no email address and no IP address. The only identifiers on it are your device identifier, your analytics identifier if you allow analytics, and, if you were signed in, your account identifier. Every report is deleted automatically at the end of Sentry's retention period, currently 30 days, whether you ask or not. If you object to crash reporting, nothing further is sent from that moment and what exists ages out.
Affiliate links
Some links out of MyGroceryPal earn us a commission. We label those, and it never changes the price you pay or the order we show prices in.
- Morrisons links go through the affiliate network FlexOffers, at
track.flexlinkspro.com, which records the click and forwards you to Morrisons. These links are marked as sponsored. - Amazon links go straight to
amazon.co.ukwith our Amazon Associates tagmygrocerypa04-21attached, so Amazon can attribute the visit. There is no third-party redirect. - Links to every other supermarket are ordinary links and earn us nothing.
Once you follow any of these links you are on that company's site, under its privacy policy rather than ours.
Advertising on the website
The website may show ads served by Google AdSense. The browser extension shows no ads; the app's are covered in Advertising in the app below.
- Third-party vendors, including Google, use cookies to serve ads based on your prior visits to this website or other websites.
- Google's use of advertising cookies enables it and its partners to serve ads to you based on your visit to this website and/or other sites on the Internet.
- You can opt out of personalised advertising in Google's Ads Settings, and opt out of some other vendors' use of cookies for personalised advertising at youronlinechoices.eu.
- How Google uses information from sites that show its ads: policies.google.com/technologies/partner-sites.
Google's ad code loads on the website's Deals feed, search results, aisle and brand pages and product pages, once you have answered our privacy prompt either way, and on Profile › Privacy when you choose Change ad choices. The first time, Google's consent message, certified under the IAB Transparency and Consent Framework, asks whether ads may use cookies and similar technologies. If you decline, Google shows only limited, non-personalised ads. To change your answer at any time, open Profile › Privacy and choose Change ad choices.
We and Google are joint controllers for the data Google's ad code collects on our pages. Google alone decides how that data is used afterwards, under its own privacy policy. We receive only aggregate reports of impressions and earnings, never anything that identifies you.
Advertising in the app
The app may show ads in the Deals feed, among search results, on aisle and brand pages and at the foot of product pages, served by Google AdMob.
Nothing is asked of Google until you have answered our own privacy prompt either way. Then, before the first ad, Google's consent message, certified under the IAB Transparency and Consent Framework, asks where the law requires it whether ads may use your data. Its answer decides whether an ad is requested at all; if you decline, Google shows only limited, non-personalised ads, or none. On iPhone and iPad, from version 2.3.10, if Google's consent message allows personalised ads, the app then asks Apple's permission to track you across other companies' apps. Only if you allow both may Google personalise ads using your device's advertising identifier; otherwise the app asks Google for non-personalised ads only. You can change the tracking answer at any time in your iPhone's Settings, under Privacy & Security › Tracking. Earlier versions of the app never ask and request non-personalised ads only. On Android, Google may read your phone's advertising ID where your choice allows it; you can reset or delete that ID in your phone's settings.
To serve, measure and protect ads, Google's ad software collects your IP address, information about your device and the app, an advertising identifier where allowed, and your ad choice. To change your answer at any time, open Profile › Privacy and choose Change ad choices; the option appears wherever Google's consent message applies to you.
We and Google are joint controllers for the data Google's ad software collects in the app. Google alone decides how that data is used afterwards, under its own privacy policy: policies.google.com/technologies/partner-sites. We receive only aggregate reports of impressions and earnings, never anything that identifies you.
Your rights
Under the UK GDPR you have the right to:
- Access the personal data we hold about you, and get a copy of it.
- Rectify it if it is wrong or incomplete.
- Erase it. You can delete your account yourself in the app, which removes it and everything attached to it.
- Restrict what we do with it while a dispute about it is settled.
- Object to anything we do under legitimate interest, including crash reporting.
- Portability — receive the data you gave us in a machine-readable form, or have us send it to someone else.
- Withdraw consent at any time, as easily as you gave it, using the controls described at the top of this policy.
There is no self-service data export yet. Email hello@mygrocerypal.co.uk and we will put your data together by hand and send it to you. We will answer within one calendar month of your request, as the law requires. If a request is unusually complex we may extend that by up to two further months, and we will tell you why inside the first month if we do. There is no charge.
To help us find your data, send your request from the email address on your account. If you have never signed in, give us the device identifier instead. We may ask you to confirm who you are before we release anything.
Complaints
If you are unhappy with how we have handled your personal data, tell us first at hello@mygrocerypal.co.uk, with "complaint" in the subject line. We will acknowledge it within 30 days and answer it properly as soon as we can. This is our complaints procedure under section 103 of the Data (Use and Access) Act 2025.
You can complain to the Information Commissioner's Office at any time, and you do not have to come to us first. The ICO is at ico.org.uk/make-a-complaint, or 0303 123 1113. You also have the right to a judicial remedy.
Children
MyGroceryPal is not aimed at children, and we do not knowingly collect data from anyone under 13. If you think a child has given us personal data, email us and we will delete it.
Changes to this policy
The version number at the top of this page changes whenever the policy changes materially. If a change affects something you consented to, we will ask you again about that specific thing rather than assume your old answer still stands. Minor corrections do not trigger a new request.