What it does
One box per tool
Google Analytics, Google Tag Manager, Google Ads, Meta Pixel, Microsoft Clarity, HubSpot and Cloudflare Web Analytics. Paste the ID, or the whole code the tool gave you, and the ID is picked out of it. A wrong ID is explained in plain words.
A cookie banner that comes with the tools
A sheet across the bottom of the screen asks “Can we use cookies?” and says what each kind is for. Accept all and Reject all look exactly the same, so no answer is pushed; a quieter Choose opens switches for Analytics and Marketing, off until the visitor turns them on, with the tools listed under each. It works from the keyboard and follows light and dark. Colours: your theme’s, one of five ready-made sets with a dark version each (the same as in Popups), or your own.
Nothing before consent
No script from a tracking company is requested until the visitor allows its category. Google gets Consent Mode v2 signals; Clarity and HubSpot get the answer through their own consent settings.
Changing your mind
After an answer, a small round Cookies button in a bottom corner reopens the choice. So does any link to /#cookie-settings, such as a Cookie settings item in your footer menu or a link on your privacy page, with no code. Taking consent back tells the tools, deletes their cookies and reloads the page without them.
Who is asked
Where the law says ask first (the EU, EEA, UK and Switzerland, the default), those places plus India, everyone, or no one when another consent tool asks instead. Global Privacy Control is always respected. The answer is remembered for 6 or 12 months and asked again when the list of tools changes.
Enquiries counted
Clicks on phone and email links, and forms sent through the official forms plugin, are counted as leads in Google Analytics and Meta. Only the kind of enquiry is sent, never what was typed.
Status, and proof of consent
The Status tab ticks each tool and says what it waits for, with a link to its own numbers and to Google’s Tag Assistant. It says who is asked and when the last answer came in, shows the last 30 days’ answers as a chart, and lets an admin download the consent log: one line per answer from the last 12 months, with no IP address or name.
Check what loads
One button looks at your home page and up to four more for tracking code pasted in outside the plugin, such as a second Google tag, and for videos, maps, booking boxes and social posts that set cookies before a visitor answers. Each finding comes with a plain fix.
Install
How to install a plugin on EmDash: the registry or npm
A developer adds it once, in the site’s code:
npm install @moorage/plugin-analytics// astro.config.mjs
import { analyticsPlugin } from "@moorage/plugin-analytics";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [emdash({ plugins: [analyticsPlugin()] })],
});Then open Analytics, under Marketing in the admin, and paste the IDs of the tools you use. Your theme needs nothing more than EmDash’s own head component, which every EmDash template already has.
This site uses it for Google Analytics and Microsoft Clarity. The privacy page says what that means here.
Screenshots


What it does not do
- It is not certified by Google as a consent tool and has no IAB TCF support. That matters only if you show Google ads on your own pages (AdSense, Ad Manager). Measuring your own Google Ads campaigns works.
- Installing it does not make a site GDPR compliant. The banner follows the European data protection board’s cookie banner report and the UK ICO’s guidance; what your tools do with the data is still yours to describe in your privacy policy.
- No dashboards or visitor reports: read your numbers in each tool.
- Not a full cookie scanner: Check what loads knows the common tools and embeds, not every one. No cookie wall and no consent by scrolling.
- Not yet: custom code snippets, banner text per language.
Permissions
It is a native plugin: it runs in your site’s own process, like any package your site uses, because adding scripts to pages is not something a sandboxed plugin is allowed to do. It reads none of your content; Check what loads fetches only your own site’s pages, as a visitor gets them. It keeps its settings, a record of consent answers with no IP address, and the last check’s result in your site’s database.
Questions
Is it free?
Yes, on any number of EmDash sites, with no account and no licence key. It is open source under the MIT License; the licence page says in plain words what you may do with it.
Can I use Google Tag Manager with it?
Yes. Paste your container ID in the Tag Manager box. By default the container loads only after the visitor accepts at least one category; a second setting loads it at once, for containers whose tags all wait for consent themselves.
Do I need the banner if I only use Cloudflare Web Analytics?
No. It sets no cookies, so no banner is shown.
Why does my own visit not show up?
A browser that has signed in to the EmDash admin is treated as staff and never tracked, so your numbers are your visitors’. Test in a private window.
How do I add a “Cookie settings” link?
In the admin, open Menus, edit your footer menu and add a custom link called “Cookie settings” with the URL /#cookie-settings. A link to /#cookie-settings on your privacy page works too. Clicking it opens the cookie choices on the page the visitor is on, and the small Cookies button steps aside while the link is on screen. Type the slash in front: the menu editor refuses a link that starts with #. This needs version 0.3.0 or newer.
Can I show that visitors were asked?
Yes. On the Status tab, an admin can press Download the consent log (CSV): one line per answer from the last 12 months, with the time, country, answer and a random reference kept in the visitor’s browser. It holds no IP address and no name.
Why is it not in the EmDash registry?
The registry only takes sandboxed plugins, and sandboxed plugins cannot add scripts to pages. Adding the tools and the banner is this plugin’s whole job, so it is added in code instead.
What is the line at the foot of the plugin’s page?
Only admins see it: “Help · More free plugins · by Moorage”. Help opens the plugin’s setup guide; editors never see the line. To hide it, switch on “Hide the help line at the foot of this page” at the bottom of the Advanced tab and press Save.
Where do I report a problem?
Open an issue on GitHub. If it is a security problem, write to security@moorage.dev instead.
Report a problem on GitHub: what happened, and your EmDash and plugin versions.
What should we make next?
Tell us the job you would like a plugin to do. We read every answer and use your email only to reply to it; release emails come only if you tick the box.