Setting Up Google Blogger with Real Analytics Data That Matters
Getting Past Blogger’s Fake Stats Dashboard
Blogger’s built-in stats panel is… let’s be generous and call it display theater. It counts bots, skips proper session tracking, and gives you super cool numbers that never match reality. If you’re running AdSense, this disconnect isn’t just cosmetic—it’s financial. One day I had what looked like a 2x traffic spike on Blogger, but Google Analytics said nah, barely a bump. Turned out an overseas referrer was hammering my feed with bot requests. Looked like a Reddit hug, but nope: Russian scraper farm.
Your first move should be to just ignore Blogger’s native stats for anything decision-critical. Install GA4 with real hits. Use tag injection if you must. And don’t forget to exclude your own IP or you’ll start seeing things like “75% returning users” because you opened it on your phone ten times to fix a layout bug.
Injecting Analytics Tags Without Breaking the Theme
Most free Blogger templates still come with unclosed meta tags and ancient jQuery includes. Injecting anything into them becomes a logic puzzle. If you’re using a modern template, you can drop your GA4 or GTM script into the <head>
section and call it. But I once had a template where the <head>
tag was dynamically generated inside a widget include. What kind of medieval sorcery is that?
Quick tag-injection sanity check:
- Always use the
Theme → Edit HTML
route, not just custom widgets. It fewer weird unload quirks. - If your edits don’t show up on page reload: Blogger cached the layout. Toggle a color setting to force a recompile.
- Watch out for
<script>
blocks being sanitized if injected through gadgets or layout/UI-based editor.
Also, GTM will sometimes fire after Blogger renders inline JS from the layout XML, breaking anything that needs DOMContext early. This happens especially if you’re using Load Type: GTM DOM Ready instead of Head injection. Switching to inline script tags (I know, I know) solved one of these delays where pageviews never fired until 15 seconds in.
Verifying That GA4 Is Actually Working on Blogger
You dropped in the analytics tag. Are you actually getting hits? Is Realtime showing any users when you open your own site in a clean incognito tab?
Pro tip from a scarred experience: don’t trust the GA4 interface to refresh data quickly. Wait longer than seems respectable. There were multiple times where I thought I had broken something because nothing showed up in the Realtime dashboard… then 10 minutes later, boom, retroactive batch of hits appeared. And yes, I had set up the tag correctly—GA4 just silently delays rendering events for privacy compliance batching. Deeply unhelpful during setup.
I once rage-reinstalled a GA4 property 3 times thinking I’d misconfigured something. Turns out it was working the whole time. GA4’s real-time processing is just sluggish AF.
Using UTM Parameters That Stick in Blogger
If you’re trying to track newsletter clickthroughs or Instagram bios, you’ll be feeding people in through UTM-tagged URLs. But Blogger posts sometimes strip or mangle params in weird ways, especially on redirect or when hitting mobile views. I had a case where my UTM source got rewritten when auto-redirected through Blogger’s mobile layout handler.
Key gotcha: Blogger’s default links use relative URLs that get rewritten by region-specific TLD redirectors (like blogger.ca or blogger.co.uk). This breaks UTM tracking unless GA sees consistent landing pages. I now force canonical URLs using a redirect script at the top of the page:
if (location.hostname !== "mydomain.com") {
window.location.href = "https://mydomain.com" + location.pathname + location.search;
}
That fixed the UTM mismatch in GA4. Ugly, but works.
Sending AdSense Data to GA4 Without a Plugin
There is no native connector for AdSense data into GA4 from Blogger. If you’re expecting that integration magic like in WordPress, sorry: it’s duct tape time. You’re essentially left to:
- Enable AdSense auto ads via script injection (or layout editor if you’ve got static ad slots)
- Manually track user engagement in GA4 and correlate with AdSense reports
However, you can pass some useful click signals from Google Tag Manager by catching clicks on iframe wrappers. I had hacky success tracking ad block clicks using this GTM trigger:
Trigger: Click - All Elements
Condition: Click Element matches CSS selector iframe[src*="googleads.g.doubleclick.net"]
This won’t get you revenue numbers in GA—but you can at least measure how many users actually viewed or engaged with pits of ad clutter. Pair that with scroll depth and session data to spot pages where ads are dead zones.
Rescuing Broken Analytics After a Domain Migration
Blogger lets you point a custom domain at your site, but the moment you make the switch, all of Blogger’s legacy traffic gets orphaned in GA unless you prepared for it. GA4 doesn’t auto-merge across hostnames. People forget this.
I ignored the warning the first time I switched from .blogspot.com
to my custom domain. All attribution data basically went up in smoke. Switched back. Lost ranking. Broke my nav bar. It was a spiral.
Now I always:
- Set up two separate GA4 properties or use a View in UA (if you’re still using both)
- Add both domains to referral exclusion list
- Use a canonical tag to assign source of truth
- Redirect via Cloudflare rules so traffic doesn’t bounce mid-request
GA4 still doesn’t unify historic traffic, but at least I stop hemorrhaging data mid-transition. Learned the hard way on a client blog: lost all newsletter source tags because of inconsistent domain logging.
Behavioral Metrics That Actually Mean Something for Blogger
GA4 floods you with things like Engaged Sessions and Average Engagement Time. In a Blogger context, most of those are noise unless you’ve got event tagging. Here’s what’s actually trackable and valuable:
- Scroll Depth: crude proxy for attention. Use GTM to fire events at 25%, 50%, etc.
- Click Events: link clicks to external sites, social shares
- Session Start With Referrer: great for filtering bot traffic if referrer is null or internal
- Page View Velocity: track how many pages/session. High bounce isn’t always bad., but zero depth sessions are
- Ad Click Proxies: iframe interactions as mentioned earlier
Most critical realization I had: Time on page is total fiction without active scrolling or event hits. I was trusting that XX seconds = someone reading. Nope. Could be a muted background tab burning your session timer. Enable at least one meaningful engagement metric (scrolling, clicking, navigating) or your averages are fantasy.
Having to Undo GTM Changes When Blogger’s Editor Breaks
I once deployed a GTM change that accidentally broke post rendering on mobile. Traced it down to a misfired control flow in one of my tags that injected a lazy loader too early… which collided with Blogger’s image tag shimming. Took damn near two hours to untangle. And blogger’s editor cached the malformed template, making rollback nearly impossible unless you had saved the previous XML manually.
If you’re syncing GTM and Blogger:
- Version control your theme XML manually (use GitHub if you don’t trust yourself)
- Always test in a separate Blogger sandbox blog—it’s free, so make a disposable one
- Be cautious when using GTM Tag sequencing—delays cause Blogger to flash unstyled content
Eventually built a 2-site dev-test setup precisely because I couldn’t trust Blogger not to eat itself if I saved during a weird cloud latency flare. Still salty.
One Weird Trick: Sending Blogger Data Layer Stuff to GTM
Here’s a thing I didn’t realize for years: you can spoof a ton of metadata into GTM via Blogger Variables. There are Blogger templates that expose post-title, post-label, publish date, etc. inside data attributes. If you bake those variables into your post HTML or template widgets, GTM can hook them with a DOM variable or JS snippet.
<div id="postMeta"
data-title='<data:post.title/>'
data-labels='<data:post.labels/>'>
</div>
Then in GTM, grab those values like:
function() {
return document.getElementById('postMeta').dataset.title;
}
Total lifesaver when I wanted to track which tags were generating the most engaged sessions—but Blogger itself offered zero query access to post metadata in client-side JS. This hack is delicate (breaks if userscript compresses DOM or template minifies), but it can surface higher-fidelity blog taxonomy into your tracking layer.