Analytics. Measuring the blog
GA4 Blog Conversions: Is Your Blog Actually Making Money?
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.
| Number 1: blog as landing page | Number 2: blog anywhere before purchase | |
|---|---|---|
| Question it answers | Did 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 lives | Reports, Engagement, Landing page | Explore only: sequence segment or path exploration |
| Scope | Session | User, across sessions |
| Dashboard friendly? | Yes, through the Data API and Looker Studio | No, it's a manual pull |
| Bound by retention? | No, standard reports keep their history | Yes, by event data retention |
| Usual size | Small | Larger, 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.
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.
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:
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.
| KPI | Where it comes from | Why it's honest |
|---|---|---|
| Non-brand clicks to blog URLs | Search Console, filtered to blog pages and excluding brand queries | Doesn't depend on tags, cookies or consent |
| Non-brand impressions and position | Search Console, same filter | Moves months before clicks do |
| Engaged blog sessions, home market | GA4 landing page report, country filtered | Bots rarely count as engaged |
| Buyers who read a post first | Explore sequence segment, monthly | The 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.
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.
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.
The measurement series: a Looker Studio SEO dashboard from GSC and GA4, separating blog bots from real readers and branded vs non-branded growth. Related: the Shopify GA4 funnel audit and the Shopify SEO hub.
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 RamWritten 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.




