Analytics
Consent rates and records
Less data, the same proof.
Kukie.io stores consent records in the European Union, keeps keyed hashes instead of IP addresses and user agents, and deletes each record when your retention period ends.
Why it matters
A consent platform runs on every page, sees every visitor and records each choice. That is a fair trade only if you can say what it holds.
"Who else sees our visitors?" comes from a client, a procurement team, a new data protection officer or a security questionnaire attached to a contract you want to sign. "It is a cookie banner, it does not collect anything" is not a specific answer.
A record of processing activities asks what data you hold, why, where it sits and how long you keep it. Your consent log is one of those entries, and your consent platform appears by name in the list of processors.
A consent log built without care becomes a table of IP addresses, browser fingerprints and page histories: new personal data whose only job was to show you were careful with personal data.
In the regulation's terms, you are the controller and your consent platform is a processor acting on your instructions. The duty to explain the arrangement stays with you, and this page sets out what Kukie.io holds so the rest is yours to work out.
The consent record
When a visitor answers your banner, one row is written. The table lists every field in it, and nothing else about that person goes into the record.
| Field | What it contains | Why it is kept |
|---|---|---|
| The choice | Whether the visitor accepted all, rejected all or made their own choice, and which categories they allowed | It is what the log exists to show |
| Consent ID | A random identifier the visitor's browser creates for that choice, also kept in the visitor's consent cookie | Lets one decision be looked up and verified later |
| Date and time | When the banner was answered | Shows the agreement was in place before the cookies were set |
| Visitor ID | A random value the visitor's browser creates and keeps in your website's local storage | Connects a later change of mind to the original decision |
| Country | A 2-letter country code, and nothing narrower | Shows which of your region rules applied |
| IP address, hashed | A keyed one-way hash (HMAC-SHA256). The address itself is never written to the record | Tells one visitor from another without holding the address |
| User agent, hashed | The browser's identification string, hashed the same way | The same reason, and it keeps a fingerprinting surface out of the database |
| Page address | The address of the page the banner was answered on, without its query string | Shows where on your site the choice was made |
| Banner version | A number for the wording and settings in force at the time | Shows what the visitor was shown when they chose |
| Consent Mode state | Where supplied, the Google Consent Mode state the choice produced | Shows what Google's tags were told |
A consent record is written only by Kukie.io's server, from the request the banner sends. Nobody can edit one in the dashboard, including you and including Kukie.io's team: a record can be exported or deleted, and exporting or deleting needs the owner or admin role.
If you do not want records kept for a site at all, consent logging can be switched off for that site. Looking up a record by its consent ID and exporting the log are covered in consent analytics and records.
Kukie.io does not issue the visitor identifier. It is a random value the visitor's own browser creates and keeps in your website's local storage, so it means nothing anywhere else and does not follow a person from your site to anyone else's.
That is why the consent log answers "did this visitor agree, and to what" and cannot answer "where else has this person been". A consent platform has no business answering the second question.
Kukie.io's technical server logs, which include IP addresses, are typically kept for no longer than 90 days, unless a security investigation or a legal proceeding needs them for longer, as the Privacy Policy sets out.
Hashing
It is the decision with the biggest effect on your visitors' privacy, and the one people question most, because storing the address would sometimes be convenient.
A hash is a one-way calculation. The same value always gives the same result, which is what makes it useful, but you cannot run the calculation backwards to recover the original.
Applied to an IP address without a key, that guarantee is weaker than it sounds. There are only about 4 billion IPv4 addresses, and a computer can hash every one of them and build a lookup table. Kukie.io mixes a secret key, held outside the database, into the calculation. Without the key, trying every address gets you nowhere.
The user agent, the text your browser sends to describe itself, gets the same treatment for the same reason. In full it is one of the most useful ingredients in browser fingerprinting, and a consent log never needs it in full.
If someone gives you an address and asks which consents came from it, no query can answer, and nobody at Kukie.io can answer it either. The same goes for the browser string: you cannot break consent rates down by browser version, because that data is not there.
Those are real capabilities, and giving them up is the price. It is better to name the price than to pretend the choice was free.
The same input always gives the same output, so records from the same visitor still match each other, duplicates still collapse and a decision can still be shown to have existed at a given moment under a given banner version.
What is gone is the part that identified a person. An IP address is personal data on its own, so a database of them is a liability that grows with your traffic. Keeping less is the most reliable way to lose less.
Hashing makes the record pseudonymous, not anonymous. European supervisory authorities generally treat pseudonymised data as personal data, so your consent log still belongs in your record of processing activities. Hashing lowers the risk. It does not take the log out of scope.
Location and retention
Every vendor review asks where consent data lives and how long it stays. Together, the answers cover much of your own paperwork.
The servers that hold your consent log are in the European Union. Visitors' browsers reach them through Cloudflare's network, and error reports go to Sentry's EU data region. Both companies are based in the US, so the Data Processing Agreement names them with the safeguards that cover them.
A visitor's country comes from the header Cloudflare adds to each request or, failing that, from a geolocation database on Kukie.io's own servers. No IP address is sent to a separate geolocation service. Every sub-processor is in the sub-processor list in section 6.1 of our Privacy Policy.
You set how long consent records are kept for each site in Site Settings, within a maximum that depends on your plan. A scheduled job deletes records once they pass that window, so the platform enforces retention and you do not have to remember it.
A retention limit is usually read as a plan restriction. Read the other way round, it is a data protection control. The pricing page shows the limit of each plan. Choose the shortest period that still covers what you might need to show.
Security measures
Careful handling of the data is undone by a careless platform around it. These are the measures the Data Processing Agreement commits to, layer by layer.
Every request travels over HTTPS. Cloudflare's network absorbs floods and serves each site's banner script from the edge.
The consent endpoint has to be open to browsers, so rate limits keep invented records out of your log. Code you paste is cleaned when saved, but a script tag still runs as pasted, so paste only code you trust.
Two-factor authentication is available to every account, with recovery codes. Exporting or deleting consent records needs the owner or admin role.
A consent record can be exported or deleted, never changed. Every organisation's data is kept apart, and that separation is covered by automated tests.
The audit log records sign-ins, administrative actions, deletions of consent records, exports of one visitor's records and the start of every support session. It is Kukie.io's own record, not a dashboard feature.
The full list is Annex II of the Data Processing Agreement. Turn two-factor authentication on: it is not forced on any account, and the sign-in is where one reused password would put every consent record you hold behind a single guess.
Certifications
You have seen the strip: a line of logos, a shield, a percentage. We have left it out, because we would have to put something there we cannot stand behind.
What we can show you is the design, and the design is this page. You can hold us to each point and quote it in your own documentation.
If your procurement process needs a specific document before you sign, ask at the start, not after you have moved your sites. The Data Processing Agreement is already published, so that one needs no request. A straight answer about what exists is more useful than a badge, and quicker to get.
Who asks
Most site owners never think about where their consent log lives, and for a small site that is reasonable. These are the situations where someone asks.
Choosing a consent tool for a client means choosing a sub-processor on their behalf, and they may have to name it. Handing over one page is quicker than writing an email per client.
Managing the sites themselves is covered on the agencies and teams page.
Vendor security reviews ask about every third party with access to customer data, and a consent banner qualifies. "Stored in the EU, IP addresses hashed, retention enforced" answers 3 questions on that form in one sentence.
On a health site, a legal advice site, a charity or a public body, the fact that someone visited at all can be the sensitive part. Not holding an address or a browser fingerprint against each visit matters most here.
A record of processing activities needs categories of data, purposes, locations and retention periods for each processor. The table on this page is the consent log entry, close to ready to copy across.
Hashed identifiers, EU storage and enforced retention come with every plan, including Free.
What Kukie.io does with the records it keeps, who in your organisation can reach them and how the banner works for every visitor.
Consent rates and records
Many sites, scoped access
Designed against WCAG 2.2 AA
Background reading on processors, processing records and moving personal data across borders.
Kukie.io provides tools to collect and record consent. It is not legal advice, and using it does not by itself make a website compliant with any law.