Using Blog Analytics to Drive Better Posts Without Guesswork
Google Analytics Events: Not Just for Clicks
Most folks load up Analytics, look at top posts, and call it a day. Don’t. I had a CTA button on a popular post getting ah, like, zero conversions. Turns out people were rage-scrolling to the bottom and skipping over everything. I started tracking scroll depth using GA4’s custom events setup. Set it up using gtag('event')
with scroll thresholds — it’s annoying but worth it:
gtag('event', 'scroll_75', {
'event_category': 'engagement',
'event_label': 'PostNameHere'
});
Now I can tell if people even see the stuff halfway down. The scroll-depth drop-off helped me kill affiliate clutter halfway in. Some of those widgets were loading GPT-based recommendations that tanked performance anyway. Also, don’t trust built-in GA4 scroll events — they don’t fire below viewport size on initial load if your layout jumps (found that out after 2 weeks of phantom 100% scrolls).
Segmenting Posts by Topic Cluster Actually Helped (Shocker)
There’s a weirdly effective trick where just segmenting blog posts into practical categories — not tags, actual Analytics groupings — gives you insights so much faster. I broke things into “AdSense fixes,” “Cloud SEO stuff,” and “Content workflows.”
In GA4, you can set custom dimensions like content_group
either via code or in GTM. Once grouped, I filtered audience engagement by category. The bounce rate on my JavaScript tweaks section was way lower than on the UX rants, despite similar traffic. Which made me realize: maybe don’t put three API failure screenshots before offering the patch.
Undocumented quirk: content groups randomly default back to “(not set)” if you don’t make them required in GA4 config. I fixed this by throwing a default fallback into the tag template in GTM.
Average Time on Page Is a Lie (Unless You Do This)
The metric sounds useful. It’s mostly garbage. GA4 only calculates time-on-page when there’s a second interaction — if a visitor bounces without clicking anything, they’re clocked as 0 seconds. I had a blog post getting “2 seconds” time but 80% scroll. Magic? Nope — I wasn’t firing any events. No click, no scroll tracked = no session duration.
Add something that pings GA periodically — I rigged a 15-second interval event using setTimeout
. Like this:
setTimeout(() => {
gtag('event', 'page_engagement_ping', { 'engaged': true });
}, 15000);
Not great for battery life but hey, I needed to know if people were still reading. Result: my so-called irrelevant post was actually getting 2.5 minutes of time. I had nearly deleted it.
Clicks Don’t Equal Conversions, Especially with AdSense
Oh boy, the number of times I saw a CTR spike and thought I nailed the intent. Turns out some clicks were from bots or accidental taps. One post was hacked into Reddit and had a spike from mobile Safari users — tons of clicks on an AdSense in-article unit, zero conversions.
What I learned:
- Filter for real conversion events. Use AdSense’s auto ads versus manually placed blocks — the behavior’s wildly different.
- Mobile users had twice the mistaken-click rate. Disabling the sticky banner on iOS devices alone improved RPM (ish).
- Ad balance settings in AdSense actually do something — which I thought was placebo until I dropped fill rate by 20% and engagement went up. Apparently people like reading when not ambushed.
Also: AdSense’s preview mode lies to your face. It doesn’t show what a real user will experience with experimental formats. I once greenlit vignette ads only to discover they were popping before articles even loaded.
You Can’t Write Strategy If You Don’t Know Where Traffic Comes From
This feels obvious, but I ignored it for years. Direct traffic? Organic? Social doomscrolls? Makes a bizarre difference.
When I finally stopped using aggregate traffic numbers and broke things down by traffic source/medium, patterns emerged:
- Facebook traffic bounces unless your H1 explains the post in 4–6 words, tops.
- Google Discover likes posts with structured data and high-res covers. Those posts had longer sessions despite short content (weirdly, thanks to people clicking my Table of Contents).
- Reddit traffic boosted old posts only when I removed timestamps. Otherwise, comment downvotes dunked me into silence.
Bonus: UTM tracking helped me isolate newsletter links from actual organic inbound. I was surprised how often I thought posts were getting longtail SEO, when it was just my own email list circling back.
Finding Unearned Winners
This is my favorite thing to do—it feels like reading tea leaves. Some older blog post that’s somehow doing great on Pinterest, despite having no pins. Happened to me with a type layout post. When I reverse-searched images, my screenshots were re-uploaded to Canva boards and linked.
This stuff doesn’t show up in GA4 unless you dig into referrer data from secondary dimensions. I set up some alerts in Looker Studio (ugh, I miss Data Studio actually working) for any post getting >100 sessions with referral sources not in my list of usual suspects.
I now check those bi-weekly — it’s how I found someone quoting me out of context on a dev Discord, which resulted in a mini-traffic burst.
Most strategic content planning I do now starts with, “Which post pulled accidental traffic I didn’t earn, and why?” Because honestly, publishing weekly wasn’t helping as much as tuning my outlier stuff.
“Why Did My Traffic Just Die?” & Other Fun Puzzles
Analytics helped me discover that one of my high-performers tanked for a ridiculous reason: someone changed the permalink format in WordPress during a plugin update. No redirects. Poof. Overnight traffic went flat.
After staring at GA4 pathways for 2 hours and seeing entry counts drop to literal ones and twos, I checked the Source HTML — all internal links were broken. Turns out the plugin had auto-switched from /blog/post-name
to /archives/post_name
without triggering a migration prompt.
I recovered the post traffic by batch-adding 301s via an .htaccess redirect block. Tedious but it worked. PSA: check for slug format drift after any plugin install that touches routing or SEO.
Analytics didn’t directly tell me what happened — it just told me something broke. Which is about as much help as a shrugging emoji, but hey, better than nothing.
Using Behavioral Flow to Find Content Cliffs
Watching how users navigate across multiple pages in a session is mind-numbing and extremely useful. The GA4 version of “Behavior Flow” is awful (it’s mashed into Paths), but it helped me catch that users landing on my “what is DNS over HTTPS” post were bouncing on second click, consistently—especially when hitting the next post on DoH in Chrome.
That second post… was loading too slow. Lighthouse didn’t catch it. Turned out a ghost JavaScript file was taking forever to resolve — an inline script that tried to hydrate a no-longer-used comment plugin. GA didn’t log this, but by validating the flow break and then checking DevTools waterfall, I caught the issue.
I used to think bounce rate was just people not liking the post. Now I think it’s them begging for mercy on page load.
Anyway: I started pruning legacy scripts, rolled the comment stuff into an iframe to lazy-load it, and bounce rate improved. Again — Analytics gave me symptoms, but I still had to do the diagnostic work manually.
Calendars Are Not Strategies
I had this Notion content calendar that just slowly died inside every week no post got written. Then I started working backwards: look at top-performing posts, group them by what stage in the user’s journey they’re hitting (awareness? screwdriver tutorial?), and only then schedule associated pieces.
One “aha” I had was tied to a content piece that always did well with returning users. I pulled user ID sessions and saw repeat behavior. The topic? A niche API rate-limiting explainer. So instead of spinning up new topics, I extended it — added pagination limits, retry patterns, and a spreadsheet template. Same post cluster, multiple new entry points.
Turns out sometimes the best content planning strategy is to stop posting new crap and extend what’s already sticky.
Also, ignore analytics suggestions like “this keyword is growing.” That’s based on clickbait volume, not your actual searcher. I got suckered into writing a “Top JAMStack Tools for 2022” post once because some analyzer suggested it — it flopped, and I regret every single stock image I uploaded for it.