It's no secret that Google uses user behavior data as part of its search ranking algorithm.
I've positively tested Chrome traffic as a ranking factor back in 2020.
Public CrUX datasets include bucketed origin popularity since 2021.
The Helpful Content Updates (HCUs) are largely based on click, user, and search behavior to determine document and site quality.
Erfan Anzimi, who leaked the Google content warehouse API protobuf documentation, has found that bad user signals have a negative impact on rankings.
Bill Slawski wrote about the positive impact of long clicks on rankings a decade ago.
The recent antitrust trial against Google has reignited the discussion about their use of user signals.
Long story short, if you've ignored user behavior in your SEO strategy and think it's still only about links and document and site relevance, and then wonder why your sites are getting hit by algorithm updates, you've been willfully blind.
I won't go into the details here, but just think for a second about the differences in user behavior between eCommerce and traditional affiliate sites and you'll see what the current algorithm is about outside of links and text relevance (which are still important to get rankings and clicks in the first place).
So, what are you going to do about it?
You can and should track and optimize for click-through rate (CTR) on search engine result pages (SERPs).
But even more important is how users who click on your result react to and interact with it (and for how long and how often), which can boost or tank your rankings.
That's what this guide is all about.
How to Track User Satisfaction Metrics With PostHog
I think we can all agree that GA4 is a nightmare.
Meet PostHog, a much better and more flexible alternative to Google Analytics that includes A/B testing, session recording, surveys, fully customizable data warehouse SQL queries, custom data pipelines, and more.
I'm going to assume that you can set up the tracking JavaScript (and enable Autocapture, which is enabled by default) yourself and jump right into the setup:
1. Create a New Dashboard
First, create a new Dashboard and select the "Blank" template.
Name it whatever you want.
2. Create a New Product Analytics Insight
Next, create a new Insight and select the SQL tab.
3. Paste SQL Query Template
Then paste the SQL template (you can find this further below) and click "Update and run".
4. Set up Conditional Formatting
Set up conditional formatting based on your preferences.
You can also change the default date range to "Last 30 days" or any other range that provides meaningful data based on your site's traffic.
5. Name and Save Insight
Name and save the insight.
6. Add the Insight to Your Dashboard
Now all you need to do is add the Insight you just created to the blank dashboard you created in step 1.
User Satisfaction Metrics Template for PostHog Insights
This template is for custom insights as described above:
SELECT
session.$entry_pathname as landing_page,
round(avg(toFloat(session.$session_duration)), 2) as avg_duration,
count(*) as total_sessions,
countIf(toFloat(session.$session_duration) > 60) as long_clicks,
countIf(toFloat(session.$session_duration) <= 60) as short_clicks,
round(countIf(toFloat(session.$session_duration) > 60) * 100.0 / count(*), 2) as pct_long_clicks,
round(avg(session.$is_bounce) * 100, 1) AS pct_bad_exp
FROM events AS e
WHERE {filters}
AND equals(event, '$pageview')
AND toFloat(session.$session_duration) < 1800
AND notLike(properties.$current_url, '%?%')
AND notLike(properties.$current_url, '%#%')
GROUP BY
landing_page
ORDER BY
total_sessions DESC
LIMIT 50000
User Satisfaction Metrics Template for PostHog Data Warehouse View
The template below is for PostHog's data warehouse views, which you can then use to pull data into insights to create trend charts, etc.
The setup process is different from the Insights SQL template above.
1. Create New Data Warehouse View
Paste the code below, click "Update and run", then "Save as view" and name it pct_long_clicks.
SELECT
toStartOfDay(timestamp) as day_start,
round(
countIf(toFloat(session.$session_duration) > 60) * 100.0 /
nullIf(count(*), 0),
2
) as pct_long_clicks
FROM events
WHERE
event = '$pageview'
GROUP BY day_start
ORDER BY day_start
2. Create New Trends Insight
Create a new Insight and use the Trends tab. Select the data warehouse view you just created.
3. Select Property Value
Select property value "sum" of the data warehouse property pct_long_clicks.
Then save the insight and add it to your user satisfaction metrics dashboard (you've already learned how to do this).
Based on this data warehouse view, you can generate a variety of insights, not just trend lines.
How to Use the User Satisfaction Metrics Dashboard
First, a brief overview of what these metrics mean:
- Long clicks: sessions that lasted more than a minute
- Short clicks: sessions that lasted less than a minute
- pct_long_clicks: percentage of long clicks
- pct_bad_exp: percentage of sessions shorter than 10 seconds and without interactions (same as PostHog's bounce rate)
Your overall objective is to increase the percentage of long clicks and decrease the percentage of bad experience on enough pages to significantly affect site-wide user behavior data.
How to Filter the User Satisfaction Metrics
By default, the dashboard displays metrics for all visitors.
However, if you want to maximize the SEO impact, you'll want to focus on both organic traffic from Google and Chrome traffic.
To narrow it down completely, organic traffic from Google from visitors using Chrome is likely to have the most impact on your site and page quality signals.
You can do all this by using the "Add filter" button:
You have a huge selection of properties to filter by, and you can add as many filters as you like to get exactly the data you need.
How to Improve User Satisfaction Metrics
To avoid having to say "it depends," I'll boil the answer down to a single high-level principle:
Give your visitors something to use, not just read and return to repeatedly, that matches and satisfies the query intent.
...I know, this is about as "helpful" as "write helpful content".
...but this is why Reddit. 😉