Free GA4 SEO Looker (Data) Studio Template

Want to see your SEO traffic, but not touch GA4? We've built a free Looker Studio template you can download from our resource library to get you started.

Download our Looker Studio GA4 SEO Template

There are lots of caveats and compromises made on this dashboard and we’re gonna talk about them, but here’s the crux of it.

Sometimes you just need the basics

GA4 is great for analysts and data people, we really quite like it. But we spend 90% of every day working with SQL and databases. That is not most people.

It’s definitely not me of 10 years ago, spinning up websites and opening GA every day to see how my blog post is doing.

If you’re just getting started, or need a quick solution this Data Studio dashboard should get you going.

What does this dashboard do?

Every dashboard has jobs it helps you do. What does this one cover?

  1. Where does my organic traffic come from?
  2. My organic traffic has dropped/gone up. Why?
  3. Which pages/segments are doing particularly good or bad?

We’re going to go through them, but first here’s how to set the dashboard up.

How do you set up the dashboard?

Step 1: Make a copy of the Google updates sheet

You can find that here.

Remove any you don't care about and add ones that are missing that you want.

Step 2: Make a copy of the report

You’ll find the button here.

copy button

Update it to use your GA4 profile and the newly copied Google Sheet.

copy button

Step 3: Personalise the categories & filters

There are two updates you need to do here.

  1. Update the content filter to match the URLs on your site.
  2. Update the page categories case statement to match templates on your website.



The general format of the categories case statement is as follows:



WHEN (regexp_contains(Landing page, r"/[Bb]asket$")) THEN "cart & checkout"

If you’re not comfortable with regex you can use regex 101 to check it's working or if you just want contains then this format says contains “category”.

WHEN Landing page LIKE '%/category/%' THEN "cart & checkout"

Step 4:

You're off to the races.

Back to how to use the dashboard.

Job 1: Where does my organic traffic come from?

First an over time summary

Right at the top of the dashboard we have 2 overtime graphs and some summary numbers.

We can at a glance see any quick trends in either revenue of sessions.

Personalisation hint: If you want view this over longer time periods, it might be worth making a copy of this page and turning the date interval to weeks. Days are hard to read over long time periods.

page1 image

Then we dig into segments

The rest of dashboard is all about segmentation.

We have a series of segment breakdown tables below, these all cross filter, so if you pick any segment it will filter the rest of the dashboard so we can see how it performs over time and how it breaks down across the other segments.

page1 image - segments

At the end we show URLs

Finally we have our URL level data. At this point if you’ve left any filters running you’ll only see the URLs, for that segment so we can quickly see our content, products etc.

Also algorithm updates

We’ve joined this data with a spreadsheet of algorithm updates. It will appear over the top of the data with a red line (like you can see in the image).

We took our list from this excellent Search Engine Journal algo reference.

You’ll probably want to pick the specific ones relevant to you rather than have all of them. But you could also have all of them.

Personalisation tip:

Outside of handful of industries I personally fall into “ignore, keep calm and carry on” approach to Google algorithm updates, but we know plenty of people don’t!

If you don’t care about algorithm updates, you can just switch the data source away from the blend and turn the graphs back to time series.

Job 2: My organic traffic has dropped. Why?

Data is always more useful in context and that context usually is:

  • My traffic has gone up/down. Why?

For that we have a second page with period comparison. It’s identical to the first page but with a handful of changes.

Now for each segment you can see how it's changed against the previous year, allowing you to see if it's seasonality or actual changes affecting your traffic in a basic way.

Everything now has a period comparison.

We’ve set YoY (because its the best way of compensating for seasonality), but again you could customise to whatever you want.

page2 - period comparison

Because we're using the default built in connector we can't do the most useful period comparisons here. You can see this example from our BigQuery GA4 example template, where we're able to show percentage of total change and it's the most useful of ways to breakdown change.

page2 - period comparison

No on algo updates on the graph

We can’t show algo updates on the graph due to restrictions with Looker Studio. You could manually add them on as reference lines if they’re particularly important.

We have still kept them in the table and it cross filters so it will show any google updates in the time period you have.

Job 3: Which segments or pages are doing particularly good/bad?

Finally we show you the top pages which have increased/dropped for sessions and revenue.

page3 - changed traffic

Personalisation note: We provide two segments an overall and a content one, although of course you could just copy and personalise to your hearts content.

There are limits here primarily around calculating percentage change in Looker Studio. You’ll note in the image many of the rows are very green. This is because there is one large value dominating and blowing out the heatmap.

There are 2 options here:

  1. Filter out any particularly big segments on your site and show them separately.
  2. Move off the default connector.

Period comparisons aren’t the greatest so the highlighting is hard to setup. For the best possible insight we would also show either a weighted percentage change or show the change as a percentage of the total, but setting that up without some sort of data pre-processing like BigQuery is very hard.

What can’t it do?

This dashboard is made entirely with the free GA4 connector provided by Google so we have some certain limits.

When you bump into these limits, you’re probably going to want to move towards data warehousing (which is what we do). If you’d like help with that please reach out to us, otherwise it’s time to get in touch with your BI team to help you get that setup!

Sampling & cardinality:

We’re not super likely to hit sampling/cardinality for this report.

But if you run this dashboard for a long time period or put it on a huge property then we can plausibly hit this (cardinality is more likely than sampling, but both are possible).


It’s not a particularly quick dashboard and there isn’t anything we can do about it, we talk about that at length in our blog post - why is your looker studio dashboard slow.

No personalisation of metrics:

We can’t personalise the report metrics to our business. Some standard alterations that would make our reporting notably more insightful:

  • Changing the definition of engagement: We know our visitors & customers and what we’d count as engagement.
    • We should define engagement based on our page type a basic example would be something like: category pages should trigger based on filtering, clicking a product or refining a search.
  • Comparing user segments: We’re subject to the same user limits as the rest of GA4, 14 months maximum retention for user data and we only get the segments that GA connector has. Not ideal.

Which brings us onto:

No changing attribution

LNDC attribution is not a good model of how people buy.

If we’re trying to attribute credit and understand what is working, we can gain a lot from customising our attribution model, we don’t have to move to complex ML, just picking something slightly more sensible like time decay will help a lot.

Hard to join with other data

Not impossible. You’ll note we have an algo updates section.

But blends in Looker Studio, are slow, fiddly, prone to causing issues and super hard to debug.

We can join with other GA properties more easily (although it will slow down our dashboard a lot), but more complex joins like search console, crawl, logs, or internal conversion data will be hard/impossible.

Playing around with time periods

Doing anything other than a single time comparison will be difficult. We have to use blends to accomplish it and as covered above they are slow, fiddly and hard to debug.

API limits

The GA4 API has quota limits. If it’s just you using a report for a small site, it’s unlikely to be a problem.

If it’s you and a team and lots of data its possible to hit and which point your dashboard just stops working until the quota renews.

Because this is a public GA4 property you might open the report and see this.

page3 - api limits

Period comparisons are not the greatest

When traffic is 16% down, we want to know where that 16% is coming from.

Take this table:

  • The relative sessions change is what we get in the default connector.
  • The % of Total Sessions change is what we actually want most of the time.

We can see categories is actually responsible for more of the drop than the homepage.


If you’re just getting into it, I hope this template will save you grief from the GA4 interface and having to figure out what works.

If you start running into the limits it’s time to start learning about GA4 and BigQuery and moving towards data warehousing (We’ll have more on that soon).

If you’ve got any questions about the dashboard, fire them over on Twitter and if you’d like to do more complex stuff and want help with GA4 BigQuery please get in touch!

Dom Woodman Headshot
By Dominic Woodman -- I'm the founder of Piped Out and have never loved 3rd person bio's.

If you'd like a demo/quote, please contact us!

Book a demo