Last updated: August 21, 2026
A cookie is a small file a website asks your browser to keep and sends back on later requests. It is not the only way a site can store something on your device, and it is not the one NewWave Fluent uses.
NewWave Fluent does not set any cookies of its own. The only cookies you will find on this domain are placed by Stripe’s script, and only once you have entered a payment flow — see Payment provider storage below. If you never start a payment, you should find no cookies here at all. What we keep on your device is held in two browser storage areas:
Third parties are different. If you allow External Media, if you allow Visitor analytics, or when our payment provider’s code loads, those companies can set their own cookies and storage under their own terms, which we do not control. Of the three, only the payment provider sets cookies; the analytics provider uses localStorage, and the sentence above stays true either way.
European rules on cookies apply to storing or reading information on your device generally, not only to files literally called cookies, so everything below is listed whichever mechanism it uses.
This is the complete list of items we write to your device. It does not cover storage placed by third-party code — Stripe’s, an External Media provider’s once you allow one, or Apollo’s once you allow Visitor analytics — because those are set by them, under their terms; all three are described further down. Where a name contains <project>, the real key contains our database project identifier in that position.
nwf_cookie_consentStored in: localStorage
Records your two optional privacy decisions — External Media and Visitor analytics — the version of the choice you were shown, and when you made it, so we do not ask again, so every part of the site honours the same answer, and so we can ask again if the choices themselves change.
How long: Until you clear it or your browser storage is cleared.
Category: Necessary
sb-<project>-auth-tokenStored in: localStorage
Your signed-in session. Holds the access and refresh tokens and the account details they carry, including your user identifier and email address.
How long: Removed when you sign out. The tokens inside it expire and are replaced automatically while you keep using the site.
Category: Necessary
sb-<project>-auth-token-code-verifierStored in: localStorage
A one-time value that proves a sign-in you started in this browser is the one coming back from the identity provider.
How long: Removed as soon as the sign-in completes.
Category: Necessary
nwf_browser_sessionStored in: sessionStorage
Marks that a session was actually established in this browser session. A stored session that appears without this marker is signed out rather than silently restored.
How long: Until the tab is closed.
Category: Necessary
nwf_post_auth_redirectStored in: sessionStorage
The page inside NewWave Fluent you were heading for when you were asked to sign in, so you land there afterwards. Only internal paths are accepted.
How long: Removed as soon as it is used; otherwise until the tab is closed.
Category: Necessary
nwf_bannedStored in: sessionStorage
Carries the reason for a forced sign-out to the login page so it can explain that the account is blocked.
How long: Removed as soon as it is shown; otherwise until the tab is closed.
Category: Necessary
nwf-build-idStored in: localStorage
The version of the site your browser last loaded. If a newer version has been published, we reload once so you are not left on stale code.
How long: Until you clear it; overwritten by each new version.
Category: Necessary
nwf-build-reload-atStored in: localStorage
The time of the last such reload. It enforces a short cooldown so a slow update can never put the page into a reload loop.
How long: Until you clear it; overwritten by each reload.
Category: Necessary
nwf_error_logStored in: localStorage
A last-resort copy of technical error reports, written only when sending them to our database fails. Holds a truncated error message, stack trace, page address and browser user-agent — no account identifier.
How long: Keeps the most recent 50 entries until you clear it.
Category: Necessary
nwf_placement_testStored in: localStorage
Your placement test result and answers, kept so that taking the test before creating an account does not lose your result.
How long: Removed once the result is saved to your account.
Category: Necessary
nwf-themeStored in: localStorage
Whether you chose light, dark or automatic appearance.
How long: Until you clear it.
Category: Functional preference
nwf-reduce-motionStored in: localStorage
Whether you turned on reduced motion.
How long: Until you clear it.
Category: Functional preference
nwf-high-contrastStored in: localStorage
Whether you turned on high contrast.
How long: Until you clear it.
Category: Functional preference
nwf:lastActiveLanguageStored in: localStorage
The code of the learning language you last had active. Written when your active language is resolved; the language itself is stored on your account, not here.
How long: Until you clear it.
Category: Functional preference
nwf.visibility.profile_attributionStored in: sessionStorage
When you open a profile from a community post, this remembers which post and author it was, so the activity record for that visit can note where it came from. Identifiers and a public language name only — never post text.
How long: Expires 30 minutes after it is written, and in any case when the tab is closed.
Category: Product measurement
| Name | Stored in | What it is for | How long it stays | Category |
|---|---|---|---|---|
nwf_cookie_consent | localStorage | Records your two optional privacy decisions — External Media and Visitor analytics — the version of the choice you were shown, and when you made it, so we do not ask again, so every part of the site honours the same answer, and so we can ask again if the choices themselves change. | Until you clear it or your browser storage is cleared. | Necessary |
sb-<project>-auth-token | localStorage | Your signed-in session. Holds the access and refresh tokens and the account details they carry, including your user identifier and email address. | Removed when you sign out. The tokens inside it expire and are replaced automatically while you keep using the site. | Necessary |
sb-<project>-auth-token-code-verifier | localStorage | A one-time value that proves a sign-in you started in this browser is the one coming back from the identity provider. | Removed as soon as the sign-in completes. | Necessary |
nwf_browser_session | sessionStorage | Marks that a session was actually established in this browser session. A stored session that appears without this marker is signed out rather than silently restored. | Until the tab is closed. | Necessary |
nwf_post_auth_redirect | sessionStorage | The page inside NewWave Fluent you were heading for when you were asked to sign in, so you land there afterwards. Only internal paths are accepted. | Removed as soon as it is used; otherwise until the tab is closed. | Necessary |
nwf_banned | sessionStorage | Carries the reason for a forced sign-out to the login page so it can explain that the account is blocked. | Removed as soon as it is shown; otherwise until the tab is closed. | Necessary |
nwf-build-id | localStorage | The version of the site your browser last loaded. If a newer version has been published, we reload once so you are not left on stale code. | Until you clear it; overwritten by each new version. | Necessary |
nwf-build-reload-at | localStorage | The time of the last such reload. It enforces a short cooldown so a slow update can never put the page into a reload loop. | Until you clear it; overwritten by each reload. | Necessary |
nwf_error_log | localStorage | A last-resort copy of technical error reports, written only when sending them to our database fails. Holds a truncated error message, stack trace, page address and browser user-agent — no account identifier. | Keeps the most recent 50 entries until you clear it. | Necessary |
nwf_placement_test | localStorage | Your placement test result and answers, kept so that taking the test before creating an account does not lose your result. | Removed once the result is saved to your account. | Necessary |
nwf-theme | localStorage | Whether you chose light, dark or automatic appearance. | Until you clear it. | Functional preference |
nwf-reduce-motion | localStorage | Whether you turned on reduced motion. | Until you clear it. | Functional preference |
nwf-high-contrast | localStorage | Whether you turned on high contrast. | Until you clear it. | Functional preference |
nwf:lastActiveLanguage | localStorage | The code of the learning language you last had active. Written when your active language is resolved; the language itself is stored on your account, not here. | Until you clear it. | Functional preference |
nwf.visibility.profile_attribution | sessionStorage | When you open a profile from a community post, this remembers which post and author it was, so the activity record for that visit can note where it came from. Identifiers and a public language name only — never post text. | Expires 30 minutes after it is written, and in any case when the tab is closed. | Product measurement |
Necessary items are what the service you asked for needs in order to work at all: staying signed in, protecting that sign-in, remembering your privacy answer, returning you to the right page, serving up-to-date code, and not losing a placement test you were part-way through.
Functional preference items exist only because you actively chose that setting. They record the setting itself and nothing else.
Product measurement covers the one session-only record that is neither: it links a profile visit back to the community post it came from, so the activity record described below can carry that context. It is not shared with anyone, is limited to identifiers, and disappears after 30 minutes or when you close the tab.
www.youtube-nocookie.com, player.vimeo.com, www.instagram.com, www.tiktok.com or platform.twitter.com. We do not run any of those platforms’ scripts on NewWave Fluent pages; the frame is requested, and everything inside it is theirs.nwf_cookie_consent above and applies until you change it.We asked everyone again in August 2026. Until then this choice covered only YouTube and Vimeo, and this page said that Instagram, TikTok and X would not be embedded. Adding those three changes who your browser may contact, so permission given under the old description is not carried forward — not even a “yes”. The stored record carries a version number for exactly this purpose, and anything older is treated as no answer at all: the banner appears once more, and nothing loads from any of the five platforms until you answer it.
And we asked again after that, for a different reason. The record is now at version 4, because we added a second optional choice — Visitor analytics, described in the next section. Everyone who had answered the External Media question was asked again rather than having that answer carried across, since it was given while this site said it used no third-party analytics service at all. Until you answer the new version of the question, nothing loads from any of the five platforms and nothing is sent to the analytics provider.
Changing your mind. The banner is the first decision and only the first decision — once you have answered it, it does not come back. From then on the only place that can turn External Media off is Settings → Privacy, under “Privacy & external media”. There is no cookie control in any footer, menu or page corner. One button elsewhere writes the same setting in the other direction — a blocked embed’s Always allow external media, described below under Managing Storage Yourself. It grants; it never withdraws. Settings needs an account, so a signed-out visitor who has already answered must sign in to change it, or clear this site’s stored data in their browser, which makes the banner ask again. Turning it off stops new embeds loading and removes embeds that are on screen; it cannot undo what a platform already received.
Nothing in this section happens unless you turn Visitor analytics on. It is off for everyone by default, including everyone who has never answered the banner.
If you do turn it on, we load a script from assets.apollo.io, belonging to Apollo, a business-intelligence company in the United States. Its purpose is to tell us which companies visit NewWave Fluent, so we know whether schools and employers are finding us. It sends what it records to aplo-evnt.com, which is also Apollo’s.
Each time you open a page, it sends Apollo:
It does not receive your name, your email address, your account, your lessons, your messages, or anything you write on NewWave Fluent. It cannot read the rest of the page.
What it keeps in your browser. Apollo uses localStorage, not cookies. It writes apolloAnonId, the random identifier, which has no expiry date and would otherwise stay until you clear this site’s data; plus <app>_eventQueue and <app>_canTrack, which are its own working state. These are set by Apollo’s code, under Apollo’s terms — see Apollo’s privacy policy.
One thing we deliberately stop it doing. Apollo’s script tries to load a second script from a different company, d-code.liadm.com (LiveIntent), whose job is to work out a hashed version of your email address from your activity across other websites and attach it to everything Apollo is told about you. We do not want that and we do not allow it: the address is not on this site’s list of permitted script sources, so your browser refuses to load it. The email fields Apollo would otherwise fill in are empty on every request. This is enforced by the site’s content security policy, not by a setting in Apollo’s dashboard, so it does not depend on Apollo’s cooperation.
Changing your mind. Signed in, the switch is Settings → Privacy, under “Visitor analytics”. Turning it off stops any further information leaving the page and deletes the identifier Apollo stored in your browser. Two things it cannot do, and we would rather name them: it cannot recall what Apollo has already been sent, and a page that is already open keeps a listener Apollo installed until you reload or navigate — that listener is silenced and sends nothing, but it is still there. Reloading the page removes it.
We use Stripe to take payments, and Stripe’s browser library is loaded from js.stripe.com. Stripe describes it as using essential cookies to make the site work, to detect and prevent fraud, and to understand how people interact with Stripe.
That library loads only when you enter a payment flow — when you open checkout or reach a payment screen. It does not load while you browse the site, read this page, or look at prices. We checked this page in a browser with a clean profile: no request to js.stripe.com, no Stripe frame, and no cookies at all.
When you do start a payment, Stripe’s library loads and places two cookies on this domain — __stripe_mid and __stripe_sid — as well as storage on its own m.stripe.com domain, and it adds frames of its own. We observed all of this in the payment screen.
Those cookies are Stripe’s, not ours. We are not going to state a purpose or a lifetime for them that Stripe has not published; for what Stripe stores and for how long, see Stripe’s cookie policy and Stripe’s privacy policy.
This used to be worse, and we would rather say so than quietly improve it. Until August 2026 the Stripe library was pulled in by the way our code was bundled, so it loaded on every page — including this one — and set those cookies before anyone had gone near a payment. That is fixed: the payment code is now loaded only by the payment screens themselves.
Separately, our typefaces are served by us, from this website. Your browser does not contact Google Fonts or any other font service to display text on NewWave Fluent, so no IP address goes to a third party for that.
This also used to be worse. Until August 2026 the typefaces were requested from fonts.googleapis.com and fonts.gstatic.com on every page, which meant Google received your IP address and browser information simply because you were reading the site. The fonts are now bundled with the site and served from our own domain.
While you are signed in, NewWave Fluent writes structured records of how you use the product — lessons started, a profile opened, a booking step reached — into our own database. They are not cookies, they are not localStorage, and they are not stored on your device at all, which is why they are not in the table above.
They are also not anonymous: each record is kept against your account. We do not use a third-party analytics service and we do not send this data to an advertising network. Section 7 of the Privacy Policy sets out which event families exist and exactly which fields they carry.
Signed-out visitors generate no such records.
Questions about anything on this page? Email team@newwavefluent.com. See also our Privacy Policy.