Cookie Policy
Last updated: August 23, 2026
The short version
ROJI Inc. ("ROJI," "we," "us," or "our") sets five cookies across roji.ai and the ROJI console. Three keep you signed in and remember which account you are working in, one records your cookie choice, and one remembers whether the console sidebar is open.
We run no analytics, no advertising, no pixels, no tag manager, and no session replay. There is no Google Analytics, no PostHog, no Meta or LinkedIn pixel, and no cross-site tracking of any kind on this site. That is not a promise about the future — it is a description of the code that is deployed today, and this page is rewritten when that changes.
This policy sits alongside our Privacy Policy.
What cookies are
Cookies are small text files a site stores in your browser. A session cookie is discarded when you close the browser; a persistent cookie survives until it expires or you delete it. A first-party cookie is set by roji.ai; a third-party cookie is set by another domain whose code runs on the page.
Cookies we set
Strictly necessary
These are required for sign-in, for the console to work at all, and for us to remember your cookie choice. They carry no advertising identifier and are not shared with anyone. The three session cookies are HttpOnly (JavaScript on the page cannot read them), Secure (sent only over HTTPS), and SameSite=Lax. c15t is Secure and SameSite=Lax but not HttpOnly, because the consent banner has to be able to read your choice back.
| Cookie | What it holds | Set on | Lifetime | Flags |
|---|---|---|---|---|
session | Your signed-in session, as a Firebase Authentication session token | .roji.ai | 14 days | HttpOnly, Secure, SameSite=Lax |
api_token | The access token the console uses to call the ROJI API on your behalf | .roji.ai | Expires with the token (14 days by default) | HttpOnly, Secure, SameSite=Lax |
current_account | The URL slug of the account you are currently working in, so a page load lands in the right workspace | .roji.ai | 1 year | HttpOnly, Secure, SameSite=Lax |
c15t | Your cookie choice, so the consent banner does not ask again | roji.ai | 1 year | Secure, SameSite=Lax (readable by the banner) |
session, api_token and current_account only exist once you sign in, and all three are deleted when you sign out. If you have never signed in, c15t is the only cookie on your machine from us.
Functional
| Cookie | What it holds | Set on | Lifetime | Flags |
|---|---|---|---|---|
sidebar_state | Whether the console's left sidebar is expanded or collapsed | roji.ai | 7 days | SameSite=Lax (written by the page, so not HttpOnly) |
This one is set inside the signed-in console only. It never appears on a marketing page.
Analytics cookies
None. We do not set any.
Advertising and marketing cookies
None. We do not set any, and we do not embed any third-party advertising or measurement tag.
Similar technologies
Two things we use are not cookies but do store data in your browser, so they belong here:
- Firebase Authentication (IndexedDB). After you sign in with Google, the Firebase client library keeps your refresh token in your browser's IndexedDB store (
firebaseLocalStorageDb). This is what stops you being asked to sign in on every page. Signing out clears it. It exists only for signed-in users. - Consent record (local storage). The consent manager mirrors the contents of the
c15tcookie into local storage under the keyc15t, so your choice survives a cookie-only clear.
We do not use pixel tags, web beacons, or tracking images — in the site or in email.
Third parties whose code runs on our pages
- Consent management (c15t). The consent banner is provided by c15t. It runs in your browser and records your choice in the first-party
c15tcookie described above. - Google / Firebase Authentication. Signing in opens a Google sign-in window. Google sets its own cookies on Google's domains during that flow, governed by the Google Privacy Policy. We do not set or read them.
- Stripe. Stripe's JavaScript loads on one page — the billing settings page inside the signed-in console — so that you can add a payment method without card details ever reaching our servers. Stripe sets its own fraud-prevention cookies there, described in the Stripe Privacy Policy. Stripe's code does not run on any public page of this site.
Our fonts are self-hosted at build time, so loading a page on roji.ai makes no request to a font CDN.
Managing your choices
The consent banner. It appears on your first visit and records your choice in the c15t cookie. Because we set no analytics or advertising cookies, declining the optional categories does not change what is stored — there is nothing in those categories to switch off. To bring the banner back, delete the c15t cookie for roji.ai.
Our Record of Your Consent Choice
Separately from the copy stored in your browser, we keep a record on our own servers of the consent choices made on our website. We do this because we are required to be able to demonstrate that consent was obtained, and because a copy that lives only on your device — which you can clear or change at any time — cannot serve that purpose.
What the record contains:
| Field | What it is |
|---|---|
| Your choice per category | Which categories (necessary, functionality, experience, analytics/measurement, marketing) you granted and which you declined — the full choice, not simply "accepted" |
| Policy version | The version of this Cookie Policy that was in force when you chose, so it is always clear what you were told |
| Time | The date and time the choice was recorded, taken from our server's clock |
| A one-way hash of your IP address | Your IP address is not stored. We store only a salted SHA-256 hash of it, from which the original address cannot be recovered. It exists so that a record can be located if you ask us about it |
| Browser user agent | The browser identification string your browser sends with every request, truncated |
| Consent identifier | If the consent tool has generated a local identifier for your browser, it is stored so that a later change can be linked to an earlier choice |
| Account details | Only if you happened to be signed in at the time. Most consent choices are made before any account exists, and this field is then empty |
What the record does not contain: your IP address in readable form, the page you were on, where you came from, your location, or any identifier we created in order to recognise you again.
The record is append-only. If you change your mind, we add a new entry — we never overwrite the old one. This is deliberate: the history of your choices is the point of keeping the record at all.
Where it is kept and for how long. The record is stored on infrastructure we operate ourselves and is not shared with any third-party consent-management provider. We retain consent records for seven years from the date of the choice, because a record of consent has to outlive the consent itself in order to evidence it.
To ask what we hold, or to raise a concern about it, contact us at privacy@roji.ai.
Your browser. Every major browser lets you inspect, delete, and block cookies:
Blocking the strictly necessary cookies will stop you from signing in. Blocking sidebar_state costs you nothing but a sidebar that forgets its width.
Do Not Track. Browsers that send a DNT header are asking not to be tracked across sites. We do not track anyone across sites, with or without the header, so there is no behaviour for it to change.
Changes to this policy
We update this page when the cookies change, not on a schedule. The "Last updated" date at the top is the date of the most recent change.
Contact
ROJI Inc. Email: privacy@roji.ai Website: https://roji.ai