Privacy Policy

Last updated: July 2026

Who we are

UrCartBuddy is operated by Lee Alexander, United Kingdom (privacy@urcartbuddy.com), who is the data controller for personal data processed through this service.

What data we collect and why

Account data

When you sign in with Google or Facebook we receive your name, email address, and profile picture. If you register with an email address and password instead, we store your email address and a securely hashed password — your password is never stored in plain text. We store these to identify your account and personalise your experience. Your account creation date, current subscription tier, and interface preferences such as whether help tips are shown, which help tips you have dismissed, and whether you wish to receive WhatsApp or Telegram notifications when collaborators check off items you added, are also stored. We also record the date and time you last used the app on the web or messaged our WhatsApp or Telegram bot, so we can maintain the service and understand overall usage.

Shopping lists and items

We store the lists, items, tags, and categories you create. Each item records who added it, who checked it off, and when — so collaborators can see activity on shared lists. Items may also store an optional description — free-text notes, substitution preferences, or sizes — that you enter manually. Items created from image imports may also store package weight and QR/barcode metadata when detected, so richer item viewing and editing can be supported later. Lists may also store an optional source URL and title, such as the original recipe page used to create a recipe shopping list, and per-list field display preferences (which optional item fields such as Brand and Weight are visible on that list).

Item attachments

You can attach files (photos, PDFs, receipts, or any other format) to items from the web app, or by sending a document or photo to our WhatsApp or Telegram bot. Attached files are stored on Cloudflare R2 object storage and are viewable by every member of the list the item belongs to. Files are subject to a per-user storage quota and a per-file size limit. When an item is archived, its attachments are scheduled for permanent deletion after a short grace period; deleting an attachment from an item removes it immediately.

When the "AI attachment titles" feature is enabled for a list (enabled by default), the contents of newly uploaded attachments up to 15 MB are sent to Google Vertex AI (Gemini) solely to generate a short descriptive title. File contents are not retained by us beyond the AI request. You can disable this at any time per list under List Settings → AI → AI attachment titles.

Collaboration data

When you share a list, we store the membership relationship (your user ID, the list, your role, and when you joined) so that collaborators can access the shared list.

First-party product analytics

To understand whether the service is useful, we record the UTC days on which an authenticated account meaningfully uses the web app, WhatsApp bot, or Telegram bot, and a small fixed set of home-screen install prompt outcomes. These records contain an internal user ID, date/time, channel, and fixed event name only. They do not contain shopping-list or item content, messages, contact details, IP addresses, location, referrers, or browser user-agent strings. We use no third-party analytics or advertising identifiers. Administrators see aggregate adoption and retention results, not individual behavioural timelines.

When you invite someone, we store the invited email address or phone number, the inviting account and list, delivery method and status, attempt timestamps, expiry, and a masked form for display to the list owner. Invitation links are single-use and expire after seven days. We store a cryptographic hash for lookup and a protected copy solely so the background delivery service can include the link in the invitation message; raw invitation tokens are not logged. Email invitations may be sent to people who do not yet have an account.

When you share a list to a phone number that doesn't yet belong to a UrCartBuddy account, we create a placeholder record for that number so the list can be accessed via WhatsApp. If the owner of that number later signs in with Google and adds the same phone in their Profile, the number is treated as unverified — and stored with a verification timestamp of "none" — until they send an inbound message to our WhatsApp bot from that number. That inbound message proves ownership, at which point we link the placeholder's list memberships and history to their signed-in account and remove the placeholder. We record the date and time of phone verification on the account.

WhatsApp and Telegram integrations (optional)

If you choose to link your WhatsApp number, we store it to route incoming messages to your account. If you connect Telegram, we store your Telegram user ID, chat ID, optional username, and display name so private bot messages can be routed to your account. List invite and Telegram connection QR links use short-lived tokens, and Telegram list invite links may create a minimal account for the invited Telegram user. Message content is processed to manage your lists and is not stored beyond what is needed to fulfil your request. For larger WhatsApp or Telegram imports, we may temporarily store a draft import session containing the proposed item names, quantities, detected package weight or code metadata, target list, and tags so you can review them through a secure magic link before saving. Treat this review link as sensitive: anyone who opens it can edit and save the draft into your own lists. Do not forward it. We also temporarily store the latest pending chat confirmation for your phone number or Telegram user ID so replies such as "yes", "no", or "tag with freezer" apply to the correct recent import. After a WhatsApp or Telegram item action or import is confirmed, we keep a short list of the item names just added for around two hours so follow-up replies such as "tag with freezer" or "delete it" apply to the correct items. If you have a phone number or Telegram account linked, you may also receive an automated WhatsApp or Telegram message when a collaborator on a shared list checks off and archives items you originally added. This is controlled by a per-account preference in your Profile and is on by default.

Recipe import (optional)

If you ask UrCartBuddy to find a recipe and import its ingredients, your recipe request is used to search the web, fetch a recipe page, and extract ingredients. We store the resulting shopping items, any recipe tag applied to them, and the source recipe URL/title when attached to an import or list, but we do not store a separate copy of the full recipe page.

Push notifications (optional)

If you enable browser push notifications, we store your browser's push subscription endpoint and associated encryption keys in order to send you real-time list updates.

Archived items and service improvement

When items are archived, some may be flagged internally as candidates for improving our automatic item-sorting feature. No personal identifiers are used in this process — only the item name text.

AI usage metadata

When an AI feature is used, we store usage metadata linked to your account so we can measure service cost, monitor reliability, and prevent abuse. This includes the source feature, AI provider and model, specific AI interaction type, token counts, timing, success or error status, and related channel or list IDs where relevant. We do not store the prompt text, AI response text, recipe page text, images, or shopping item content in these usage records.

We also store a per-account monthly AI spend cap (an optional override and timestamps for when 90% and 98% warnings were shown each month) so we can enforce a per-user monthly limit and pause AI features when exceeded. See AI usage limits for details.

Subscription and billing

UrCartBuddy offers a free trial followed by a paid subscription. Current pricing is shown before you subscribe on the Billing page. When you subscribe, payment is processed by Stripe. We store your Stripe customer ID and subscription status so we can determine whether your subscription is active. We do not store your card number or full payment details; those are held exclusively by Stripe. If you were referred by a partner, we store the referral attribution so the partner can be credited appropriately. Subscription status and period dates are retained until you delete your account.

Contact form

If you use the contact form, your name, email address, and message are sent to us by email. This information is not stored in our database.

Server logs

Our servers produce standard application logs (errors, warnings, key events such as sign-ins and account deletions). Logs are retained for up to 30 days and are used solely for diagnosing technical issues.

Legal basis for processing (UK GDPR)

  • Contract performance — processing your account data, lists, items, and integrations is necessary to provide the service you signed up for.
  • Consent — optional features such as WhatsApp, Telegram, and browser push notifications are only activated when you explicitly choose to enable them.
  • Legitimate interests — server logging and security monitoring are necessary to maintain a safe and reliable service.

Who we share data with

We do not sell your data or share it for advertising purposes. Data is shared only with:

  • Stripe — for payment processing when you subscribe. We share your name, email address, and a unique customer identifier. Governed by Stripe's Privacy Policy.
  • Google — for sign-in authentication only. Governed by Google's Privacy Policy.
  • Meta (Facebook) — for sign-in authentication and WhatsApp messaging (if enabled). Governed by Meta's Privacy Policy.
  • Telegram — for Telegram bot messaging and Telegram list invite links (if enabled). Governed by Telegram's Privacy Policy.
  • Oracle Cloud Infrastructure — our hosting provider, where your data is stored on servers located in the United Kingdom or European Economic Area.
  • Cloudflare R2 — object storage for any files you attach to items. We do not scan or process the contents of these files; only the file itself, your user ID (in the storage key), and metadata such as filename, size, and content type are stored. Governed by Cloudflare's Privacy Policy.
  • Groq — for AI-assisted parsing of shopping items, recipe ingredient extraction, and item sorting helpers. Only the text or image content needed to fulfil the request is sent; no account identifiers are intentionally included. Governed by Groq's Privacy Policy.
  • Google Gemini (via Vertex AI) — used for the chat agent loop, AI-assisted item parsing, and attachment title generation (when enabled per list). Only the text, image, or file content needed to fulfil the request is sent; no account identifiers are intentionally included. Governed by Google's Privacy Policy.
  • Open Food Facts — when a product barcode is detected in an AI, WhatsApp, or Telegram image import, the barcode may be sent to Open Food Facts to look up a product name and package quantity. Governed by Open Food Facts' Privacy Policy.
  • SearXNG and third-party recipe websites — if you use recipe import, your recipe query is sent through our self-hosted SearXNG instance and the selected recipe page is fetched from the relevant website so ingredients can be extracted.
  • Collaborators you invite — users you share a list with can see the list contents and the names of other members.

Data retention

  • Your account and all your data are retained until you delete your account.
  • Items on shared lists are retained until the list owner deletes them.
  • Attachments are retained for the lifetime of the item they belong to. When an item is archived, its attachments are scheduled for permanent deletion after a short grace period. Deleting an attachment from an item removes it immediately.
  • Draft import review sessions expire automatically and are no longer usable after they are saved, cancelled, or expired.
  • Pending WhatsApp and Telegram confirmations are short-lived and are completed, cancelled, superseded, or expired automatically.
  • Recent WhatsApp and Telegram item context used for follow-up tagging or removal is only used for short-lived chat context and is cleaned up automatically.
  • AI usage metadata is retained with your account until account deletion unless we introduce a shorter operational retention period.
  • Fixed-name product events are retained for no more than 13 months and daily meaningful-activity records for no more than 25 months. Both are removed on account deletion.
  • Telegram connection tokens expire after a short time; Telegram list invite tokens expire automatically and are single-use.
  • Email and phone list-invitation links expire after seven days and are single-use. Invitation audit/status records remain with the list until it or the inviting account is deleted.
  • Push notification subscriptions are removed when you disable notifications or delete your account.
  • Server logs are retained for up to 30 days.

Your rights

Under UK GDPR you have the right to:

  • Access — request a copy of the data we hold about you.
  • Portability — download all your data in machine-readable format from your profile page.
  • Rectification — ask us to correct inaccurate data.
  • Erasure — delete your account and all associated data at any time from your profile page, or by emailing us.
  • Restriction — ask us to restrict processing of your data in certain circumstances.
  • Object — object to processing based on legitimate interests.

To exercise any of these rights, email privacy@urcartbuddy.com. We will respond within 30 days.

Complaints

If you are unhappy with how we handle your data, you have the right to lodge a complaint with the UK Information Commissioner's Office (ICO) at ico.org.uk. We would appreciate the chance to address your concern first — please contact us at privacy@urcartbuddy.com.

Cookies

UrCartBuddy does not use tracking or advertising cookies. We use browser localStorage solely to keep you signed in between sessions. No third-party cookies are set.

Children's privacy

UrCartBuddy is not intended for use by children under the age of 13. We do not knowingly collect personal data from children. If you believe we have inadvertently collected such data, please contact us at privacy@urcartbuddy.com and we will delete it promptly.

Changes to this policy

We may update this policy from time to time. Material changes will be notified via the app or by email. The date at the top of this page shows when it was last revised.

Contact

Data controller: Lee Alexander, United Kingdom.
Email: privacy@urcartbuddy.com

version 615c8cd
An unhandled error has occurred. Reload 🗙