CMSKite operates cmskite.com and api.cmskite.com. This page says what we collect and what we do with it. It is written to be checked against the product rather than to be long: every retention period below is enforced by the database itself, and every third party named is one our code really sends data to.
Updated
When you create an account
Signing in happens through Google. Google tells us your email address, your name, and that the address is verified. We never see your Google password and we ask Google for nothing else.
On the screen after that we ask what to call your workspace, and optionally a phone number. The number is optional, it is used only if you contact us about a plan, and leaving it blank changes nothing about your account.
We store your email, your name, your phone number if you gave one, the workspaces you belong to, and the times you signed in. Sessions are kept in our database so you can be signed out of them; the cookie that refreshes a session is HttpOnly and cannot be read by JavaScript.
The content you publish
Posts, categories, tags, author profiles, media and settings belong to you. We store them so the API can serve them, and we do not read them, sell them, or use them to train anything.
Deleting a post is a soft delete: the row is marked deleted, stops being served immediately, and is removed on request. Deleting a project revokes its API keys at the same moment.
If you connect your own MongoDB cluster, your content is stored there and not with us. We hold the connection details, encrypted, and nothing else about that content.
People who read your blog
This is the part most analytics tools are vague about, so it is worth being exact. CMSKite counts views and clicks for your posts, and it does so without setting a cookie on your readers and without storing their IP address or user agent.
A reader is identified for one day by a hash, not by an identifier we issue:
The hash is SHA-256 of a random daily salt, the project id, the reader’s IP address and their user agent.
The salt is kept in our Redis database, which writes it to disk so a restart does not split readers in two, and it expires after 48 hours.
Once a day’s salt has expired, that day’s hashes cannot be recomputed by anybody, including us.
The raw IP address and user agent are never stored. Only the hash is, with each reader event, for 90 days. It is pseudonymous: it stands for one reader on one site for one day.
What this costs is honest to state: two readers behind the same office network on the same browser version count as one, and the same reader counts again tomorrow. That is the price of not using a cookie, and we chose to pay it.
We also store, per event, the page path with any query string removed, the referring website’s hostname but never the full URL, and the two-letter country code if our edge provided one. Query strings are stripped because that is where campaign ids and occasionally email addresses end up.
How long things are kept
These are enforced by the database, not by a job somebody has to remember to run.
Reader events: 90 days. They include the daily hash described above. The daily and per-post totals derived from them are kept indefinitely and contain no identifiers.
API request records used for billing and rate limits: 14 days. The daily rollups built from them are the billing record and are kept.
Audit log of changes made in your workspace: 24 months.
Webhook delivery records: 90 days.
Your account and content: until you delete them or ask us to close your account.
Advertising and site analytics
cmskite.com carries the Meta pixel and Plausible Analytics. Plausible is cookieless and collects no personal data.
If you give us your email address on the landing page in exchange for the quickstart, we store that address, the block you submitted it from, and the campaign parameters in the URL you arrived with. We use it to send you what you asked for and to tell you about CMSKite. Every such email has an unsubscribe link, and you can ask us to delete the address at any time.
We also send Meta three events from our server so we can tell which advertising actually works: when somebody submits that email form, when an account is created, and when a new project’s API key is used for the first time. What we send is your email address, phone number, name and our own id for you, each hashed with SHA-256 before it leaves our servers. Meta cannot read them; it can only compare them with hashes it already has.
We deliberately do not send Meta the IP address or user agent of the server that made an API call, because that machine is not you, and telling an ad platform otherwise would be a claim we cannot stand behind.
If you would rather none of this happened, a tracker blocker stops the browser half, and asking us at the address below stops the rest.
Google Search Console data
If you connect Google Search Console to a project, we ask Google for read-only access (the webmasters.readonly permission) to the Search Console properties of the Google account you choose. We never change anything in your Search Console.
What we store: the property you chose, that Google account’s email address, an encrypted access token, and the search performance Google reports for the property: clicks, impressions, click-through rate and average position, per day, per page and per search query.
What we use it for: only to show you how your website performs in Google Search and to work out recommendations for it, inside your own workspace. People in your workspace with access to that project see it; nobody else does.
What we never do: sell it, use it for advertising, share it beyond what is described here, or use it to train AI models. When you ask for an AI explanation of a recommendation, or use Fix with AI on a post, the figures and search queries that request needs are sent to our AI model provider to produce that answer, and are not used to train its models.
How long it is kept: page data for 16 months and search-query data for 90 days, matching Google’s own retention. Disconnecting revokes our access at Google and deletes everything we stored from it straight away. You can also remove our access at any time from the security settings of your Google Account.
CMSKite’s use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Google Analytics data
If you connect Google Analytics to a project, we ask Google for read-only access (the analytics.readonly permission) to the Google Analytics 4 accounts and properties of the Google account you choose. We read the list of your properties so you can pick one, and then that property’s traffic reports. We never change anything in your Google Analytics.
What we store: the property you chose, its account name, time zone, currency and website hosts, that Google account’s email address, an encrypted access token, and the traffic Google reports for the property: sessions, active users, page views, engaged sessions and engagement time, per day and per page. We do not receive or store anything about individual visitors.
What we use it for: only to show you how your website’s pages perform and to work out recommendations for it, inside your own workspace. People in your workspace with access to that project see it; nobody else does.
What we never do: sell it, use it for advertising, share it beyond what is described here, or use it to train AI models. Nobody at CMSKite reads it unless you ask us to for support, it is needed for security or to comply with the law, or it has been aggregated and anonymised. When you ask for an AI explanation of a recommendation, the figures that request needs are sent to our AI model provider to produce that answer, and are not used to train its models.
How long it is kept: 16 months. Disconnecting revokes our access at Google and deletes everything we stored from it straight away. You can also remove our access at any time from the security settings of your Google Account.
CMSKite’s use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
Who else touches your data
We keep this list short on purpose, and it is the whole list.
Google — sign-in, where we receive your email, name and verification status; and, if you connect it, Search Console, as described above.
Hostinger — the servers this platform runs on, in the European Union.
MongoDB — where content and account records are stored, unless you connected your own cluster.
Object storage — where uploaded images are kept. Files go from your browser straight to storage; our API never handles the bytes.
Meta — the advertising events described above, hashed.
Plausible Analytics — page views on cmskite.com. No cookies, no personal data.
The AI model provider behind writing and fixing with AI — the text of what you ask it to work on, to produce the answer. Not used to train its models.
We do not sell data to anybody, and we do not share it with anyone not on this list.
Security
API keys are stored as HMAC-SHA256 digests with a pepper held outside the database, so a copy of the database alone does not yield a working key. A key is shown once, when it is created, and never again.
Connection strings and other secrets you give us are encrypted at rest with a key held outside the database.
Every workspace’s data is separated at the database layer rather than by a filter each query has to remember, and that separation is covered by a dedicated test suite.
Everything is served over HTTPS. We do not accept credentials over plain HTTP.
Your rights
You can ask us for a copy of what we hold about you, ask us to correct it, or ask us to delete it. Write to the address below and we will answer within 30 days.
You can delete your own content and projects from the dashboard at any time. Closing a workspace removes its content and revokes its keys.
If you are in the EU or UK, you have the rights the GDPR gives you, including the right to complain to your national data protection authority.
Children
CMSKite is a developer tool and is not directed at children. We do not knowingly collect data from anybody under 16. If you believe we have, write to us and we will delete it.
Changes to this policy
If we change what we collect or who we share it with, we will change this page and update the date at the top. Material changes will also be emailed to account holders.
Contact
Questions about this policy, or a request to see, correct or delete what we hold about you: write to cmskite.com@gmail.com and we will answer within 30 days.