Cookie Policy
Last updated: 12 October 2026
1. Scope
This policy describes everything the GWP gift unit ("the widget") stores in a shopper's browser when it runs on a participating retailer's site, and how the widget interacts with that retailer's consent tooling. It also covers this marketing site.
This marketing site (gwpingenuity.com) itself sets no cookies. The inventory below applies only to the widget running on retailer sites.
2. What the widget stores
The widget uses a small, fixed set of first-party cookies and localStorage keys. There is nothing else — no third-party cookies, no fingerprinting, no cross-site identifiers.
| Name | Type | Duration | Purpose |
|---|---|---|---|
gwp_sel | First-party cookie | 30 days (7 days in essential mode) | Carries the shopper's gift selection across the basket → checkout subdomain hop on the retailer's own domain. |
gwp_ses | First-party cookie | 30 days | Session reference used for frequency capping and for attributing a claimed gift to the retailer. |
gwp_shows | First-party cookie | 2 days | Carries the frequency-cap show count across the retailer's own subdomains (e.g. basket → checkout), so caps hold when a retailer splits those pages across origins. |
gwp_attrs | First-party cookie | 30 days (7 days in essential mode) | Set only on stores that have enabled order-confirmation gift emails: records that the widget has staged gift metadata (gwp_* attributes — the gift's name, brand, claim link and image link) on the store's own cart, so the widget knows to clear those attributes if the selection is later revoked. |
gwp_gsync | First-party cookie | 30 days (7 days in essential mode) | Set only on stores that put the shopper's gifts in their own order-confirmation email, and only once GWP holds a gift list for the signed-in shopper from this device: a short hash of the site and the shopper's customer account number (not the number itself), so the widget knows to send the empty list that deletes GWP's copy when the last gift goes. Removed once that is done (see our Privacy Policy, section 3.1). |
__gwp_probe | First-party cookie (technical) | 5 seconds | A short-lived write-probe used to test whether a cookie can be set on the retailer's registrable domain; removed immediately after the test. |
gwp_sel | localStorage | Until cleared | Mirror of the gift selection, used when the cookie is unavailable. |
gwp_ses | localStorage | Until cleared | Mirror of the session reference. |
gwp_shows | localStorage | Until cleared | Counts how often the unit has been shown, to enforce frequency caps. |
gwp_attrs | localStorage | Until cleared | Mirror of the staged-attributes marker, used when the cookie is unavailable. |
gwp_gsync | localStorage | Until the empty list is sent, or until cleared | Mirror of the gift-list marker, used when the cookie is unavailable. |
gwp_em | localStorage | 24 hours | Set only on stores that have GWP email the gift link, only with consent to the widget's full mode (never in essential mode), and only once the shopper has signed in: the email address they signed in with, encrypted on the device so that only GWP can read it, and a hash of it used on the device to check it belongs to the account still signed in. Sent to GWP with the order number on the order-confirmation page, then removed (see our Privacy Policy, section 3.1). |
All of the above are set only on the retailer's own domain (with SameSite=Lax). They are never third-party cookies, are never shared across sites, and cannot be used to follow a shopper from one retailer to another.
3. How the widget honours consent
The widget reads — and never writes — the consent state exposed by the retailer's consent management platform (CMP). It understands the IAB TCF API, Didomi and OneTrust, including reading the OptanonConsent cookie that OneTrust sets, so it can honour a decision the shopper has already made.
- If the shopper has explicitly declined the relevant consent category, or has not yet answered the banner, the widget runs in essential mode, unless the retailer has switched that mode off. It still shows gifts, stores nothing until the shopper picks one, and then keeps only that choice (
gwp_sel, for at most 7 days) and, on stores that use them, the markers tied to it (gwp_attrs,gwp_gsync). It stores no session reference, show count or email address. On stores that put gifts in their own order-confirmation email, it also sends a signed-in shopper's customer account number with the gifts they chose (see our Privacy Policy, section 3.1). - Where the retailer has switched essential mode off, a declined or unanswered banner means the widget stores nothing at all and does not render.
- If a CMP is present and consent is granted, the widget stores the items in the table above.
- If no CMP is present on the page, the widget's storage posture is configured per retailer, in line with that retailer's own compliance stance.
If the shopper later withdraws consent, the widget erases everything in the table, except that in essential mode it keeps the gift choice (for at most 7 days) and the markers tied to it.
4. Classification
[LEGAL REVIEW: classification of each item above as strictly necessary vs non-essential (and the corresponding PECR/ePrivacy consent treatment) to be confirmed by counsel per deployment.]
5. Managing these cookies
Because everything above lives on the retailer's own domain, you can remove it by clearing cookies and site data for that retailer's site in your browser, or by changing your choices in the retailer's consent banner. For more on the data behind these identifiers, see our Privacy Policy.