Last updated October 24, 2026

Privacy Policy

This policy explains what Gathering Fox processes when you use the shopping list site. You do not need an account to use it.

Information stored in your browser

Your named lists, items, quantities, store or category labels, checked states, and notes are saved in this browser’s local storage under gathering-fox:shopping-lists:v2. A legacy gathering-fox:shopping-list:v1 key may be read once during migration. Lists created in the app expire 30 days after their last edit; expired lists are removed from the app when it checks stored data. The initial empty Grocery Run list has no expiry timestamp until it is edited. Clearing the browser’s site data also removes locally saved lists.

The app stores theme, country, language, and installation-prompt dismissal values under gathering-fox:theme:v1, gathering-fox:country:v1, gathering-fox:language:v1, and gathering-fox:install-prompt-dismissed:v1 in local storage. Store/category choices use gathering-fox:shopping-categories:v1:<country> and gathering-fox:recent-shopping-categories:v1:<country> in session storage; the image display preference uses gathering-fox:show-images. Some country and language values are also mirrored into session storage. The app also saves a per-list share-prompt dismissal value under gathering-fox:share-nudge:<list id> in session storage. The app itself does not set first-party cookies. When a valid production GA4 measurement ID is configured, analytics first-list, last-visit, return-event, list-milestone, and consent values use gathering-fox:analytics:first-list-created:v1, gathering-fox:analytics:last-visit:v1, gathering-fox:analytics:return-sent:v1, gathering-fox:analytics:list-milestones:v1, and gathering-fox:analytics-consent:v1. List-milestone records use list IDs to avoid counting the same event repeatedly. With consent-gated mode enabled, analytics values are not recorded before acceptance.

Live shared lists and snapshot links

Nothing from a list is sent to the live-list database until you choose to create or use a live share link. For live links, Cloudflare Pages Functions receive the list title, item and list identifiers, item names, quantities, store or category labels, item details, emojis, checked states, and list notes. Cloudflare D1 stores that shared payload with a random list ID, revision number, and timestamps. The random ID acts as the access key; anyone who has the link can read and edit the live list.

Live shared copies expire 30 days after their last edit. Expired copies are rejected when accessed and are deleted during later API reads or writes, so physical removal from D1 can happen after the expiry time. Deleting a live list in the app sends a delete request for that copy. Snapshot links encode a copy of the list in the URL fragment; the fragment is not included in the HTTP request to Gathering Fox, but anyone with the link can read its contents. Copies saved by recipients are separate browser data and are not deleted when the original is removed.

Analytics

By default, the production site loads Google Analytics only when a valid GA4 measurement ID is configured, and only after your first pointer, keyboard, or scroll interaction. This default mode has no consent banner. The optional ANALYTICS_REQUIRE_CONSENT build setting is off by default. If enabled, a banner offers Accept and Decline; Google Analytics and analytics event collection remain disabled unless you accept, and your choice is saved in this browser. Analytics records page views and events such as list creation, reaching five items, creating a share link, and a return visit within seven days. Event parameters do not include list IDs, list names, item names, notes, or store/category labels.

Google Analytics may use cookies or similar identifiers and receives technical information such as the page visited and standard request data. Google processes that information under its own terms and privacy policy.

Service providers and external sites

Cloudflare hosts the site, delivers requests, runs the live-list API, and stores live lists in D1. Like other hosting providers, Cloudflare may process network and request metadata to operate and protect the service; the application code does not set Cloudflare’s infrastructure log-retention period.

When a store logo is shown, the browser may request its favicon from Google’s favicon service. The request includes the store domain and normal network metadata; the app sets a no-referrer policy for that image request. If you follow a store link, that retailer’s site handles your visit under its own privacy practices.

Children

Gathering Fox is not designed to collect personal information from children under 13, and the app does not ask users to provide their names or account details. A person using a list can still choose to type personal information into an item or note. If you believe a child has entered personal information, contact the site owner so it can be reviewed.

Deleting information and contacting us

Delete a list from the list controls or use “Reset saved data” to remove saved lists from this browser and request deletion of its live copies. Clear this site’s browser storage to remove remaining local preferences and analytics markers. Snapshot links and copies already saved by other people are outside the app’s control. For privacy questions, use the contact method on our Contact page.