Cookie Policy — Consent & Preferences
1. What cookies are and how we use them
Cookies are small text files stored by your browser when you visit a website. They help remember preferences, keep essential features working, and—when you allow it—measure performance and campaign effectiveness.
At 2luv, we use cookies mainly to: (a) remember your consent, (b) provide features and security on some pages (e.g., password-protected content), and (c) when authorized, measure usage and conversions.
2. Types of cookies used and purpose
Necessary: essential for security and basic functionality (e.g., remembering consent and authenticating protected content).
Functional: improve your experience and help navigation (e.g., remembering the last accessed content).
Preferences: store choices like language.
Analytics: help measure and understand site usage (statistics), when enabled.
Marketing: help measure campaigns and conversions, when enabled.
3. How we collect your consent and how long it is stored
When you access 2luv, we show a cookie banner so you can accept, reject, or customize your preferences (e.g., Analytics and Marketing).
Your choice is stored so we can respect it on future visits. In general, we keep the record for up to 12 months (it may vary depending on browser settings). In some cases, we also use the browser's localStorage to store preferences.
4. How you can refuse cookies
You can refuse optional cookies directly in the banner by clicking Reject or by disabling categories in Customize.
You can also manage cookies in your browser settings (block, delete, or limit). If you delete cookies, some preferences may be reset.
5. Which cookies are used
The list below includes first-party cookies (set by 2luv) and cookies/identifiers that may be set by third-party services (Analytics/Ads). Some names and durations may vary depending on the provider and browser.
| Technology | Category | Owner | Name | Purpose | Duration | Domain | Consent mode | Cleanup |
|---|---|---|---|---|---|---|---|---|
| cookie / localStorage | Necessary | 2luv-ui | Stores your consent choice (including Consent Mode preferences) so we can respect your selections in future visits. | 12 months | 2luv domain | security_storage | Kept when optional data is rejected; reset when the visitor clears all browser data. | |
| Cookie | Necessary | 2luv-ui | Keeps the service in the correct language, date format and reading direction for this browser. | 12 months | 2luv domain | functionality_storage | Deleted by the full device/session cleanup action. | |
| Cookie | Necessary | 2luv-ui | Keeps pricing, currency, plan availability and regional routing consistent for this browser. | 12 months | 2luv domain | functionality_storage | Deleted by the full device/session cleanup action. | |
| Cookie | Preferences | 2luv-api | Helps quickly resume the last gift/letter accessed in this browser. | 30 days | 2luv API domain | functionality_storage | Deleted by the full device/session cleanup action. | |
| Cookie | Necessary | 2luv-api | Security cookie (httpOnly) used to identify the device/browser and help protect access and sensitive operations. | 12 months | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| Cookie | Necessary | 2luv-api | Short-lived HttpOnly authorization bound to this device/browser for refreshing Find My Gift results without replaying the inbox code. | Browser session, up to 8 hours | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| localStorage | Necessary | 2luv-ui | Temporarily remembers the verified Find My Gift email in this browser so the session can refresh results after navigation or reload. | Valid for 8 hours; an expired record is deleted on the next My Gifts load | This browser only | security_storage | Deleted when another email is chosen, when expired, or by the full device/session cleanup action. | |
| Cookie | Necessary | 2luv-api | Authentication cookie (httpOnly) used to keep access to password-protected letters and allow authorized actions related to that content. | 30 days | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| Cookie | Necessary | Helps distinguish people from automated abuse during letter lookup, contact, AI-assisted writing, media upload, letter creation, and letter editing. | up to 6 months | not consent-controlled; strictly necessary security | Loaded only on protected form submission; provider data must be managed through browser or Google settings. | |||
| Cookie | Analytics | Google Analytics: helps understand site usage (aggregated statistics), performance, and navigation, respecting Consent Mode. | up to 13 months | Google / 2luv domain | analytics_storage | Deleted when optional cookies are rejected where browser access allows it. | ||
| Cookie | Preferences | 2luv-api | Compatibility resume cookie name that the current letter API clears when deleting session state. | legacy/session | 2luv API domain | functionality_storage | Deleted by the full device/session cleanup action. | |
| Cookie | Necessary | 2luv-api | Short-lived HttpOnly owner capability for legacy Gift edits. | Up to 30 days; recovered sessions use 1 hour | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| Cookie | Necessary | 2luv-api | HttpOnly view or owner capability for interactive Card collections. | Session or 30 days | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| Cookie | Necessary | 2luv-api | Short-lived signed capability used to read one checkout payment status. | 24 hours | 2luv API domain | security_storage | Deleted by the full device/session cleanup action through the API. | |
| localStorage | Necessary | 2luv-ui | Stores an unfinished create flow locally so a visitor can recover a draft before publishing. | 30 days after last save | browser only | security_storage | Deleted by the full device/session cleanup action. | |
| IndexedDB | Necessary | 2luv-ui | Stores draft photo blobs locally while a visitor is composing an unpublished gift or letter. | 30 days after last save | browser only | security_storage | Deleted by the full device/session cleanup action. | |
| localStorage | Necessary | 2luv-ui | Prevents duplicate create requests when a submission is retried. | Until creation succeeds or browser data is cleared | browser only | security_storage | Deleted after successful creation or by the full device/session cleanup action. | |
| sessionStorage | Necessary | 2luv-ui | Keeps the latest create-flow lead and letter link available during payment continuation. | Until replaced or browser data is cleared | browser only | security_storage | Deleted by the full device/session cleanup action. | |
| sessionStorage | Necessary | 2luv-ui | Stores an unpublished WebMCP-assisted create draft in this browser. | Until published, replaced or browser data is cleared | browser only | security_storage | Deleted by the full device/session cleanup action. | |
| sessionStorage | Necessary | 2luv-ui | Legacy owner capability from older builds; current builds use HttpOnly cookies and never write this key. | Browser tab session | browser only | security_storage | Deleted by the full device/session cleanup action. | |
| sessionStorage | Analytics | 2luv-ui | Stores temporary Google Analytics debug state for the current tab. | Browser tab session | browser only | analytics_storage | Deleted when analytics consent is revoked or by the full device/session cleanup action. | |
| localStorage | Preferences | 2luv-ui | Stores the selected light, dark, or system theme preference; system is resolved locally from the browser color-scheme setting. | until changed or cleared | browser only | functionality_storage | Deleted by the full device/session cleanup action. | |
| localStorage | Preferences | 2luv-ui | Legacy mirror of the selected language used by public controls. | until changed or cleared | browser only | functionality_storage | Deleted by the full device/session cleanup action. | |
| localStorage | Preferences | 2luv-ui | Stores recently opened gift and letter links in this browser so the landing page can resume the latest item after preference consent. | until changed, consent is revoked, or cleared | browser only | functionality_storage | Deleted when preference consent is revoked or by the full device/session cleanup action. | |
| localStorage | Marketing | 2luv-ui | Stores consented campaign and click identifiers for checkout attribution. | 90 days | browser only | ad_storage | Deleted when marketing consent is revoked or by the full device/session cleanup action. | |
| Cookie | Marketing | 2luv-ui | Preserves browser and advertising click identifiers for server-side Meta and TikTok conversions. Click cookies are created only after an actual ad click; no social pixel scripts are loaded. | 90 days | 2luv domain | ad_storage / ad_user_data | Deleted when marketing consent is revoked or optional browser data is cleared. | |
| Cookie | Marketing | 2luv-ui | Reads an existing TikTok browser identifier for consented server-side conversions. The current UI does not create or renew this cookie. | Existing cookie expiry | 2luv domain | ad_storage / ad_user_data | Deleted when marketing consent is revoked or optional browser data is cleared. | |
| sessionStorage | Preferences | 2luv-ui | Tracks promo cards shown during the current tab session to avoid repeated prompts. | browser tab session | browser only | functionality_storage | Deleted when the tab closes or by the full device/session cleanup action. | |
| sessionStorage | Preferences | 2luv-ui | Stores the keyboard state for the Termo interactive card during the current tab session. | browser tab session | browser only | functionality_storage | Deleted when the tab closes or by the full device/session cleanup action. | |
| network telemetry | Necessary | Microsoft | Records sanitized server request routes, status, duration and failures for reliability and security operations without browser identifiers. | Azure project retention policy | Microsoft Azure / 2luv server | not browser consent-controlled; operational server telemetry | Managed through the Azure Application Insights retention policy. | |
| network telemetry | Analytics | Sentry | Captures frontend errors and performance traces only after analytics consent. | provider-defined project retention | Sentry SaaS / 2luv domain | analytics_storage | Sentry loads only after analytics consent; optional browser data cleanup removes legacy Sentry Replay keys from earlier builds. | |
| Cookie | Marketing | Measures ad conversions and campaign attribution only when marketing consent is granted. | provider-defined, commonly up to 3 months | Google / 2luv domain | ad_storage, ad_user_data, ad_personalization | Deleted when optional cookies are rejected where browser access allows it. | ||
| network telemetry | Marketing | Sends normalized email or phone only as SHA-256 hashes for enhanced conversion matching after ad_user_data consent. | in memory until sent or consent is revoked; provider-defined retention after receipt | ad_user_data | Queued user_data is cleared when marketing consent is denied; raw contact values are never sent through the Google tag. | |||
| Third-party embed | Marketing | Music provider | Loads third-party media previews after marketing consent or when the visitor opens the provider directly. | provider-defined | third-party providers | ad_storage | Blocked until consent; provider data must be managed with the provider. | |
| HTTP cache | Necessary | 2luv-api | Caches public, non-sensitive metadata briefly for performance and availability. | 60 seconds browser, up to 1 hour stale revalidation depending on endpoint | browser/CDN | not consent-controlled | Browser cache can be cleared from browser settings. | |
| HTTP cache | Necessary | 2luv-api | Sensitive responses are marked private or no-store to avoid shared caching. | no-store or private short-lived | browser only | not consent-controlled | No shared cache should retain these responses. | |
| CDN cache | Necessary | 2luv edge | Caches versioned public assets so pages load quickly without storing visitor profile data. | 7 days to 12 months depending on asset type | browser/CDN | not consent-controlled | Browser cache can be cleared from browser settings. | |
| Server memory | Necessary | 2luv-api | Short-lived server-side caches reduce repeated API and media work without being written to the visitor browser. | 10 seconds to 6 hours depending on cache | 2luv-api memory | not consent-controlled | Expires automatically on TTL or process restart. | |
| Database | Necessary | 2luv-api | Keeps short operational state required for uploads, edit sessions and payment safety. | 5 minutes to 24 hours where TTL exists; payment safety records follow backend retention | 2luv database | security_storage | Backend retention and operational cleanup, not browser cookie cleanup. |
6. How to exercise your rights
You can request information and exercise your privacy rights (for example: confirmation of processing, access, correction, anonymization, portability, deletion, and withdrawal of consent), when applicable, by contacting us.
Contact channel: contact@2-luv.com.
7. Changes and modification date of the Cookie Policy
We may update this Cookie Policy to reflect changes in our services, technologies, or legal obligations. When there are relevant changes, we will update the “Last updated” date at the top of this page.