Cookies and tracking
For most of this site’s life, this page opened by saying you had never seen a cookie banner on Bowerstead. That changed on 8 September 2026. We started running search ads, and measuring whether an advert actually brings anyone here means letting Google set a cookie on your device. Since October 2026 we run adverts on Facebook and Instagram too, and Meta does the same. Also since October 2026, a third measurement watches how the website is used, from the home page to the inside of your account, so we can see where people get stuck and what they actually use. Those three are the only things we have ever run that store something for our benefit rather than yours. This page is the full accounting: the three cookies the site needs to work, the two measurements that store nothing at all, the one that does, and the two advertising tags, including who we ask first and who we don’t.
What we set
A sign-in cookie. When you sign in, our authentication provider (Supabase) sets a cookie that keeps you signed in and gets refreshed as you move around. Without it you’d be signed out on every page. It’s read by us and nobody else, and it disappears when you sign out.
A currency cookie, named bw_currency. So that a visitor in London sees pounds rather than dollars, we look at the country our host reports for your connection, once, and store the resulting currency code for 30 days. That is the whole contents: three letters, like gbp. It holds no identifier and no history, we never send it anywhere, and the setting at the bottom of our homepage overwrites it whenever you disagree with the guess. It is also what decides the currency you are charged in, which is why it is a cookie and not a guess made fresh on every page.
A country cookie, named bw_country. Written at the same moment, holding the two-letter country code from that same lookup, like GB. It exists for one reason: so the footer can tell you which country your prices were chosen for, instead of leaving you to guess why you are seeing euros. Nothing else reads it, and it has no say in what you are charged.
A sign-in check, named bw_oauth_google or bw_oauth_apple. Only if you choose Continue with Google or Continue with Apple. It holds the random values that prove the answer Google or Apple sends back was meant for this browser, so nobody else’s sign-in can finish in yours. It lasts ten minutes at most and is deleted as soon as you’re back. Apple’s answer waits in one more, bw_oauth_apple_return, for two minutes at most.
A measurement cookie, named ph_…_posthog. On the website only: the home page, creating an account, setting up, choosing a plan, the page after paying, and the screens inside your account. Only if you are outside the EEA, the UK, and Switzerland. It holds a random code for this browser and for the current visit, with a copy in the browser’s own storage, so the steps of one visit can be read in order. Once you sign in, it also holds a code for your account that only we can match back to you, described under what we measure. It holds no name and no email, and it is set on bowerstead.com alone.
That’s the list. Three cookies that do a job you can see on the page, a short-lived fourth while you sign in with Google or Apple, and the measurement cookie.
What we don’t set
- No measurement in the phone app, and no Google Analytics. We count page views across the site, and on the website PostHog looks more closely at how it is used; the section on what we measure says exactly what each one sees. None of it runs in the iPhone or Android app.
- Two advertising tags, and never where your homeschool is. Google Ads and the Meta pixel run on our public pages so we can tell whether an advert brought anyone here. Neither is on any page that shows a child, a plan, or a record. There’s a section below on exactly what they do and who we ask before switching them on. They do let Google and Meta remember that your browser visited, so our adverts could show up for you elsewhere later, and the same section says how to turn that off.
- Three advertising cookies of our own, at most. The ones in that section are set by bowerstead.com itself. When the tags talk to Google and Meta, those companies can also use their own cookies on their own domains, which is how they remember a visit for the adverts described below. Those are theirs, and sit under your Google and Facebook settings rather than ours.
- Recordings, with your words hidden. On the website, from the home page to the screens inside your account, we record how the page moves and where you tap and scroll, so we can see where it confuses people and what gets used. Everything you type is hidden before it leaves your browser, and from creating an account onward every word on the screen is hidden too, so a recording of your planner shows boxes and taps, never a child’s name, a lesson, or a grade. Nothing is recorded in the phone app, or in the EEA, the UK, or Switzerland.
- Nothing that reads your homeschool. No measurement we take can see a child’s name, a note you wrote, a grade, or a photo. That isn’t a policy we keep to, it’s a thing the code makes impossible, and it’s the rule the whole product is built around.
This is why the banner asks about one thing and not the rest. The rules that require a consent popup are about tracking and advertising storage. A cookie that only keeps you signed in is one you’ve effectively asked for by signing in, and the two that show a price in your own money and name the country it was chosen for are the kind of preference those rules set aside as necessary to the thing you came here to do. None of them identifies you or follows you anywhere, so interrupting you to demand permission for them would be theatre. The measurements below sit outside those rules for a plainer reason: they put nothing on your device and read nothing from it. The advertising tag is the one thing here that gets neither defence, which is why it is the one thing we ask about. PostHog’s measurement stores a cookie too, and rather than ask you about that as well, we simply don’t run it in the countries where we would have to.
Things kept on your own device
Not everything stored in a browser is a cookie, and it’d be a dodge to only talk about cookies. Bowerstead also keeps a little data locally on your device, which never gets sent anywhere on its own:
- Your offline captures. If you note something with no signal, it waits in a queue on your device and syncs to your account when you’re back online.
- Your children’s first names and subjects, for Capture. So Capture can open with no signal, Bowerstead keeps your children’s first names and the names of their subjects on your device. Signing out clears them, in the phone app or a web browser, and so does deleting your account or clearing the browser’s site data.
- Your setup, until your plan starts. While you set up, Bowerstead keeps what you tell it about your children on your device and sends none of it to us: their first names and grades, their subjects, your school days and school year, and your usual week. Once your plan starts, they move into your account and leave your device. Signing out clears them, unless you started paying in the last day or they are already on their way into your account, so they can still move when you sign back in. Deleting your account clears them, and so does clearing the browser’s site data.
- Your yes to Bower and the page scanner. When you agree to send something to Anthropic, Bowerstead remembers that answer on your device, so you aren’t asked every time. It only counts for you: anyone else who signs in here is asked again.Signing out forgets it, in the phone app or a web browser, and so does deleting your account.
- Small bits of interface state, so a screen opens the way you left it.
- Your session, in the phone app. On iPhone and on Android alike, the app keeps you signed in with device storage rather than a cookie. Same job, different mechanism.
Bowerstead installs as an app, and that needs a service worker. Ours is deliberately thin: it exists so the install works, and it passes every request straight to the network without caching or reading anything.
What we measure
Three measurements run on bowerstead.com. Two are from Vercel, who host the site: neither sets a cookie, neither stores anything on your device, and neither can reach your homeschool content. The third, PostHog, looks more closely at how the website is used, and is described after them.
Vercel Speed Insights, so we know whether pages load and respond quickly. It sends the page address and timings such as loading, layout shift, and interaction speed.
Vercel Web Analytics, so we know which pages people find useful and how they got here. With each page view it records the page address, the site that linked you, the country, region, and city your connection appears to come from, and your browser, operating system, and device type. It also counts three named moments: that an account finished setting up, that someone opened the payment page, and that a report finished. Those three are counts and nothing more. Which kind of report was made, never whose, and never a word of what was in it.
PostHog, on the website, so we can see where the home page and setup lose people, and which parts of Bowerstead families actually use. On the home page, creating an account, setting up, choosing a plan, the page after paying, and the screens inside your account, it records the pages you see, how far you scroll, what you tap, and how the page moves. Everything you type is hidden in your browser before anything is sent. On the home page the page’s own words show, because they are ours. From creating an account onward every word on the screen is hidden too, and so is every label, so a recording of your planner or a child’s record shows the shape of the page and where you tapped, never what it said. It never runs in the phone app or in the EEA, the UK, or Switzerland.
Ten named moments, and nothing in them. Inside your account it also counts when a lesson is marked done or moved, a moment is saved (and whether it was a note, a photo, or a grade), a planner view is chosen (day, week, or month), a child’s record is opened, a report is made (which kind, never whose), an export starts, Bower is opened, and a contents page is scanned. In setup it counts which question you are on. Each one is a count with at most one word we chose, never a name, a lesson, a note, or a grade.
Which account, without who. PostHog never learns your name or email, because we never tell it. Once you are signed in, our server makes a code from your account with a key only we hold, and tells PostHog that code and which kind of plan you are on: paid, free, an older trial, or ended. That lets us see which families come back and what they use, on any device. PostHog cannot turn the code back into you, and nobody but us can match it to anything. Signing out tells PostHog to forget it on that device. PostHog keeps this in the United States, does not store your IP address, and deletes recordings after 30 days. It sets the measurement cookie described above.
Addresses are cleaned before they leave your browser. A page address inside your account can carry the identifier of one of your children’s records, so we replace it: a child’s records page is measured as /records/[id] and never as the real address. From the rest of the address we keep a short, fixed list and nothing else. That list is the campaign labels naming which link or advert brought you here, and one word saying whether a payment page was finished or turned away from. Everything else is dropped without being looked at, including anything you typed into a form. Sign-in links carry a live token, so they are not measured at all.
To recognise a repeat visit without a cookie, Vercel identifies a visit by a hash of the incoming request rather than by anything kept on your device, and discards it after 24 hours. Vercel states that the result is not tied to an individual or to an IP address and cannot be used to follow you to another website. The public landing and the app both serve their typefaces from Bowerstead itself; loading a page does not contact a font provider.
Advertising
We started running Google search ads in September 2026. To know whether an advert is worth paying for, Google has to be able to connect the click that brought you here to somebody later starting a subscription. That connection is made with one cookie, set by bowerstead.com and named _gcl_au, which lasts 90 days.
In October 2026 we started running adverts on Facebook and Instagram as well, and the Meta pixel does the same job for them. It sets up to two cookies on bowerstead.com, each lasting 90 days: _fbp, which lets Meta recognise this browser, and _fbc, set only if you arrived by clicking one of our adverts there, which records that click. We switched off the parts of the pixel that would watch what you click or read the page for itself, and it is never handed your email address.
They run on our public pages only. Both tags are on the pages anyone can read without an account: this one, the landing pages, the guides, the free tools. Neither is on any page inside your account. That isn’t a box we ticked in a dashboard, it’s where the code puts them, and for the same reason as everything else here. Addresses inside your account carry your children’s record identifiers, and unlike the measurements above, an advertising tag gives us no way to clean an address before it is sent. So neither is ever given the chance.
Three exceptions, and they are small ones. The page where you choose how to pay reports that an account was created, but only the first time you see it, just after creating one. The page you land on straight after finishing setup reports the same thing again, in case the first report was missed; Google keeps only one. The page you land on straight after paying reports that a payment went through. All three have a fixed address, none reports a page view, and none carries anything about you or your homeschool beyond the single fact it exists to report. Each report carries a scrambled code so the same one can’t be counted twice. The code is one-way: it means nothing to Google and nothing can be read back out of it.
The Meta pixel reports from the first and the last of those pages, on the same terms, and its report of a payment also carries the amount and the currency, because that is what an advert is judged by.
One report from our server. The page after paying moves you on within a second, and sometimes that is before the pixel has had time to send anything. So when a payment goes through, our server tells Meta about it as well, with the same scrambled code, so Meta counts it once. It sends the amount, the currency, the time, Meta’s two cookies from your browser, and your browser’s name and version, and nothing else: no name, no email address, no IP address. It does this only if Meta’s cookies were already on your browser when you paid. If you declined, or the pixel never ran, our server sends nothing either.
Who we ask. In the EEA, the UK, and Switzerland, you get a banner, and nothing is stored until you answer it. One answer covers both tags. Decline and both stay switched off, which is the whole of what declining means. If we can’t tell where you are, you get the banner too. Outside those countries we don’t ask, and we would rather write that down here than let a missing banner imply otherwise.
One page without a banner. Our home page doesn’t show one. In the countries above, both tags stay switched off there and store nothing, unless you’ve already said yes somewhere else on this site. No answer is treated as no.
Adverts elsewhere. The same tag lets Google remember that your browser visited Bowerstead, so that we could later show our adverts to past visitors on other websites and on YouTube. We don’t run adverts like that today; we’ve kept the option. Google does it with its own cookies, and it never learns your name, your email, or anything about your homeschool from us. In the countries where we ask first, it’s covered by the same banner, so declining switches it off too. Anywhere, you can turn off personalized Google adverts at myadcenter.google.com.
The Meta pixel works the same way for Facebook and Instagram: Meta can remember that your browser visited, so that we could show our adverts there to past visitors. We don’t run adverts like that today either. The same banner covers it where we ask first, and anywhere you can manage the adverts Meta shows you in your Facebook or Instagram ad preferences, at facebook.com/adpreferences.
Changed your mind? Clearing site data for bowerstead.com removes your answer along with the cookie, and you’ll be asked again.
Clearing them
Signing out clears your session. Beyond that, every browser lets you delete cookies and site data, and you can block cookies for bowerstead.com entirely. Fair warning: block the sign-in cookie and you won’t be able to stay signed in, since that’s the one doing the work.
What changed, and when
On 17 October 2026 we added PostHog to the website, from the home page to the screens inside your account. People were arriving from our adverts and leaving on the first screen or the first setup question, and counting page views could not tell us why, or which parts of Bowerstead the families who stay actually use. Until then this page said there was no session recording here, and that nothing measured the inside of your account. Both are gone, not softened. It keeps the promise below: PostHog never learns your name or email, cannot follow you to another website, and never sees a word you have written about your children, because from creating an account onward every word on the screen is hidden before anything leaves your browser. It never runs in the phone app, or where the law would have us ask first.
On 13 October 2026 we added the Meta pixel, because we started running adverts on Facebook and Instagram and an advert nobody measures is an advert nobody can justify. It runs on the same pages as the Google Ads tag and on none that show your homeschool, it follows the same banner where we ask first, and it sets up to two cookies of its own, both described above. Its report of a payment carries the amount, and our server sends that same report once more, carrying no name, email or IP address. Until this date, this page promised there was no Meta pixel here. That promise is gone, not softened.
Also on 12 October 2026, we added Continue with Google and Continue with Apple, and with them the sign-in check described above: bw_oauth_google or bw_oauth_apple, and bw_oauth_apple_return for Apple’s answer. It is set only when you use Google or Apple with Bowerstead: to sign in, to connect one in Settings, or to confirm with Apple when you delete your account. It lets the answer Google or Apple sends back finish in this browser and in no other, and it lasts only for that trip there and back: ten minutes at most, and it is deleted as soon as you return. It is strictly necessary for what you asked to do, so, like the sign-in cookie, it needs no banner.
On 12 October 2026 setup changed order. You now answer every setup question, and see your own week, before choosing a plan. Until you choose one, what you tell setup about your children stays on your device, and the list of things kept on your own device above says what clears it. The page where you choose how to pay is now the last step of setup. It still reports that an account was created only on a visit in the account’s first day, and the pages where setup asks about your children never carry the advertising tag. No new cookie is set, and nothing new about you is sent to anyone.
Also on 23 September 2026, this page stopped saying we build no advertising audience, because it wasn’t true. By default the Google Ads tag adds visitors to an audience for adverts elsewhere, we hadn’t switched that off, and this page said otherwise. We’ve decided to keep it rather than switch it off, and to say so plainly in the advertising section above.
Also on 23 September 2026, the report that an account exists moved earlier, to the page where you choose how to pay. It used to come at the end of setup, and setup only ever happens after paying, so it heard from people who had paid and never from anyone who had just arrived. Nothing new about you is sent, and no new cookie is set.
On 23 September 2026 we added the advertising tag to our home page, because our search ads are starting to send people there, and an advert that lands somewhere we can’t measure is one we can’t judge. It is the same tag, with the same consent rules, and it sets no new cookie. The home page has no banner, so in the countries where we ask first it simply stays off there until you’ve answered somewhere else.
On 20 September 2026 the advertising tag started reporting a second thing: that an account finished setting up, not only that a payment went through. It runs on one more page than it did, the one you pass through at the end of setup, and that page is built the same way as the one after payment. Nothing new about you is sent, and no new cookie is set. We added it because measuring only payments told us almost nothing: most people who set up an account never pay, and an advert we cannot measure is an advert we cannot justify.
On 8 September 2026 we added the Google Ads tag, and with it the first consent banner this site has ever shown. The promise below, made when Web Analytics arrived, was that anything which could follow you to another website would be asked about first rather than announced afterwards. In the countries whose law turns on that question, this is that promise being kept, and it is the first time keeping it has cost us anything: an advert nobody measures is an advert nobody can justify, and asking first means some of it goes unmeasured. That is the right way round. Everywhere else the tag runs without asking. That is the part of the promise we are not keeping, it was a deliberate decision rather than an oversight, and it is written into the advertising section above rather than left for you to infer.
Web Analytics went live on 31 August 2026, and this page was rewritten the same day. Until then this page said we’d ask you before adding anything that watches what you do. We didn’t ask, and you deserve the reasoning rather than a quiet edit: what we added counts pages and not people, it stores nothing on your device, and a consent box for it would have been the interruption without the protection. If you think that’s the wrong call, say so and we’ll listen.
The promise that stands is narrower and harder. Anything that could identify you, follow you to another website, or read a word you have written about your children gets asked about first, not announced afterwards. The privacy policy has the wider picture of what we store and who touches it.
Contact
Questions about any of this? Email contact@bowerstead.com.