This inventory reflects the production web implementation reviewed on 14 October 2026. A name containing angle brackets describes the exact generated-name rule; the value inside the brackets changes by deployment, workspace or record. Joqiva will update this inventory when a browser technology, provider, purpose or duration materially changes.
10.1 Consent records — strictly necessary
Name / key: joqiva_cookie_consent_v1.
Provider: Joqiva.
Type and surface: first-party cookie on Joqiva websites and the web app; Domain=joqiva.co.uk on joqiva.co.uk, www.joqiva.co.uk and app.joqiva.co.uk, and host-only on staging, preview and local hosts; Path=/; SameSite=Lax; Secure on HTTPS.
Purpose and category: stores accepted, rejected or customised categories and policy/mechanism/model versions; strictly necessary.
Duration: 730 days from the latest saved choice.
Runs before consent: yes.
Withdrawal / deletion: withdrawal overwrites it with all optional categories set to false because the refusal itself must be remembered. It is deleted when the 730-day record expires or the consent model becomes stale, and can also be deleted through browser site-data controls.
Name / key: joqiva.cookieConsent.v1.
Provider: Joqiva.
Type and surface: localStorage on each Joqiva origin that displays Cookie Settings.
Purpose and category: origin-local copy of the same consent preference; strictly necessary.
Duration: a maximum logical lifetime of 730 days, enforced from updatedAt even though localStorage has no native expiry.
Runs before consent: yes.
Withdrawal / deletion: overwritten with rejected optional categories on withdrawal; removed automatically when stale and removable through browser site-data controls.
Name / key: joqiva.cookieConsentId.v1.
Provider: Joqiva.
Type and surface: localStorage on the Joqiva origin where a consent event is recorded.
Purpose and category: random pseudonymous identifier used to associate consent, rejection and withdrawal events without using an account identifier; strictly necessary consent evidence.
Duration: no longer than the current 730-day browser consent cycle.
Runs before consent: created only when the visitor makes a consent choice, including rejection.
Withdrawal / deletion: retained with the rejected choice so Joqiva can evidence the withdrawal; removed when the consent record expires or becomes stale, or when browser site data is cleared.
10.2 Authentication, app state and service operation — strictly necessary
Name / key: sb-<Supabase-project-reference>-auth-token and, when the value is chunked, sb-<Supabase-project-reference>-auth-token.0, .1 and subsequent numbered chunks; temporary PKCE material uses sb-<Supabase-project-reference>-auth-token-code-verifier with the same chunking rule where needed.
Provider: Supabase, Inc. through Supabase Auth and the @supabase/ssr client used by Joqiva.
Type and surface: first-party cookies on the current Joqiva authentication/web-app host; Path=/; SameSite=Lax; not HttpOnly because the browser auth client must refresh the session.
Purpose and category: login session, refresh-token rotation and PKCE authentication; strictly necessary.
Duration: the installed @supabase/ssr cookie configuration sets a browser Max-Age of 400 days. Temporary code-verifier storage is normally removed as soon as the PKCE exchange or cleanup completes. The browser limit does not extend the server-side session: access-token expiry, refresh-token rotation, revocation and session validity remain controlled by Supabase Auth. See https://supabase.com/docs/guides/auth/server-side.
Runs before consent: yes, when a user starts or continues an authentication flow.
Withdrawal / deletion: unaffected by optional-cookie withdrawal. Cleared by sign-out, recovery-session cleanup, session revocation or browser site-data controls.
Name / key: joqiva.activeWorkspaceId.
Provider: Joqiva.
Type and surface: localStorage in the Joqiva web app.
Purpose and category: remembers the authenticated user's active workspace; strictly necessary app state.
Duration: until another workspace is selected, logout/session cleanup occurs, or site data is cleared; no separate time-based expiry.
Runs before consent: yes, for authenticated app operation.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; cleared by Joqiva on logout or invalid session and removable through browser controls.
Name / key: joqiva.sessionBootstrap.v1.
Provider: Joqiva.
Type and surface: localStorage in the Joqiva web app.
Purpose and category: short-lived cache of the authenticated session summary and current workspace to avoid incorrect app state while the authoritative server check completes; strictly necessary app operation.
Duration: 24 hours, then Joqiva rejects and removes it; also cleared on logout or invalid session.
Runs before consent: yes, in the authenticated app.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; cleared by expiry, session cleanup or browser controls.
Name / key: joqiva.demoConversation.autoplayed.v1.
Provider: Joqiva.
Type and surface: localStorage on each Joqiva web origin with the public example call player.
Purpose and category: records only whether the example call has already started in this browser, so it does not start automatically again after navigation or reopening the browser; strictly necessary for the one-time audio behaviour. It does not contain an account or customer identifier.
Duration: until browser site data is cleared; no separate time-based expiry.
Runs before consent: yes, when the example first starts automatically for a visitor or is started manually. Signed-in users can start the example manually, but it does not start automatically for them.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; removable through browser site-data controls. If browser storage is unavailable, automatic playback is disabled.
Name / key: joqiva.appleAuth.v1; joqiva.googleAuth.v1; joqiva.microsoftAuth.v1; joqiva.pendingSignup.v1; joqiva.pendingQuoteFollowupDecision.v1; job-local-draft:<workspace-id>:<job-id>.
Provider: Joqiva.
Type and surface: sessionStorage in the signup and authenticated app surfaces.
Purpose and category: respectively restores the selected Apple, Google or Microsoft login or signup flow after the provider redirect, carries the user-requested signup state through authentication, remembers an unresolved quote follow-up decision, and preserves an unsent job-message draft in the tab if message access is lost; strictly necessary transient workflow state.
Duration: Apple, Google and Microsoft authentication states expire after 20 minutes and are removed when their callback completes or fails. The other entries last for the current browser tab session, with earlier removal when signup completes, a follow-up decision is made, or the relevant workflow clears the value.
Runs before consent: yes, but only after the user starts the relevant workflow.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; cleared by the relevant workflow, closing the tab or browser site-data controls.
Name / key: joqiva-pwa-v3.
Provider: Joqiva through the browser Service Worker and Cache Storage APIs.
Type and surface: Cache Storage on production Joqiva web origins.
Purpose and category: caches the offline page, Joqiva logo and public static assets; authenticated workspace, quote, invoice, customer and admin routes are expressly excluded; strictly necessary service delivery/offline resilience.
Duration: until replaced by a later joqiva-pwa-* cache version, the service worker is unregistered, or site data is cleared; no fixed time expiry.
Runs before consent: yes, on production web pages.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; old Joqiva PWA cache versions are deleted on service-worker activation, and all versions can be removed through browser site-data controls.
10.3 Security technologies — strictly necessary
Name / key: joqiva_password_recovery_pending.
Provider: Joqiva.
Type and surface: first-party cookie on password-recovery routes; Path=/; SameSite=Lax; Secure on HTTPS.
Purpose and category: marks a password-recovery session so stale recovery credentials can be cleaned before another reset request; strictly necessary security.
Duration: 1 hour.
Runs before consent: yes, only during password recovery.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; explicitly expired after recovery cleanup and removable through browser controls.
Name / key: joqiva_password_reset_next_request_at.
Provider: Joqiva.
Type and surface: localStorage on the forgot-password page.
Purpose and category: enforces a browser-side reset-request cooldown in addition to server controls; strictly necessary abuse prevention.
Duration: 60 seconds, then removed.
Runs before consent: yes, after a reset request.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; removed when the cooldown ends or site data is cleared.
Name / key: joqiva_prod_access by default; APP_ACCESS_GATE_COOKIE_NAME may replace the name only if Joqiva operates the configured closed production access gate.
Provider: Joqiva.
Type and surface: first-party HttpOnly cookie on the configured production domain; Path=/; SameSite=Lax; Secure.
Purpose and category: proves successful access-gate verification when that gate is enabled; strictly necessary security.
Duration: 30 days.
Runs before consent: yes, only when the closed access gate is configured and the correct access token is submitted.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; expires after 30 days and can be removed through browser site-data controls.
Name / key: no Joqiva-defined cookie or storage key for the default Turnstile widget; the widget returns a one-time in-memory token. If Cloudflare pre-clearance is separately enabled, Cloudflare may issue cf_clearance.
Provider: Cloudflare, Inc. through Cloudflare Turnstile.
Type and surface: security script and iframe loaded from challenges.cloudflare.com only when a protected form is submitted; a conditional cf_clearance first-party security cookie is possible only under Cloudflare pre-clearance/zone configuration.
Purpose and category: bot and abuse prevention for protected forms; strictly necessary security.
Duration: the one-time Turnstile token is not persisted by Joqiva and is consumed or expires with the challenge. A conditional cf_clearance duration is the Cloudflare zone's configured Challenge Passage period. See https://developers.cloudflare.com/turnstile/ and https://developers.cloudflare.com/cloudflare-challenges/concepts/clearance/.
Runs before consent: yes, when the user submits a protected form.
Withdrawal / deletion: unaffected by optional-cookie withdrawal; the widget is removed when its component unmounts or resets. A conditional Cloudflare clearance cookie can be removed through browser site-data controls.
10.4 Functional / preference storage — optional
Name / key: joqiva.customers.view.
Provider: Joqiva.
Type and surface: localStorage in the Customers area of the web app.
Purpose and category: remembers list or card view; functional / preferences.
Duration: until changed, functional consent is withdrawn, or site data is cleared; no separate time-based expiry.
Runs before consent: no.
Withdrawal / deletion: Joqiva removes it immediately when Functional / preferences is rejected or withdrawn.
Name / key: joqiva.enquiries.pasteExampleGuideDismissed.
Provider: Joqiva.
Type and surface: localStorage in the manual enquiry-paste form.
Purpose and category: remembers that the example guide was dismissed; functional / preferences.
Duration: until functional consent is withdrawn or site data is cleared; no separate time-based expiry.
Runs before consent: no.
Withdrawal / deletion: Joqiva removes it immediately when Functional / preferences is rejected or withdrawn.
Name / key: joqiva-us-waitlist-emails.
Provider: Joqiva.
Type and surface: localStorage on the US waitlist page.
Purpose and category: remembers normalised email addresses entered through that browser so the page can show a duplicate-submission state; functional / preferences. In the reviewed client implementation this key is local-only and is not itself evidence that a server-side waitlist record was created.
Duration: until functional consent is withdrawn or site data is cleared; no separate time-based expiry.
Runs before consent: no; without functional consent, waitlist submission still works but the browser does not remember the address.
Withdrawal / deletion: Joqiva removes it immediately when Functional / preferences is rejected or withdrawn.
10.5 Analytics storage
Name / key: ph_<PostHog-public-project-token>_posthog in localStorage and a cookie with the same generated name; PostHog may also create SDK-version-related ph_*, phc_* or posthog* keys within the same configured persistence.
Provider: PostHog, Inc., using PostHog Cloud EU through Joqiva's first-party ingestion endpoint at e.joqiva.co.uk; the PostHog EU interface is at eu.posthog.com.
Type and surface: localStorage plus first-party cookie on Joqiva marketing, legal, auth, customer and web-app surfaces where the Joqiva route tracker is enabled. PostHog's cross-subdomain cookie setting may place the cookie on the top-level joqiva.co.uk domain.
Purpose and category: personless, sanitised page and product events; analytics. Personless means that no PostHog personal profile is created; persistent events are pseudonymous rather than anonymous because they may contain PostHog distinct, browser-device, session and window identifiers. Autocapture, session replay, heatmaps, surveys, automatic page views, performance capture and automatic exception capture are disabled. Customer-document content is excluded by the event and property allowlist.
Duration: PostHog's configured/default cookie duration is 365 days; localStorage entries have no browser-native expiry but are removed on rejection/withdrawal. See https://posthog.com/docs/libraries/js/config.
Runs before analytics consent: no persistent analytics storage runs before consent. When analytics is rejected, Joqiva may send only configured personless cookieless events. Those events use no cookies, localStorage or sessionStorage and create no persistent browser identifier, but PostHog may derive a privacy-preserving server-side hash and process limited request metadata; they are not described as fully anonymous.
Withdrawal / deletion: PostHog is opted out and Joqiva immediately removes matching analytics cookies from both the host and joqiva.co.uk parent domain and removes matching analytics keys from localStorage and sessionStorage.
Name / key: __ph_opt_in_out_<PostHog-public-project-token>.
Provider: PostHog, Inc. under Joqiva's consent configuration.
Type and surface: localStorage on the current Joqiva origin.
Purpose and category: stores PostHog's granted/denied persistence status so the SDK respects the Joqiva choice; strictly necessary consent state, not analytics content.
Duration: until the analytics choice is changed or browser site data is cleared; PostHog's localStorage consent marker has no automatic time-based expiry, while Joqiva asks for a fresh choice when its own 730-day consent record expires.
Runs before consent: created when Joqiva applies the visitor's accepted or rejected analytics choice.
Withdrawal / deletion: updated to the denied state on withdrawal and retained to enforce that choice; browser site-data controls remove it.
10.6 Affiliate attribution storage — not currently used
Name / key: no active affiliate-attribution cookie, localStorage key or sessionStorage key.
Provider: none. Joqiva does not use an external affiliate network and no external affiliate network receives data.
Type and surface: none on marketing, authentication, signup or checkout surfaces.
Purpose and category: referral tracking and affiliate attribution are not currently active; the category is unavailable in Cookie Settings.
Duration: not applicable.
Runs before consent: no.
Runs after consent: no; there is no available affiliate-attribution consent category to enable.
Withdrawal / deletion: Joqiva removes any legacy dormant affiliate-attribution sessionStorage entry when consent state is applied or optional consent is rejected. The entry is not recreated or consumed by signup, checkout or billing.
Joqiva does not currently use advertising, remarketing, social-media tracking or an external affiliate-network browser cookie.
10.7 Paddle subscription checkout
Name / key: no stable Joqiva-defined Paddle cookie, localStorage or sessionStorage key. Paddle.js and Paddle's hosted checkout frames control their own necessary checkout/security storage and may change the individual provider-controlled names.
Provider: Paddle.com Market Limited and the applicable Paddle entities acting as merchant of record for Joqiva subscription payments.
Type and surface: Paddle.js loaded from cdn.paddle.com and Paddle-hosted overlay/checkout or customer-portal surfaces, only after an authorised user explicitly starts subscription checkout or opens billing management.
Purpose and category: subscription checkout, payment-method collection, transaction security, fraud prevention, confirmation and subscription management; strictly necessary for the requested billing action. This is separate from End Customer invoice payments.
Duration: set by the exact Paddle checkout technology in use. Paddle's current provider-controlled names, purposes and durations are maintained in Paddle's Cookie Notice at https://www.iubenda.com/privacy-policy/83216669/cookie-policy, linked from https://www.paddle.com/legal/privacy.
Runs before Joqiva optional consent: yes, but only after the user explicitly requests checkout or billing management; Paddle is not loaded on ordinary page view.
Withdrawal / deletion: Joqiva optional-cookie withdrawal does not delete storage that Paddle independently requires for an active or completed transaction. Close the checkout and use browser controls or Paddle's Cookie Preferences/privacy request route to remove provider-controlled optional storage where available.
10.8 Disabled technologies
Email open pixels and click tracking are disabled by default. Joqiva does not currently run advertising, remarketing or social-media tracking browser technologies. Limited cookieless PostHog analytics, server security logs, consent evidence, audit records and operational records that do not store information on or access information from the device are not browser storage; their processing and retention are described in the Privacy Policy.