Last updated

Privacy Policy

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.

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 anything that identifies them.

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 lives only in memory and expires after 48 hours. It is never written to disk.
  • Once the salt rotates at midnight UTC, yesterday’s hashes cannot be recomputed by anybody, including us.
  • The raw IP address and user agent are never stored. Only the hash is.

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. 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.

Who else touches your data

We keep this list short on purpose, and it is the whole list.

  • Google — sign-in only. We receive your email, name and verification status.
  • 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.

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 devicornofficial@gmail.com and we will answer within 30 days.

See also the Terms of Service.