Setting up Measurebase: the complete guide
Everything from creating your account to reading your first real report — account, domain, script, power-ups, verification, your data, and alerting, in the order you'll actually do them.
📋 Before you start
Have these ready and this whole guide takes about fifteen minutes of actual clicking: access to your DNS provider, a GTM web container ID, a GTM server container with a manually-provisioned config string (GTM → Admin → Container Settings → Manually provision tagging server), and whoever installs snippets on your site if that isn't you.
01 · Creating your account
Account creation is deliberately light — you're not asked to pick a plan or configure anything up front. Everything below it is optional and can happen later.
Sign up
Two paths, both on the signup page: Continue with Google (a redirect to Google and back — since Google has already verified your email, you land signed in with nothing further to confirm), or an email account: first name, last name, work email, password (8 characters minimum), plus agreeing to the Terms of Service and Privacy Policy.
Verify your email (email signups only)
A verification link is sent immediately. Click it, or come back to the tab you signed up in and use "I've verified — continue" (with a Resend link option if it hasn't arrived). You can't reach the dashboard until this is done — Google sign-ups skip this step entirely.
Turn on two-factor authentication (optional, any time)
From Profile → Two-factor authentication: scan the QR code or enter the manual key in your authenticator app, confirm a 6-digit code, then save the one-time recovery codes somewhere safe. This only applies to email/password sign-in — a Google sign-in already carries Google's own 2FA.
Create your first account (workspace)
Once verified, you land on the Accounts screen. Click "Add account" and give it a name. Every new account starts on the Free plan automatically — there's nothing to choose at this point.
Choose a plan, whenever you're ready
| Plan | Price | Requests / mo | Domains | Log retention | Support |
|---|---|---|---|---|---|
| Free | Free | 15,000 | 1 | 3 days | Community |
| Solo | €20/mo (€16/mo yearly) | 500,000 | 1 | 7 days | |
| Growth | €35/mo (€28/mo yearly) | 1,000,000 | Up to 3 | 14 days | |
| Scale | €50/mo (€40/mo yearly) | 2,000,000 | Up to 5 | 21 days | Priority |
| Business | €75/mo (€60/mo yearly) | 5,000,000 | Up to 10 | 30 days | Priority + team members |
| Enterprise | Custom | Unlimited | Unlimited | Unlimited | 99.9% SLA |
All EU-hosted in Amsterdam, prices exclude VAT. Change plans any time from Billing → Change plan: upgrades apply immediately (prorated), while a downgrade or a monthly/yearly switch takes effect at the end of your current cycle.
Invite your team
From Settings → "+ Invite member", enter just an email address — no role picker. If they already have a Measurebase account they get access right away; otherwise they receive an invite email. There are only two roles: Owner (you, can't be removed) and Member. A pending invite shows a Pending badge with Resend and Cancel actions; active members get a Remove action.
🤝 Running an agency?
Agency accounts are a distinct account type that manage multiple Client accounts from one dashboard (Partner → Clients). You can invite a client by email or by their existing GTM Container ID, but they must approve the link before you get any access — and an agency never gets billing access to a client's own subscription.
02 · Setting up your first domain
Add the domain
From Domains → "+ New domain", fill in:
- Name — a friendly label, e.g. "Main website."
- Tagging subdomain type — Use my own domain (default, and the one you should pick — it's what unlocks the actual first-party benefits) or Use a Measurebase subdomain, which skips DNS entirely and goes active immediately, at the cost of the first-party advantages (cookie lifetime, ad-blocker resistance). Treat the generated option as a quick test, not a production setup.
- Domain — your root domain, e.g.
yoursite.com. - Tagging subdomain — a prefix, defaulting to
mbase(givingmbase.yoursite.com) — change it if you'd rather use something else. - Server container config — paste the string from GTM: Admin → Container Settings → Manually provision tagging server.
- Region — fixed to Amsterdam, Netherlands (EU).
Domain caps follow your plan: 1 on Free and Solo, 3 on Growth, 5 on Scale, 10 on Business, custom on Enterprise.
Point your DNS
Open the new domain's Settings page. It shows a single A record to add — an A record keeps your tagging subdomain genuinely first-party, so Safari treats its cookies like any other first-party cookie instead of capping them the way it does for CNAME-cloaked subdomains.
Copy the Host and Value shown, add the record at your DNS provider, then click Verify DNS. SSL is issued automatically once DNS propagates — usually within minutes. The domain's status flips from Pending to Active the moment this succeeds.
🔎 Double-check it yourself
For a check that's independent of the dashboard, open https://mbase.yoursite.com (your actual tagging subdomain) directly in a browser tab — nothing needs to be installed on your site yet. If DNS has propagated and SSL has issued, it loads without a "can't find this site" or certificate warning. Either one shows up and it isn't ready yet — wait a few minutes and try again.
Running more than one setup
Need a second GTM property, or a separate setup for a subsidiary brand, on the same root domain? Add the domain again with a different subdomain — each one gets its own fully independent tagging server, up to your plan's domain cap.
03 · Installing the tracking script — and removing your old one
Generate your script
Open the domain and click Generate script. Enter your GTM web container ID (GTM-XXXXXXX) and choose a version:
- Enhanced (default, recommended) — a masked loader path with a
?mb=parameter, much harder for ad blockers and browser privacy filters to fingerprint. - Standard — the familiar
gtm.js?id=pattern. Pick this only if you specifically need GTM's own preview/debug mode to behave exactly like a stock, unmodified install.
Install it
Two snippets are generated. Paste the head snippet as high as possible inside <head>, and the body snippet immediately after the opening <body> tag — exactly where Google's own GTM instructions tell you to put it.
⚠️ Remove your old snippet
If you were previously running standard Google Tag Manager, you have an existing pair loading gtm.js directly from googletagmanager.com — a <script> block in <head> and a matching <noscript><iframe> in <body>. Delete both entirely. Running the old and new snippets side by side double-fires every tag and quietly doubles your numbers everywhere — the single most common self-inflicted data problem (see Troubleshooting).
Handing it to a developer
If someone else is doing the install, use Send instruction email right there in the Generate script panel — enter their address and they get both snippets plus setup and testing steps, no copy-pasting on your end.
Set up your server container
In GTM, open your server container and add a Google Tag Manager: Web Container client, with your web container ID listed under Allowed Container IDs. Skip this and your script loads fine in the browser, but every event is silently rejected server-side — the most common reason a fresh install shows zero data.
04 · Configuring power-ups — and deciding which to use
All seven live on a domain's Advanced tracking tab. All are optional, all reversible, and none are required to get basic tracking working.
| Power-up | What it does | Configuration |
|---|---|---|
| Data Enrichment | Adds visitor geo (country/region/city/postal) and device (OS/browser/engine/bot/mobile) signals as request headers, readable via GTM's Request Header variable | Master toggle + 11 individual header toggles, all on by default |
| Cookie Keeper | Re-issues recognized first-party marketing cookies on every request, keeping them alive past Safari ITP's 7-day cap on JS-set cookies | Master toggle + per-cookie toggles across 11 vendor groups (~30 cookies), all on by default |
| Click ID Restorer | Recovers ad-platform click IDs stripped by Safari/Brave from landing URLs, plus cookie-based recovery for others | Google/Microsoft backup parameter names (free text) + 3 independent toggles for Meta/TikTok/Pinterest |
| IP Anonymization | Masks every visitor's IP before it reaches your server container (IPv4 last octet zeroed, IPv6 keeps only its /48) | Single toggle |
| IP Filter | Blocks specific IPs or ranges — your own office, agency, or QA traffic — from being tracked at all | Single toggle + a free-text list of IPs/CIDR ranges |
| Enhanced Ad Blocker Protection | Rewrites ongoing requests into the same masked format as the Enhanced loader, so blocklists can't fingerprint fixed paths like GA4's /g/collect | Single toggle — needs the Enhanced loader already installed; regenerate & reinstall the script after switching this on or off |
| Auto Grant Consent | Forces every hit's consent signal to read as fully granted, so you can verify tag firing without clicking through your own consent banner | Single toggle — testing only, see below |
⚠️ Enhanced Ad Blocker Protection needs an install step, both ways
Flipping this toggle doesn't update your site by itself — it only changes what the next "Generate script" produces. After changing the toggle, go back to Generate script, choose Enhanced again, and paste the new output over what's currently installed. Turning it on adds one extra <script> tag directly above your existing Enhanced snippet; turning it off means regenerating again without that tag. Skip this step in either direction and the toggle in your dashboard won't match what your site is actually doing.
Deciding which ones you need
- Turn on by default: Cookie Keeper — near-zero downside, and it meaningfully helps Safari/iOS attribution survive.
- Turn on if it applies to you: Data Enrichment, if you'll actually reference the headers in a tag; IP Anonymization, if your privacy policy or legal team wants IPs masked; IP Filter, if you want internal/office/QA traffic excluded from your numbers entirely. Masking and excluding solve different problems — both can run together.
- Turn on once you're ready for it: Click ID Restorer, if you run paid ads and care about attribution surviving Safari/Brave (the Google/Microsoft side also needs a matching Final URL suffix configured in that ad platform itself, not just the toggle here); Enhanced Ad Blocker Protection, once you're already comfortable on the Enhanced loader — remember the reinstall step above whenever you change it.
🚫 Auto Grant Consent — testing only
Leaving this on shows an escalating warning right on its own page, and past 24 hours Measurebase's own monitoring opens a real alert on your account. Turn it off the moment you're done verifying tag firing — never leave it on in production.
05 · Verifying everything works
Don't consider setup finished until all five of these check out:
- Domain status is Active, not Pending. Stuck on Pending usually means DNS hasn't propagated yet — see Troubleshooting.
- Trigger a real hit — open your site in a normal (or incognito) tab and click around, or fire a test event from GTM's own preview mode.
- Check the request logs — a fresh row should appear within moments, with an Active status. Don't see it yet? Click Refresh on the logs page — it triggers on-demand ingestion instead of waiting for the next scheduled pull, so your test hit shows up right away.
- Confirm in GTM itself — your server container's preview/debug mode should show the request arriving and your tags firing.
06 · Understanding your data
Measurebase shows the same underlying traffic through several different lenses. Here's what each one is actually telling you.
Domain statistics — the deep dive for one domain
Everything below lives on a single domain's own statistics page, behind one shared date-range picker:
- Requests — a total for the selected range plus the trend vs. the previous period.
- Request types — a breakdown across the nine categories your logs use (see below).
- Requests by origin — which hostname sent the traffic; GTM-Preview hits and requests with no referrer are deliberately folded into one "Preview / Direct" row so they don't read as missing data.
- Browser & device — a donut you can toggle between Browser / OS / Device. Worth watching for one specific reason: the larger your Safari/Firefox share, the more work Cookie Keeper is doing for you behind the scenes.
- Consent Mode v2 — four donuts (ad storage, analytics storage, ad user data, ad personalization), each split Granted / Denied / Unknown. This reflects the real signal your own CMP is already producing — Measurebase doesn't set or override consent on your behalf, only reports what it sees.
- Bot traffic — a stacked bar, one segment per bot name (search engines, social/preview bots, AI/LLM crawlers, SEO tools, security scanners, headless browsers), with anything else bot-shaped folding into a generic "Other bot" segment.
Domain analytics — comparing across every domain
A separate, simpler page: one small volume chart per domain on the account, side by side, so you can spot which one needs attention at a glance. Click View on any card to jump into that domain's full statistics page for the deep dive above.
Request logs — the raw feed
Each row shows Time, Event/tag, Status, Response time, Region, and Client IP. The nine request types you'll see: Enhanced tracking script, Ad-block protected request, Google Ads (ad-block protected), GTM tracking script, Google tag, GA4, GTM preview mode, Service worker, and Other (bot/scanner noise — never billed, never counted as real traffic).
| Status | Meaning |
|---|---|
| Active | Healthy — any response code under 300. |
| Pending | A rate-limited retry, or a confirmed-harmless GA4/gtag 400 — flagged "NO DATA LOST." Not a real problem. |
| Error | A genuine failure — essentially everything else, including all 5xx responses. |
Filter by 2xx / 4xx / 5xx, or export to CSV — the exportable date range is capped by your plan's log retention (3 / 7 / 14 / 21 / 30 days on Free / Solo / Growth / Scale / Business, custom on Enterprise).
Your account overview
Two request numbers sit side by side here on purpose, and they're not meant to match: a date-range Requests card (whatever range you pick, with a delta vs. the previous period) and a Requests (cycle) card — your usage so far this billing cycle against your plan's quota, which is the number that actually determines whether you get auto-upgraded or paused.
Billing usage
Billing shows that same cycle number again, this time bundled with your plan, price, billing dates, and invoices — the same fact, examined from a "what am I paying for" angle rather than a second, different number.
One thing that isn't a chart: foreign traffic
Unlike bot traffic, this never shows up as a number to read anywhere — it's a monitoring check that opens an Alert the moment another Measurebase customer's domain shows up as a Referer on your account. Almost always a copy-pasted snippet somewhere, and worth investigating the moment it fires rather than tracking visually over time.
07 · Managing notifications & alerts
Five checks run automatically, continuously, across every domain and account:
| Check | Catches |
|---|---|
| DNS drift | Your tagging subdomain's DNS record no longer resolves to Measurebase — a registrar change, or a CDN put in front of it after go-live. |
| No data | A domain that's gone quiet longer than its configured threshold. |
| Elevated errors | A domain's error rate spiking well above its own normal baseline. |
| Foreign traffic | Another Measurebase customer's domain showing up as a Referer on your account. |
| Quota | Account-wide, at 80% and again at 100% of your plan's request quota. |
Set your no-data threshold
Per domain, on its Settings page under Monitoring: "Alert me if no data for" — anywhere from 1 to 168 hours (a full week), 24 hours by default. Raise it for a quiet B2B site where a slow weekend is normal; lower it if you want to know within the hour on a high-traffic property. New domains get a grace period before this check switches on.
Where you'll see an alert
- The bell icon on every dashboard page — its badge counts unacknowledged open alerts; opening the dropdown clears the badge without resolving the underlying issue.
- The dedicated Alerts page — Domain, Type, Message, Status, and when it opened, paginated.
- An alerts panel right on the account Overview page.
- A banner on the affected domain's own statistics page.
- Email — a "New {severity} alert" message when one opens, "Resolved" when it clears.
- Slack (see below).
Connecting Slack
Up to 3 channels or workspaces per account, connected from Settings → "Add to Slack" — an OAuth flow, no manual webhook pasting needed. Every connected channel receives every alert; there's no per-channel filtering by type or domain. A domain-specific alert names that domain in the message; an account-wide one like quota names the account instead.
Alerts resolve themselves
Once the underlying condition clears — DNS correct again, traffic resumed, usage back under the threshold — the alert closes on its own. There's no manual "resolve" button, only "acknowledge," which just quiets the bell.
08 · Infrastructure checklist: CDN, caching & CSP
Most setups need nothing beyond sections 2 and 3. A few infrastructure layers can interfere if you're already running them, though — worth a five-minute check the first time, especially if your own site sits behind a CDN or a strict CSP.
A CDN in front of your own site
If you proxy your whole domain through Cloudflare, Fastly, or similar, make sure your tagging subdomain's record isn't being intercepted, cached, or rewritten unless you've deliberately configured that. The safest default is to exclude the tagging subdomain from proxying entirely (a plain "DNS only" record) so traffic reaches Measurebase directly; if you do need it proxied, disable caching rules for that hostname specifically.
Caching
The loader script itself can be cached briefly without harm, but the actual collection requests — every real tracking hit — must always reach Measurebase live. Make sure no blanket "cache every request under this path" rule from your CDN or reverse proxy also catches your tagging traffic.
Content-Security-Policy
If your site sends a CSP header, its script-src and connect-src (and img-src, if a browser ever falls back to a pixel) need to allow your tagging subdomain. Because it's first-party — the same root domain as your site — a wildcard like *.yoursite.com already covers it in most policies, but a CSP scoped to an exact hostname will silently block the loader until you add the new one explicitly.
🛟 The safety net
If any of the above slips through unnoticed after go-live, that's exactly what the DNS drift and no-data checks in section 7 exist to catch. Don't rely on them instead of getting this right upfront, though — by the time either fires, you've already lost some data.
09 · Troubleshooting common problems
| Symptom | Likely cause & fix |
|---|---|
| Numbers look doubled | Your old GTM snippet is still running alongside the new one. Go back to section 3 and remove it completely. |
| Attribution keeps resetting on Safari / iOS | Check Cookie Keeper is actually on for the specific vendor's cookie you care about — toggles are per-cookie, not one global switch. |
| A chunk of traffic seems to vanish, especially in Firefox/Safari/Brave | An ad blocker or privacy filter is likely catching your requests. Move to the Enhanced loader if you're still on Standard, then turn on Enhanced Ad Blocker Protection — remember to regenerate and reinstall the script afterward. |
| The request log is full of alarming-looking 400s | Check the Status badge, not just the response code — a Pending badge on a GA4/gtag request is marked "NO DATA LOST" and is a normal benign retry. Only Error rows mean something actually failed. |
| A domain won't leave Pending | DNS hasn't propagated yet, or doesn't exactly match what's shown on the domain's Settings page. Re-check the Host/Value, wait a few minutes, then click Verify DNS again. |
| An unfamiliar domain shows up as a Referer in your logs | The foreign traffic check doing its job — someone reused your tracking snippet elsewhere. Worth tracking down and fixing at the source. |
| Tracking stops and a banner says it's paused | You've hit your plan's request quota for this cycle. Check Billing — upgrade, wait for the next cycle, or turn on auto-upgrade so this doesn't happen unnoticed again. |
| Auto Grant Consent was left on longer than intended | Turn it off from Advanced tracking right away. Past 24 hours, expect (and don't worry about) the alert Measurebase already opened about it. |
Quick-start checklist
The whole guide above, condensed to one pass.
- Sign up and verify your email
- Add your first domain
- Point an A record at Measurebase, verify DNS
- Generate an Enhanced script
- Install it, remove the old GTM snippet
- Add the Web Container client server-side
- Turn on Cookie Keeper
- Decide on the other power-ups
- Confirm a real hit in the logs + GTM preview
- Set your no-data threshold
- Connect Slack or check your email alerts