Cookie Policy

Effective date: 2026-09-29

This page lists everything Attia stores in your browser and everything Attia reads back from it. For each entry it says what the entry is for, who set it, how long it lasts, and which consent category it falls in.

Norwegian law ties consent to storing or reading data on your device (ekomloven § 3-15), not to collecting data as such. So the question here is a narrow one. What does Attia put on your device, and why.

Attia AS, Solheimgata 1a, 0267 Oslo, Norway. Questions go to oystein@attia.app.

The three categories

Necessary. Either the surface breaks without it, or you set it yourself by an explicit action and it records only that choice.

Statistics. Measures how the product is used or how it performs. Nothing in it identifies you for advertising.

Marketing. Advertising, cross-site profiling, remarketing.

Most of this page is necessary. Two Google tools are optional: Google Analytics in the statistics category and Google Ads in the marketing category. They run only on attia.app's public pages and in the docs, and only after you allow their category in the cookie banner. There is no Meta or TikTok pixel, no Hotjar, no PostHog, no Segment, no heatmap and no session replay.

Cookies

Every cookie in this table is necessary. The optional Google cookies are listed under Statistics and Marketing below. A … stands for an identifier that varies by account, workspace or project. Clerk also writes suffixed copies of its own cookies, such as __session_abc123.

CookieSet byWhat it doesHow long it lasts
attia_consentAttiaYour answer to the cookie banner, so you are not asked again and so only what you allowed can run365 days
exponential-ui.themeAttiaYour theme choice and your current system colour scheme, so the first paint uses the right colours instead of flashing365 days
sidebar_stateAttiaWhether the app sidebar is expanded or collapsed7 days
attia.last-workspaceAttiaThe workspace you visited last, so signing in returns you where you left off. It grants no access on its own365 days
attia.last-workspace-slugAttiaThe address (slug) of the workspace you opened last and the name of its home page, readable by the page, so "Open app" takes you straight there. The app writes it after it has opened the workspace for you, and deletes it when you sign out. It holds no user id, role or token, and grants no access on its own365 days
attia-onboarding-last-stepAttiaThe onboarding step you reached, so a reload resumes there14 days
candidate-apply-sign-inAttiaHolds your email address between "send code" and "verify code" so it never travels in a URL15 minutes
sb-…-auth-tokenSupabaseYour session in the candidate portalUntil you close the browser
__session, __client_uatClerkThe signed-in session, and the timestamp that lets our server tell signed in from signed out without a round tripSet by Clerk; the session token rotates about once a minute
__refreshClerkMints a new session token so you stay signed inSet by Clerk
__clerk_db_jwtClerkA further handle on the same sessionSet by Clerk
__clerk_handshake, __clerk_handshake_nonce, __clerk_redirect_countClerkCarry a session refresh through its redirect and stop it loopingSeconds
NEXT_LOCALEAttiaThe language you chose with the language switcher, so your next visit opens in it1 year

Storage in your browser

Cookies travel to the server with every request. The entries below stay in the browser and are read only by the code that wrote them. Most of them exist because you clicked, dragged or typed something and the surface should still look that way when you come back.

localStorage

Entries marked "signed-in app" are written only inside Attia itself, never on the public site and never on a career site.

EntrySet byWhat it doesHow long it lasts
exponential-ui.themeAttiaThe full theme record. The cookie above is the server's copy of itUntil you clear it
exponential-ui.saved-colors.…AttiaUp to 18 colours you saved in the theme editorUntil you clear it
exponential-ui:app-sidebar:…:v1AttiaWhether a given sidebar is openUntil you clear it
react-resizable-panels:…, side-panel-width, attia:agent-panel-sizeAttiaThe widths you set by dragging a divider (signed-in app)Until you clear it
exponential-ui:view-editor-icons:v1, exponential-ui:resource-create-dialog-icons:v1, exponential-ui:data-table-row-icons:v1, exponential-ui:data-table-json-title-icons:v1, exponential-ui:resource-data-details-panel:view-icon, attia:new-team-icons:v1, attia:team-general-icons:v1, attia:career-site-icons:v1, workspace-document-comment-reactionsAttiaThe icons and emoji you reached for most recently, so each picker opens on them (signed-in app)Until you clear it
attia.view-prefs:…AttiaYour columns, grouping and ordering in a table (signed-in app)Until you clear it
attia.job-create-draft:…AttiaA job you started writing and have not saved, so closing the dialog does not lose it (signed-in app)Until you clear it or discard the draft
attia.search.recent.…AttiaYour last ten searches in a workspace, shown back to you (signed-in app)Until you clear it
attia:team-resources-collapsed:…AttiaWhich groups you collapsed in the sidebar (signed-in app)Until you clear it
attia-plan-cap:…:applicationsReadOnly:v1AttiaThat you dismissed the plan limit notice, so it stays dismissed (signed-in app)Until you clear it
attia:chat-tabs:…AttiaWhich agent chat tabs you have open and which have unread messages (signed-in app)Until you clear it
attia:onboarding:lastStep, attia:onboarding:workspaceAttiaHow far you got in onboarding and the workspace you just created, so a reload resumes thereCleared when onboarding finishes
attia.local-data.session-scope.v1, attia.local-data.last-workspace-id.v1:…, attia.local-data.last-user-id, attia.local-data.database-name.v1:…AttiaWhich account and workspace the offline copy described below belongs to. They are what lets signing out prove it deleted everything (signed-in app)Until you clear it
recruitr:qc:…:v1AttiaA saved copy of data you had already loaded, so a return visit renders straight away (signed-in app)12 hours
career-site-theme:…AttiaYour light or dark choice on a career site that follows the system theme, kept per site. It is the only entry a career site writes for itself. Clerk's sign-in script, which our shared layout loads on every page, still writes __clerk_environment here as well; it holds Clerk's own configuration and nothing about youUntil you clear it
__clerk_environmentClerkClerk's own configuration, cached so the sign-in code does not fetch it on every loadUntil you clear it

sessionStorage

These belong to a single browser tab and are gone when you close it. Every one of them is written inside the signed-in app or during onboarding.

EntrySet byWhat it does
attia.settings.backNavAttiaWhere to send you back to when you leave settings
attia.account-switch.focus-mainAttiaThat you just switched account, so keyboard focus lands in the right place
attia:onboarding:plan, attia:onboarding:periodAttiaThe plan and billing period you picked, carried across the onboarding steps
attia:clerk-org-sync-attempt:…AttiaThat a sign-in step already ran in this tab, so a failure does not loop
recruit-io:workspace-invite-link:v1:…AttiaThe invite link you just created, token and all, so you can copy it. The server does not hand it out a second time

IndexedDB

The signed-in app keeps a local copy of the records you already have access to, so lists open without waiting for the network. It lives in two databases, attia-local:u:… for your own data and attia-local:w:… for a workspace you opened. Both are deleted when you sign out, switch workspace or lose access. Nothing outside the signed-in app creates them.

Statistics

Google Analytics, provided by Google Ireland Limited, counts visits to attia.app's public pages and the docs, and shows us which pages and which sources bring people to sign up. It loads only after you allow statistics, and only on the live site. It never runs on a career site, in the candidate portal, or inside the Attia app. A direct visit to one of these legal pages loads neither Google tool. If you open a legal page from a public page in the same tab, a tool that already loaded stays in that tab, and Google Analytics is paused there.

CookieSet byWhat it doesHow long it lasts
_gaGoogle Analytics, on attia.appTells one browser's visits apart from another's with a random identifier2 years
_ga_L6WK0ETS1JGoogle Analytics, on attia.appKeeps track of the current visit2 years

Google states that Google Analytics 4 does not log or store IP addresses. Google describes these cookies in Google Analytics cookie usage on websites.

Clerk's sign-in code used to write clerk_telemetry_throttler to rate-limit telemetry about its own software. We turned that telemetry off, so the entry is no longer written and the beacons are no longer sent. If you have it from an earlier visit, clearing site data removes it.

Marketing

Google Ads, provided by Google Ireland Limited, measures whether a visit that started from an Attia ad ends in a sign-up, and lets Attia show its ads to people who visited attia.app before. It loads only after you allow marketing, and only on the same pages as Google Analytics.

CookieSet byWhat it doesHow long it lasts
_gcl_au, and _gcl_aw when you arrive from an adGoogle Ads, on attia.appLinks a sign-up to the ad click that brought you here90 days
IDEGoogle, on doubleclick.netShows and measures ads, including Attia's ads on other sites13 months in the EEA, Switzerland and the UK
test_cookieGoogle, on doubleclick.netChecks whether your browser accepts cookies15 minutes
ar_debugGoogle, on doubleclick.net and googleadservices.comChecks that Google's reporting of ad conversions works90 days

Google sets the last three on its own domains, so Google's privacy policy governs them. Google can set further cookies there, for example when you are signed in to a Google account, and lists them at business.safety.google/adscookies. You can turn off ad personalisation at adssettings.google.com.

Google Ads is the only advertising tool Attia uses.

Who receives the data

A cookie goes back to whoever set it: ours to Attia, Clerk's to Clerk, Supabase's to Supabase. Clerk provides sign-in for the Attia app and Supabase provides the candidate portal session. Both process the data under contract with us.

Google Analytics and Google Ads send what they measure to Google. Google Ireland Limited is responsible for it in the EEA, and it can be transferred to Google LLC in the United States. The Privacy Policy gives the legal basis and the safeguards.

The localStorage, sessionStorage and IndexedDB entries do not travel anywhere on their own.

What does not touch your device

Our error monitoring (Sentry) and our page-speed measurement (Vercel Speed Insights) write nothing to your browser at all: no cookie, no storage entry, no database. We checked both in the code we ship and on a live page. Speed Insights runs on Attia's own pages only: it is not loaded on a career site or in the candidate portal. What they do collect is covered by the Privacy Policy.

Changing or removing what is stored

Clearing site data for attia.app in your browser removes every entry on this page. You will be signed out, and Attia will forget your theme, your layout and any unsaved draft.

To withdraw your consent to statistics or marketing, open Cookie settings at the bottom of this page and switch the category off. The page reloads, Google's tag stops, and the _ga or _gcl_ cookies on attia.app are deleted. Cookies Google set on its own domains stay until they expire or you clear them in your browser.

Your browser can also block cookies. Blocking the ones for attia.app signs you out as well; Cookie settings stop Google Analytics and Google Ads without that.

To ask what we hold, to object, or to have something removed, write to oystein@attia.app. The Privacy Policy covers the rest of what we process and the rights you have over it.