The cookie table
The cookie table is the list of cookies your site sets, shown to a visitor who opens the settings panel:
one row per cookie, under the category it belongs to. It is one of three files; the
settings file holds how the banner behaves and the
language pack holds the words. It is optional, and an empty array []
is a valid start.
List every cookie your site really sets, including Consentio’s own. The table is what a visitor reads before deciding, so a name in it that your site does not set is a false statement about your own site, and a cookie you do set but leave out is the one that matters. Open the browser’s storage inspector on a page where you have accepted everything, and write down what is actually there. The cookie catalogue has rows in this shape for the tools a site commonly runs: tick the ones you set and it hands back this file for the HTML route, or a variable for the Tag Manager route — then check every row against the vendor.
📄 A complete example
A flat array. Each entry is one row.
[
{
"name": "consentio",
"purpose": "Stores the answer you gave to this banner, so you are not asked again on every page.",
"provenance": "This site",
"duration": "90 days",
"category": "strictly_necessary"
},
{
"name": "_ga",
"purpose": "Tells Google Analytics one visitor apart from another.",
"provenance": "Google",
"duration": "2 years",
"category": "statistics_performance"
}
]
🍪 The keys of a row
All five are strings. Four are shown to the visitor exactly as written — nothing parses duration or
provenance — and the fifth decides where.
| Key | What it holds | Shown under |
|---|---|---|
name |
The cookie’s name as it appears in the browser | cookieTableHeaderName |
purpose |
What it is for, in words a visitor can read. It is the column they stop on | cookieTableHeaderPurpose |
provenance |
Who sets it — your site, or the name of the third party that does | cookieTableHeaderProvenance |
duration |
How long it lasts. Session if it goes when the browser closes |
cookieTableHeaderDuration |
category |
Which of the four categories the row appears under — see below | not shown |
The four column headings are words, so they live in the language pack.
📋 How a row finds its category
category is matched, spelled exactly, against one of the four keys: strictly_necessary,
preferences_functionality, statistics_performance or marketing_advertising. A row whose category
matches nothing is never shown, and nothing says so. The four are fixed, and
Settings says why.
🚀 On the HTML route
data-cookies-url on the loader tag names the file — /data/consentio-cookies.json in the install steps,
but any address your site serves. Leave the attribute out and the panel shows no table.
🏷️ On the Tag Manager route
The tag’s Cookie table picker takes the same file, two ways:
- A Custom JavaScript variable returning the array,
function () { return [ ... ]; }— what the catalogue’s Copy as Tag Manager variable gives you. This is the usual way; the variable editor is a code box. - A Constant variable holding the JSON text above, pasted in whole. The tag parses it. Its field is one line, so the file cannot be read in it.
Left at None, the panel shows no table. The tag has the detail.
⚠️ When the file is missing or wrong
- No
data-cookies-url, or the variable left at None: every category’s table is empty, and nothing is said. That is what “not configured yet” looks like. - The file does not load: the banner starts with empty tables, and the console names the address:
the cookie table did not load, so the settings panel shows no table. - The file is not an array: an object, say. It is treated as no table. On the HTML route nothing is
said; the tag says
the Cookie table is not a JSON array, so the settings panel shows no tablein preview mode. - Every row’s
categorymatches none of the four: the file loaded and the tables are still empty. Troubleshooting is the page for that symptom.
Declaring a cookie does not stop the script that sets it. Hold a script until consent is how the script waits for the category the row names.