Skip to content

How to compare SEO and paid ads, step by step

Pull organic and paid revenue from one GA4 report. Split branded from non-branded clicks in Search Console, and find queries where you pay and also rank. Then set each channel's revenue against its full cost, SEO hours included, and test before you move money.

By , Founder & CEOUpdated 8 min read

Usually in seven steps. Pull organic and paid revenue from one GA4 report, then split branded from non-branded searches in Search Console. Find queries where you pay and also rank. Put a real price on SEO, check paid search against break-even, and move budget in small, dated steps.

This walkthrough uses three free tools you probably have already: GA4, Search Console and Google Ads. It puts what each channel brings and costs side by side. It cannot tell you what each one caused; the last step says how to start testing that.

Step by step

  1. Pull both channels from one report. In GA4, select Reports from the left menu, then Acquisition > Traffic acquisition. Set the date range to the past year and note revenue on the Organic Search and Paid Search rows. GA4 counts clicks from Google's AI Overviews and AI Mode as Organic Search. Path: GA4 > Reports > Acquisition > Traffic acquisition.
  2. Link Search Console to GA4. In Admin, under Product links, click Search Console Links, then Link, and choose your web data stream. Google leaves the Search Console collection unpublished, so find it under Library in the left navigation and publish it. Path: GA4 > Admin > Product links > Search Console Links.
  3. Split branded from non-branded searches. In Search Console, open the Performance report for Search results, select the Query filter and choose Non-branded, then Branded. If the filter is missing, choose Queries not containing and enter your brand name. Path: Search Console > Performance > Search results > Query filter.
  4. Find the queries where you pay and also rank. In Google Ads, go to Data manager in the Tools menu. Select Search Console under Featured products, then Proceed and Link. Then open the paid and organic report: Insights and reports in the Campaigns menu, then Report editor. Path: Google Ads > Tools > Data manager > Search Console.
  5. Check each search campaign against break-even. In Google Ads, select Modify columns from the Columns drop-down and add Conv. value/cost from the Conversions columns. Compare each campaign with 1 divided by your margin, leaving out the most recent days, which Google says can still be catching up. Path: Google Ads > Campaigns > Columns > Modify columns > Conversions.
  6. Put a real price on SEO. List a year of content, developer hours, tools and agency fees, including your own time at a fair rate. Then take the non-branded share of organic revenue as a rough return on that cost. Path: your invoices and time logs, plus the Organic Search row from step 1.
  7. Move money in one dated step, then watch the right numbers. Shift budget in one move and write down the date. For brand campaigns, pause them in a few regions first, not everywhere at once. Watch non-branded clicks in Search Console and total sales in Shopify, not each platform's own claims. Path: Shopify admin > Analytics > Reports > Category filter > Sales > Total sales over time.

Two limits of the Search Console data matter here. Google says Search Console keeps data for the last 16 months, so these reports go back no further. And in GA4, Search Console metrics only combine with landing page, device and country, so you get revenue by landing page, never by query.

Reading the paid and organic report takes one rule. For each query it puts Ad Clicks next to Organic Clicks, plus the combined clicks per query. A query where both columns are busy is where you may be paying for visits you would get anyway. Treat it as a test candidate, not an automatic cut. A query with organic clicks and no ad impressions is the opposite case. Google suggests filtering for ad impressions = 0 to find those, as keyword ideas for paid search.

Then watch what moves together. If you pause brand ads and organic clicks rise while total sales hold, the ads were mostly collecting. If total sales fall, they were doing real work.

A worked example

For illustration, with round invented numbers. Say GA4 and Search Console give you the rows below for the past year.

For illustrationOrganic SearchPaid Search
Revenue in Traffic acquisition€150,000€100,000
Share of clicks on your brand name60% (Search Console)a third (paid and organic report)
Revenue left after brand searches, roughly€60,000about €67,000
Cost for the year€30,000 of SEO work€25,000 of ad spend
Return on that cost2.0xabout 2.7x

The brand split is a rough cut. It assumes revenue follows clicks, so treat it as a sketch, not a measurement.

At a 40% margin, break-even ROAS is 1 / 0.40 = 2.5x, the arithmetic on the Break-even sheet of one store's export. For illustration, non-brand paid search clears that bar with little room, at about 2.7x. For illustration, SEO's 2.0x looks short of it, yet this year's content keeps earning next year, and the ads stop when the budget does.

So the sensible moves here are three. Keep the non-brand campaigns. Test the brand campaigns with a regional pause before you cut them. Judge SEO again in a year, on non-branded clicks and total sales.

What to check when the report looks wrong

  • Organic Search dwarfs everything, but most clicks are branded. Then search is collecting your brand demand, not creating it. Credit the channels that built the brand before you hand SEO a bigger budget.
  • Direct is the biggest row. GA4 files saved links and typed addresses there. Both SEO and ads feed it, so don't read it as nobody's work.
  • GA4 and Google Ads disagree on paid search. They keep different clocks. Google Ads reports conversions on the ad impression date, while other tools use the conversion date. Compare the same dates, or add the by conversion time columns Google suggests.
  • The paid and organic report is empty. It needs the Search Console link and counts text ads only, not Shopping ads. Its organic data also starts on the day you linked, with nothing from before.
  • The Non-branded filter is missing. Search Console doesn't offer it for sites with a low number of impressions. Use Queries not containing with your brand name instead.
  • Filtered totals sit below the chart. Anonymized queries drop out of the totals once a query filter is on. Compare filtered numbers with filtered numbers.

What to do this week

  1. Link Search Console in both places. In GA4, go to Admin, then Search Console Links under Product links. In Google Ads, go to Data manager in the Tools menu and select Search Console. Pass: Google Ads shows Linked in the Status column. Fail: it shows Requested, so ask the site's Search Console owner to grant access.
  2. Run the brand split for one quarter. In Search Console's Performance report, select the Query filter. Read Non-branded, then Branded, for the past three months. Pass: you have both click totals written down. Fail: the filter is missing, so use Queries not containing with your brand name.
  3. Find one query you pay for and rank on. Once the link has a few days of data, open the paid and organic report. Look for queries with both ad clicks and organic clicks. Pass: you have a short list to test. Fail: it is empty, so check the link and that your campaigns run text ads.

Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework

Sources, 1 October 2026: [GA4] Traffic acquisition report (Analytics Help); Default channel group (Analytics Help); Connect Search Console to Google Analytics (Analytics Help); Performance report (Search results): Common tasks and use cases (Search Console Help); Performance report (Search results): Dimensions and data groupings (Search Console Help); Performance report (Search results): Advanced filtering and comparison (Search Console Help); Product Linking: Link Search Console and Google Ads (Google Ads Help); About measuring paid and organic search results (Google Ads Help); About Target ROAS bidding (Google Ads Help); Data discrepancies: Factors and troubleshooting (Google Ads Help); Sales reports (Shopify Help Center).

Frequently asked questions

  • Why can't GA4 show revenue for each organic search query?
    Because Search Console data only combines with a few GA4 dimensions: landing page, device and country. You can see which queries bring clicks, and which landing pages earn revenue, but not revenue per query. The query detail stays in Search Console.
  • What counts as a non-branded query in Search Console?
    A search that doesn't include your brand name, which Google says is often more general. Search Console sorts queries into branded and non-branded, and warns that some may be labelled wrongly. The filter isn't available for sites with few impressions.
  • Why is my Google Ads paid and organic report empty?
    Usually because the link is new or missing. Google Ads only shows organic data from the day you linked Search Console, and the report counts text ads only, not Shopping ads. Check the link under Data manager in the Tools menu.

Go deeper: Causal attribution, explained.

Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.

Keep reading

Terms in this article

Browse the full glossary

Your platforms guess.
We run the math.

Upload a GA4 export and see what each channel caused, next to last-click, in 1–2 minutes. The read is yours to keep.

Free, in your browser: your file is not uploaded. The full read is €99, refundable within 30 days. Prices exclude VAT.
Or book a 30-min call.