Analytics. Measuring the blog

GA4 Blog Conversions: Is Your Blog Actually Making Money?

4Transactions from blog landing sessions in 28 days
48Add to carts from those same blog sessions
11 secAverage engagement across 11,479 blog sessions
0.46%Home market blog conversion rate, bots filtered out

Written by Ram Kr Shukla. Numbers from one D2C beauty store, anonymised.

Quick answer

GA4 gives you two different blog numbers. The standard Landing page report counts purchases made in a session that started on a blog post. It's session scoped, quick to pull, and usually small. The number founders actually want, purchases by people who read the blog at any point before buying, only exists in Explore: a user segment with a sequence (a blog page view that “is indirectly followed by” a purchase), or a path exploration run backwards from purchase. Neither one comes through Looker Studio's GA4 connector, both depend on your event data retention setting, and both can be sampled. If even the bigger number is tiny, judge the blog on non-brand search clicks and engaged readers instead.

A founder asks a simple question: is the blog making money? Someone opens GA4, filters the landing page report to blog URLs and reads off the purchases. On one Indian cosmetics store I audited, that came to 4 transactions in 28 days, from 11,479 blog sessions.

That answer is correct. It's also misleading, because it answers a narrower question than the one asked. GA4's standard reports can tell you how many purchases happened in a session that began on a blog post. They can't tell you how many buyers read a post last week and came back on Friday to buy. For that you need Explore, a user-scoped segment and about an hour of careful clicking.

This guide covers both numbers, the exact clicks for each, why the second one won't go into a dashboard, and what to tell a founder when even the generous number is small. One thing first. If you don't trust the tracking itself, fix that before you measure anything; it's the work I do under GA4 conversion tracking, and the Shopify version of that check is the Shopify GA4 funnel audit.

Two Questions Hiding Inside “Is the Blog Making Money?”

Number 1 is the blog as the entry point. A session starts on a post and the purchase happens before that session ends. GA4 hands you this in the standard reports because Landing page is a session attribute. Google defines it as the page path associated with the first pageview in a session. One session, one landing page, one answer.

Number 2 is the blog anywhere in the journey. Someone reads a post on Monday from a Google search, leaves, comes back on Friday by typing your URL, and buys. The standard reports file that order under Friday's landing page. The post that started it doesn't appear anywhere.

Two blog numbers, two questions Same reader, same order. What GA4 credits depends on scope. NUMBER 1: BLOG AS THE LANDING PAGE One session Blog post Product page Purchase Counted in Reports, Engagement, Landing page. NUMBER 2: BLOG ANYWHERE BEFORE THE PURCHASE Session 1, Monday Blog post Session 2, Friday, comes back direct Product page Purchase Only Explore can see it: a user sequence segment or a path exploration. Standard reports never name the post. RamKrShukla.com Illustrative.
Number 1 lives in standard reports and only counts a purchase in the session that began on the post. Number 2 needs Explore. Illustrative.
Number 1: blog as landing pageNumber 2: blog anywhere before purchase
Question it answersDid a session that started on a post end in a purchase?Did people who read a post at some point go on to buy?
Where it livesReports, Engagement, Landing pageExplore only: sequence segment or path exploration
ScopeSessionUser, across sessions
Dashboard friendly?Yes, through the Data API and Looker StudioNo, it's a manual pull
Bound by retention?No, standard reports keep their historyYes, by event data retention
Usual sizeSmallLarger, sometimes much larger

Most arguments about blog ROI are two people quoting different numbers without saying which. Write the scope next to every figure you report, and half the argument goes away.

Why GA4 Doesn't Give Blog Posts Cross-Session Credit

This trips up people who know that GA4 does cross-session attribution. It does. But it attributes credit to traffic sources. Google's attribution paths report shows the journey by channel group, source, medium or campaign. Session-scoped and user-scoped source dimensions use last click, and event-scoped ones use the model you pick, as Google explains in its note on traffic source scopes.

A blog post is a page. Pages never enter those models.

So in the Monday and Friday example, attribution can give Organic Search a share of the order, because Organic Search brought the reader to the post. Nothing in the standard reports says which page that visit landed on. The channel gets credit, and the post that did the persuading stays invisible.

On the store above I checked the Advertising section anyway. It showed a snapshot card and a prompt to link Google Ads, and the paths report wasn't there. It wouldn't have helped. Even where the report is available, a path reads like “Paid Social, Organic Search, Direct”. A page can't be a step in it. If your organic numbers look odd for other reasons, such as tagged links or parameters, that's a separate problem covered in why organic traffic numbers lie.

Number 1: The Blog as the Landing Page

This is the quick one. No Explore, no segments. On a store with clean tracking it takes five minutes.

1
Open the Landing page report

Go to Reports, then Engagement, then Landing page. If your left menu is customised, the same report may sit under Life cycle.

2
Search for your blog folder

Type the folder your posts live in, such as /blog/ or /blogs/ on Shopify, into the search box above the table. Pick the tightest pattern that matches only post URLs.

3
Filter to the markets you sell in

Add a Country filter or comparison for your home market. Without it, bot traffic decides what the table says.

4
Show the ecommerce columns

If the table doesn't show Add to carts, Checkouts and Transactions, customise the report or rebuild it as a free form exploration with Landing page plus query string as the row.

5
Read the total row

Set rows per page to 250 so every post shows, then read sessions, add to carts, checkouts and transactions straight off the total line.

On the cosmetics store, all countries, 28 days, the total row read: 11,479 sessions, 48 add to carts, 11 checkouts, 4 transactions. A looser search term matched seven extra URLs that weren't posts and pushed sessions and checkouts up a little. Transactions didn't move. So check the filter before you trust the session count.

Two things in that row matter more than the 4.

Don't divide 4 by 11,479. Average engagement across those sessions was 11 seconds. Roughly 91% of the blog's traffic was bots, and a conversion rate built on bot sessions isn't a rate of anything. The transaction count is sound, because bots don't buy. The denominator isn't.

Look at 48 against 4. The posts carried product blocks with working add to cart buttons, and readers used them 48 times. Only 4 of those sessions ended in a purchase. Forty-four cart adds didn't finish in that visit. Anyone who added from a post and bought the next day was credited to whatever brought them back. That gap is the entire case for pulling Number 2.

One more warning. When I pulled the following 28 days, three transactions came from three different posts, and the post that converted the month before showed zero. At 3 or 4 orders a month, which post “wins” is noise. Don't build a content plan on it.

Number 2: The Blog Anywhere Before the Purchase (Explore Only)

There are two ways to get at this in GA4. The sequence segment gives you a number you can report. The path exploration shows you the shape of the journey. Use the first for the founder and the second for yourself.

Method 1: a user-scoped sequence segment

Google's segment builder documentation is clear on the part people miss: sequence conditions are a user segment feature, and “indirectly followed” lets other events sit between the steps. That's exactly what a read now, buy later journey looks like. Here are the clicks.

1
Open a blank exploration

In GA4, click Explore in the left menu and start a Blank exploration. Set the date range first. If your event data retention is 2 months, nothing older than about 60 days is available here.

2
Create a new user segment

In the Variables column, click the plus next to Segments and pick User segment. Sequences only exist in user segments, so a session segment can't do this job.

3
Add a sequence and define step 1

Click Add sequence. For step 1, choose the dimension Page path and screen class and set it to contain your blog folder, such as /blog/ or /blogs/ on Shopify. Use the tightest pattern that matches posts and nothing else.

4
Add step 2 as the purchase

Click Add step, set step 2 to the event purchase, and make sure the link between the steps reads is indirectly followed by. That allows any number of other pages and visits between reading and buying.

5
Keep the scope across all sessions

Leave the sequence scope across all sessions. If you restrict it to the same session, you rebuild the landing page number with extra clicks and lose the readers who came back later.

6
Name it, save it and build a comparison

Name the segment Read blog then purchased and save it. Build a second user segment with only the purchase event, called All purchasers. Apply both, add Country as a row or filter for the markets you sell in, and add Total users as the value.

7
Read the share and check sampling

Total users in the first segment, divided by Total users in the second, is the share of buyers who read a post before buying. Then hover the data quality icon at the top of the table. If it shows a percentage of data used, the result is sampled, so shorten the date range and run it again.

Why users and not transactions? A user segment pulls in everything those users did in the date range. So the Transactions metric under it can include orders placed before the blog visit, or orders that had nothing to do with it. Total users who match the sequence is the cleaner figure: buyers who read a post and later purchased. Quote that, and quote it as a share of all purchasers.

Cross-check it with a funnel. A funnel exploration with step 1 as a blog page view and step 2 as purchase, set to is indirectly followed by, should land close to the segment. Google notes that funnels count users only in steps they complete in sequence, and only the first sequence per user in the date range. Keep the funnel closed so everyone has to start on the blog.

Method 2: path exploration backwards from purchase

Google's path exploration help describes backwards paths. In practice:

1
Start a path exploration

Click Explore, choose Path exploration, then click Start over in the top right to clear the sample.

2
Set purchase as the ending point

Click the Ending point box, choose Event name, and pick purchase.

3
Switch the steps to pages

Change each step's node type from Event name to Page path and screen class, and turn on View unique nodes only so repeated page views collapse.

4
Expand and look for the blog

Click nodes to expand earlier steps. The graph shows the top 5 nodes per step, and More takes it to 20. Everything else lands in an Others node.

That last limit is the catch. On a store with thousands of product URLs, individual blog posts rarely make the top 20 at any step, so they disappear into Others. Apply your Read blog then purchased segment to the path and they surface. It's a picture of the journey, though. You can't put a path graph on a monthly scorecard.

Why You Can't Put Number 2 in Looker Studio

Founders like the number on a dashboard. This one won't go there, and it's worth knowing why before you promise it.

Google's own Looker Studio connector documentation says GA4 segments and comparisons aren't available through the Google Analytics connector, and that it only matches what standard reporting shows. Third-party connectors read from the same GA4 Data API, whose stable methods are report, pivot, realtime, metadata and compatibility calls. None of them takes a segment. There's no path exploration method at all.

There is one partial exception. An alpha funnel report method accepts steps where “there can be events between the previous step and this step”, which is the API version of indirectly followed by. Google describes it as alpha stability, released to gather feedback before beta. It can change, and few off-the-shelf connectors use it, so treat it as a developer project.

So pull Number 2 by hand once a month, write it into a sheet with the date range and the segment definition, and label it as a manual figure. The rest of the monthly report can be automated; my Looker Studio SEO dashboard build shows which parts the connectors handle well.

If you need this automated properly, two options look forward rather than back. The BigQuery export gives you raw events to query any way you like, with a daily limit of 1 million events on standard properties, and it starts from the day you link it. An audience such as “viewed a blog page” accumulates users from the point you create it, so it can't answer last quarter's question. Set either one up before you need it.

Sampling, Retention and the Fine Print

Sampling. Explore queries on standard properties are capped at 10 million events, per Google's page on how data is stored and displayed. Above that, GA4 samples, and the data quality icon at the top of the exploration shows what percentage of data it used. A year of a busy store will hit it. Shorten the range or split it into months and add them up.

Retention. This one bites. Standard properties can keep event data for 2 or 14 months, and Google's data retention page says the setting doesn't affect standard aggregated reports. It only affects explorations and funnel reports. The cosmetics store was on 2 months. So Number 1 had full history in standard reports, while Number 2 could look back only about 60 days.

Raising retention to 14 months costs nothing. Google applies an increase to data you've already collected and haven't already deleted, after a 24 hour wait. What's been deleted is gone. On a client property, ask before changing it, then change it the same day.

Identity. GA4 links Monday's visit to Friday's through the same browser cookie, or a user ID if you send one. A reader who browses on a phone and buys on a laptop looks like two people. Cleared cookies and declined consent break the chain too. So Number 2 is still an undercount, just a smaller one.

Presence isn't proof. The segment says the blog was in the journey. It doesn't say the post changed anyone's mind. Someone who already planned to buy might have read a how-to post on the way. Say that out loud when you present it, before the founder's CFO does.

Bots: Why Blog Sessions Make a Bad Denominator

I've covered how to spot bot traffic in the funnel audit and in the companion piece on finding real readers in GA4, so here's only the part that matters for blog revenue.

Of the 11,479 blog sessions, roughly 91% were bots: thousands of sessions from countries the store didn't ship to, at a few seconds each. In a separate two-week cut of home market traffic only, the blog had 871 sessions, 288 of them engaged, and 4 purchases. That's a 0.46% conversion rate. Pretty normal for a blog.

The practical rule: report transactions from the blog as a count, and report engaged home market sessions as the traffic figure. Never compute a blog conversion rate on all sessions.

When the Measured Number Is Tiny

Say you've done all of it and the result is still small. Four landing page transactions, and a sequence segment that comes back at a few dozen buyers. What do you tell the founder?

Don't defend the landing page figure as revenue. Arguing that 4 orders justify a content budget costs you credibility, and the founder will find the hole later. Say three things instead, in this order.

First, the landing page number is a floor, not the answer. The 48 cart adds against 4 orders prove readers act on posts and finish elsewhere. Second, the assisted number comes from Explore and needs pulling before anyone quotes a multiple. Don't pre-announce one. Third, and this is the hard part: be willing to say the blog isn't paying for itself directly yet. Saying so, with a better KPI and a plan, lands better than a defence of a weak number.

Before you present blog revenue, check:

  • The figure says its scope: landing page session, or anywhere in the journey
  • Sessions are filtered to the markets you sell in, and bots are out of the denominator
  • The Explore number shows its date range, and whether it was sampled
  • Event data retention covers the window you're claiming
  • Nobody has divided transactions by unfiltered blog sessions

The Honest KPI for a Blog: Non-Brand Clicks and Engaged Readers

Most stores are brand search businesses. People who already know the name search for it and buy. The blog is usually the only asset that ranks for questions from people who don't know the brand yet, so its job is non-brand demand. Measure that job. The split is explained in the branded vs non-branded traffic guide.

KPIWhere it comes fromWhy it's honest
Non-brand clicks to blog URLsSearch Console, filtered to blog pages and excluding brand queriesDoesn't depend on tags, cookies or consent
Non-brand impressions and positionSearch Console, same filterMoves months before clicks do
Engaged blog sessions, home marketGA4 landing page report, country filteredBots rarely count as engaged
Buyers who read a post firstExplore sequence segment, monthlyThe closest thing to blog influence GA4 has

There's one thing no tool gives you: non-brand revenue. Search Console has the query, GA4 has the session and the order, and there's no key that joins them. The funnel audit explains why in more detail. Anyone quoting a non-brand revenue figure for a blog is estimating, so don't sign up to a target framed that way.

This also changes how you budget. If the blog's job is non-brand reach, it should be planned alongside the pages that bank the sale. That trade-off is in blog traffic vs category traffic, and the case for keeping the blog at all is in the Shopify blog engine.

The Two Blogs Pattern

When I broke the cosmetics store's posts down by sessions and engagement time, it wasn't one blog. It was two.

Two blogs on one domainBlog sessions in 28 days, and average engagement per session.SESSIONSENGAGEDTHE BOT MAGNETHighest traffic post1,3125 secRoutine post4990 secRoutine post4690 secTHE BLOG PEOPLE READSkin type explainer61433 secTroubleshooting post2842 secNone of the five posts produced a transaction in the window.RamKrShukla.comIllustrative. Anonymised client data.
The posts with the most sessions had almost no reading time. The posts people read had little traffic. Illustrative. Anonymised client data.

The bot magnet. The highest traffic post had 1,312 sessions in 28 days at 5 seconds each. Two routine posts had 499 and 469 sessions at 0 seconds. Nothing converted. On a sessions chart these look like the stars of the blog.

The blog people read. A skin type explainer had 614 sessions at 33 seconds. A troubleshooting post had 28 sessions at 42 seconds. Forty-two seconds is a person reading. Twenty-eight sessions is almost nobody finding it.

So the posts humans actually read were the ones search barely sent anyone to. The tracking on those posts was fine. The trouble was ranking and topic choice, and that points the content plan somewhere specific: write more posts shaped like the 42 second one, and find out what the read posts rank for in Search Console.

Rank your posts on engaged home market sessions and the priority list flips. The same mistake of judging discovery content on last click is laid out in the three top of funnel models, and it's why reading an SEO report for revenue starts with page type.

What a Monthly Blog Report Should Show

One page. Four lines. Each one says where it came from.

1
Non-brand clicks and impressions to blog URLs

Search Console, automated. The headline KPI and the one to set targets on.

2
Engaged blog sessions in your markets

GA4 landing page report with a country filter, automated. Replaces raw sessions everywhere.

3
Landing page transactions

GA4 standard reports, automated. Labelled as same session only, a floor.

4
Buyers who read a post first

GA4 Explore, pulled by hand. Labelled with the date range, the segment and whether it was sampled.

That report won't make a weak blog look strong. It will stop a working blog from being cancelled on the wrong number, and it'll tell you early when the posts people read start getting found.

GA4 Blog Conversions FAQ

How do I see blog conversions in GA4?

For purchases in the same session, open Reports, Engagement, Landing page, search the table for your blog folder and read the transactions on the total row. For purchases by anyone who read a post at any point before buying, build a user segment in Explore with a sequence: a blog page view that is indirectly followed by a purchase.

What is the difference between landing page conversions and assisted conversions for a blog?

Landing page conversions count a purchase only when it happens in the session that started on a blog post. Assisted conversions count anyone who read a post earlier in their journey and bought later, often in another session. The second number is usually larger, and GA4 only gives it to you in Explore.

Why does GA4 attribution not give my blog any credit?

GA4 attribution shares credit between channels, sources, mediums and campaigns. A blog post is a page, and pages never enter the attribution models. If someone reads a post from Google and returns later to buy, the channel can get credit, but no standard report says which page that first visit landed on.

Should a blog sequence segment be user scoped or session scoped?

User scoped, with the sequence running across all sessions. Readers often buy on a later visit, and a same session sequence only finds people who read and bought in one sitting, which is the landing page number again. Google's segment builder only offers sequences in user segments anyway.

Can I pull a GA4 sequence segment into Looker Studio?

No. Google's documentation says GA4 segments and comparisons are not available through the Looker Studio connector, and the connector only matches the data in standard reporting. Path exploration has no Data API method at all. Pull the number by hand each month, or set up the BigQuery export if you need it automated.

How far back can a GA4 exploration look?

Only as far as your event data retention setting. Standard properties can choose 2 or 14 months, and the setting affects explorations and funnel reports but not standard reports. Raising it applies to data you still hold, so anything already deleted is gone for good.

Why is my blog conversion rate so low in GA4?

Usually for two reasons. Bot traffic inflates blog sessions, so the denominator is mostly not people. And GA4 only credits the blog when the purchase finishes in the session that began on a post. On one store, filtering to home market blog sessions turned a meaningless rate into 0.46 percent, which is normal for a blog.

What KPI should a blog have if it does not drive sales directly?

Non-brand search clicks and impressions from Search Console, plus engaged blog sessions from the markets you sell in. The blog is usually the only part of a store that ranks for non-brand questions, and both numbers can be checked every month without guessing which orders it caused.

Need to know what your blog really contributes?

I check the tracking first, pull both blog numbers, strip the bots out of the denominator, and set up a monthly report your founder can actually read.

GA4 Conversion TrackingTalk to Ram
RS

Written by Ram Kr Shukla

SEO and growth consultant with 20+ years in SEO and growth across 50+ brands, working as a consultant or Fractional Chief Digital Officer. Google Analytics and Google Ads certified. Checks GA4 tracking before judging any content result, and works daily in GA4 Explore, Search Console and Looker Studio.

Client Results, Not Claims

5x D2C revenue in 18 months via SEO
10x SaaS trials, zero new blog posts
120K Monthly organic visitors from zero

Free Resource

Steal My 40 Point SEO Audit Checklist

The exact list I run on every paid audit. Score your site in 30 minutes.

Get the checklist →

Is your site invisible to AI search?

Ask ChatGPT to recommend brands in your category. If you are not the answer, we should talk.

Book a Free Strategy Call