SEOBetter GEO Score extension: Privacy Policy
This policy covers the SEOBetter GEO Score browser extension for Chrome and Firefox, published by SEOBetter (“we”, “us”). The SEOBetter WordPress plugin, the SEOBetter Cloud API and this website are covered by the separate SEOBetter Privacy Policy.
It is written to be checked, not just believed. Everything below describes what the shipped extension actually does.
1. The short version
- The score is calculated inside your browser. Switch your network off and the extension still scores a page.
- Nothing reaches us until you accept the consent screen. If you choose “Score without sharing”, nothing is ever sent, nothing is held back to send later, and you are not even asked for an email address.
- You can change that answer whenever you like, from Privacy and data at the bottom of the popup. It takes effect at once.
- We never receive the text of any page you look at.
- We do not sell your data, we run no advertising, and the extension carries no third-party analytics or trackers.
2. What happens when you click the icon
The extension does nothing at all until you click its toolbar button. When you do, and only for the tab you clicked from:
- It reads the page in that tab: the main article text, the headings, any JSON-LD schema blocks, the
generatormeta tag, therobotsmeta tag, and the page address and language. - It requests four files from the same site you are already on:
/robots.txt,/llms.txt,/wp-json/and/wp-json/seobetter/v1/. These tell the popup which AI crawlers the site blocks and whether it runs WordPress with SEOBetter already installed. They are sent without cookies or credentials, and they go to that site, not to us. - All of that stays in your browser. The scoring runs in the popup.
The extension asks for three browser permissions and no more: activeTab (read the page you clicked on, for that click only), scripting (run the reader inside that page) and storage (keep the small local record described in section 5). It has no permission to read any site you have not clicked on.
3. What we collect, and only with your consent
While sharing is on, which means you accepted the consent screen and have not since turned it off, the extension sends us the following. On Firefox, “on” also requires the browser’s own data collection permission: refusing that prompt, or taking the permission back later, counts as a no whichever button you pressed on our screen.
- A random install id. A UUID generated by your browser the first time the popup opens. It is not derived from your browser, your profile, your hardware, your account or anything about you, and on its own it identifies nobody. One exception, spelled out because it is the only link we make: if you give us your email address, we attach that install’s summary numbers to your mailing-list entry (how many pages have been scored, the last and average score, whether WordPress and SEOBetter were seen), so from that moment the two are connected.
- Which build you are running: the word
chromeorfirefox, sent as a request header, so that an email subscription lands on the right list. - For each page you choose to score: the host name and the path of its address (no query string, no fragment, and the path cut at 200 characters), the score out of 100, the page’s two-letter language, whether the site runs WordPress, whether SEOBetter is already installed on it, whether the page asks search engines not to index it, which AI crawlers the site’s robots.txt blocks, which schema types are missing, and whether the page was too long to score whole.
- Which of the three funnel buttons you press: only which one it was (the plugin, the move-to-WordPress page, or the already-installed state). Not where it took you afterwards.
- That you accepted the consent screen, with the version number of the text you accepted, plus two first-run markers (one of which repeats which browser build it is). These are counted once, when you accept.
- Your email address, only if you type it in. The “Send me this” box is optional, skippable and never gates the score, and it is shown only while sharing is on: someone who chose “Score without sharing” never sees it, and the send refuses even if it is reached some other way. If you do use it, the report on your screen is sent with your address so we can email it to you: the address of that one page cut back to its site and path with any query string dropped, its title, the score and grade, the six score bars shown in the popup, the three fixes, and the crawler sentence. We send you that one report. Your address also goes on the extension mailing list, so we may write to you about SEOBetter afterwards, and every one of those emails carries a one-click unsubscribe link.
That is the whole list. Nothing else about you or about the page is put into the request; section 7 covers what a web request carries by itself.
4. What we never collect
- The text or HTML of any page. The scorer runs in the popup, so page content never leaves your browser. What we receive is the address, the numbers and the flags above.
- Cookies, logins, passwords, payment details or anything you type into a page.
- Anything about browsing you did not ask us to score. There is no background scanning, no reading of your history, no list of tabs, no record of pages you merely visited.
- Anything at all before the consent screen is answered, or while sharing is off. Events waiting to be sent are discarded rather than saved for a later yes, and while sharing is off the email box is not shown at all.
5. What stays on your own computer
The extension keeps a small record in the browser’s own extension storage, which we cannot read:
- the random install id;
- your consent answer and the version of the consent text you answered;
- whether you have been asked for an email, and the address if you gave one;
- the last 20 pages you scored: address, title, score and time;
- any events that could not be sent yet, so a popup closing mid-request does not lose them. This one is written only while sharing is on, and turning sharing off empties it.
The 20-page history is never sent to us. Everything in this list is deleted when you remove the extension.
6. When events are sent
Events are collected in the popup and posted in one batch, at most 50 at a time: after a page is scored, when you press one of the funnel buttons, and when a report is emailed. There is no timer and no background activity; a batch goes out because you did one of those three things.
If we cannot be reached, the batch is kept and tried again the next time you open the popup, which means it is written to the browser’s extension storage in the meantime. That only ever happens while sharing is on, and turning sharing off empties what is waiting instead of sending it. A request already under way is allowed to finish even if the popup closes behind it, which is what stops a click on a funnel button from being lost.
From the popup, the only address the extension is allowed to contact is https://api.seobetter.com. That is enforced by the extension’s own content security policy in its manifest, so it cannot reach anywhere else even by accident. The four file requests in section 2 are made by the reader running inside the page you are on, and go to that page’s own site.
7. Where the data goes
- SEOBetter’s own cloud API at
api.seobetter.com, hosted on Vercel. Vercel is our hosting processor. - Upstash (a hosted Redis service) is our data store. It holds the daily counters, the per-install summary, short-lived markers that stop a retried batch being counted twice or a report being emailed twice, and a copy of the mailing-list addresses.
- Mailgun sends the report and holds the extension mailing list.
Your IP address reaches our server with the request, as it does with any web request. We use it only to count requests per hour so the endpoint cannot be flooded. The counter is stored under a short hash of the address rather than the address itself, and it expires within the hour. We do not keep an IP log of your scoring.
The address of a page you scored is used to update the counters and is then discarded: it is not written to our database. Our server logs record errors, not request bodies.
8. How long we keep it
- Daily aggregate counters: kept indefinitely. These are plain totals for a date (how many pages were scored, how many buttons were pressed, the sum of the scores) and contain no addresses and no page addresses.
- The per-install summary, keyed by the random install id (which browser, first seen, last seen, how many pages scored, the total and the last score, whether WordPress was seen, whether SEOBetter was seen, the consent version you accepted, and whether an email was given): 180 days after the last time it was updated, then deleted automatically by the store. It holds no page addresses.
- Your email address: on the extension mailing list at Mailgun, and mirrored in our own store. Unsubscribing stops the mail at once, but it works by adding you to a do-not-email list rather than by erasing the entry, because that list is how we remember to keep honouring the request. Ask us and we will delete the address outright.
- Short-lived markers: a fingerprint of a sent batch and a hash of an address that has already been sent a report, both for 24 hours, so a retry cannot double-count or double-send.
9. Consent, and how to take it back
The consent screen is shown once, before the first score. On Firefox the browser’s own data collection prompt is shown on top of it; declining that prompt is treated exactly like pressing “Score without sharing”, and the same prompt comes back, with the same effect, if you later switch sharing on again. If we change the consent text, the screen is shown again and your previous answer stops counting.
You can stop sharing at any time, and the quickest way is the first:
- Open “Privacy and data” in the popup and press Turn sharing off. The link sits at the bottom of the score, and on any screen where there is no score to show. The screen tells you which way it is currently set, the change takes effect immediately, and anything the extension was still holding to send is thrown away rather than sent. From that moment nothing further leaves your browser, and the email box stops being offered. The same screen turns sharing back on if you change your mind.
- On Firefox, take the data permission back in the browser’s own add-ons settings. The extension asks Firefox whether it still holds that permission before every single send, so withdrawing it there stops the sending on its own, without the extension having to be told.
- Remove the extension. That deletes the install id, your consent answer, your local score history and anything still waiting to be sent, and nothing further goes out. Installing it again asks you from scratch, with a new random install id.
- Use the unsubscribe link at the bottom of any email we send. It works in one click, with no confirmation page, and stops the email on its own. Turning sharing off in the popup stops further collection but does not by itself take you off the mailing list, so if you gave us an address, use this as well.
- Write to us at hello@seobetter.com and we will delete everything we hold for your email address. Section 10 explains why that address is the only handle we can look anything up by.
Scoring never depends on any of this. The scorer is the same whether sharing is on or off.
10. Your rights
You can ask us what we hold for an install id or an email address, ask for it to be corrected, ask for it to be deleted, or object to it being processed. Write to privacy@seobetter.com for a formal GDPR or CCPA request, or to hello@seobetter.com for anything else.
One practical note. The install id is random, it is not shown anywhere in the extension, and we hold nothing else that would let us match it to you, so the only handle we can look you up by is an email address you gave us. If you never gave one, we have nothing that identifies you: removing the extension stops anything further, the summary stored under that random id expires on its own within 180 days, and what it fed into is a plain daily total with nothing personal in it.
11. Children
SEOBetter is a tool for people who publish websites. The extension is not directed at children and we do not knowingly collect anything from anyone under 18.
12. Changes to this policy
The “Last updated” date at the top changes whenever this page does. A change to what the extension collects also bumps the consent version, which means the consent screen is shown again before anything is collected under the new terms.
13. Contact
Email: hello@seobetter.com
Privacy requests: privacy@seobetter.com