← Back to insights
Guide · #705

GA4 Custom Events for SEO: The Setup Guide

Set up 4 custom GA4 events that turn SEO data into actionable insights. Step-by-step guide for founders tracking organic visibility and conversions.

Filed
May 5, 2026
Read
18 min
Author
The Seoable Team

Why GA4 Out of the Box Doesn't Tell You Anything About SEO

You shipped. Traffic trickles in. You log into GA4 and see pageviews. Then what?

Google Analytics 4 gives you raw numbers—sessions, users, bounce rate—but it doesn't tell you what actually matters for SEO. It doesn't show you whether organic visitors are engaging with your content. It doesn't reveal which keyword-driven pages convert. It doesn't track whether people are reading your blog posts or bouncing after three seconds.

Default GA4 is a vanity metric factory. You need custom events.

Custom events turn GA4 into a real SEO tool. They let you track specific user behaviors that matter to your business: how long someone reads your article, whether they click your CTA, if they scroll past the fold, whether they reach your pricing page from organic search.

This guide walks you through setting up four custom events that founders actually use. Not the 47 events some agency will try to sell you. Four. The ones that move the needle on organic visibility and conversions.

We'll cover the setup, the gotchas, and how to use these events to make faster SEO decisions.

Prerequisites: What You Need Before You Start

Before you set up custom events, confirm you have these in place:

GA4 property installed. Your site needs a GA4 container running. If you haven't set up GA4 yet, follow our step-by-step GA4 setup for SEO tracking from day one first. Don't skip this. Custom events won't fire without a working GA4 implementation.

Google Tag Manager (GTM) container. You can set up custom events directly in GA4 using gtag.js, but GTM is cleaner, safer, and easier to modify without touching code. If you need GTM setup help, read our guide to setting up Google Tag Manager without breaking your site. We cover container creation, GA4 wiring, and the mistakes that kill tracking.

Admin access. You need admin rights in both GA4 and GTM. If you're sharing a workspace, make sure you have edit permissions.

A text editor or spreadsheet. You'll document event names, parameters, and triggers as you build. This prevents naming chaos later (trust us, you'll have 15 events in six months if you don't document).

Tag Assistant installed. Before you ship any custom event, verify it's firing correctly using Google Tag Assistant to check your GA4, GSC, and GTM setup. This catches silent tracking failures that cost you data for months.

The Four Custom Events Every Founder Needs

We're setting up four events. Not more. These four reveal whether your SEO is working:

1. Content Engagement (scroll depth). Measures whether organic visitors actually read your content past the headline. A 3,000-word article with 80% of readers bouncing at 10% scroll depth isn't ranking well—it's attracting the wrong traffic.

2. CTA Click. Tracks whether organic visitors click your call-to-action buttons. This connects organic traffic to conversions. You'll know if your blog-to-product funnel works.

3. Form Submission. Records when someone submits a contact form, newsletter signup, or waitlist form from organic traffic. Direct conversion tracking without relying on UTM parameters that break.

4. Internal Link Click. Logs when organic visitors click links to other pages on your site. This reveals which content drives deeper engagement and which pages need better internal linking strategy.

These four events answer the questions that matter:

  • Is my organic traffic quality or garbage?
  • Are my blog posts converting?
  • Which content drives deeper engagement?
  • What's my actual organic-to-conversion rate?

You can add more events later. Start with these four and use the data before you expand.

Event 1: Content Engagement (Scroll Depth Tracking)

Why This Event Matters

A visitor lands on your blog post from Google. They spend 45 seconds on the page and bounce. Google's algorithm notices. Your rankings drop. You don't know why.

Scroll depth tells you if your content is actually engaging people. If 90% of organic visitors scroll past 50% of your article, your content resonates. If 70% bounce before scrolling 25%, your headlines are misleading or your content doesn't match search intent.

This event separates real SEO wins from ranking mirages.

Setting Up Scroll Depth in GTM

Step 1: Create a trigger in GTM.

Log into Google Tag Manager. Go to your container. Click Triggers in the left sidebar. Click New.

Name the trigger: scroll_depth_25

Click Trigger Configuration. Select Scroll Depth.

Under "Trigger fires on," select Some Scrolls. Set it to trigger when users scroll 25% down the page.

Click Create.

Repeat this process for 50%, 75%, and 90% scroll depth. Name them scroll_depth_50, scroll_depth_75, and scroll_depth_90.

You now have four triggers. Each fires when a user hits that scroll threshold on any page.

Step 2: Create a tag in GTM to send the event to GA4.

Go to Tags. Click New.

Name it: GA4 - Content Engagement

Click Tag Configuration. Select Google Analytics: GA4 Event.

Paste your Measurement ID (found in your GA4 admin settings under Data Streams).

Under Event Name, type: content_engagement

Click Add Row under Event Parameters. Set:

  • Parameter Name: engagement_depth
  • Parameter Value: {{Scroll Depth Threshold}}

This captures which scroll depth triggered the event (25, 50, 75, or 90).

Under Firing Triggers, select all four scroll depth triggers you just created.

Click Create.

Step 3: Test the event in preview mode.

In GTM, click Preview (top right). Enter your website URL. Open your site in a new tab.

Scroll down. Watch the GTM console at the bottom of your screen. You should see the content_engagement event fire as you hit each scroll threshold.

If nothing fires, check:

  • Is your GA4 measurement ID correct?
  • Did you select all four scroll triggers?
  • Is GA4 actually installed on your site?

Once you see the event firing, click Submit in GTM to publish the changes.

Viewing Scroll Depth Data in GA4

Give it 24 hours for data to populate. Then:

  1. Open GA4.
  2. Go to ReportsEngagementEvents.
  3. Look for content_engagement in the event list.
  4. Click it to see how many times each scroll depth was reached.

You can also create a custom report. Go to ReportsCreate New Report. Add content_engagement as a metric and segment by Landing Page or Organic Search Traffic. This shows you which articles engage readers and which ones don't.

Event 2: CTA Click Tracking

Why This Event Matters

You write a blog post targeting a high-intent keyword. Google ranks you #3. Traffic comes in. Nobody clicks your CTA button.

Without CTA click tracking, you won't know. You'll assume the traffic is low-quality. You'll blame Google. You'll write more blog posts. Nothing changes.

CTA click events show you whether your content-to-conversion funnel works. If organic visitors click your CTA at a 5% rate, your funnel is broken. If they click at 25%, you've found a winner.

This event is the bridge between SEO and revenue.

Setting Up CTA Click Events

Step 1: Identify your CTA buttons.

Open your website. Find every button that matters:

  • "Get Started" buttons
  • "Download" buttons
  • "Sign Up" buttons
  • "Book a Demo" buttons
  • Any button that drives toward conversion

Note the CSS class or ID of each button. For example: class="cta-button" or id="signup-btn".

Step 2: Create a trigger in GTM for CTA clicks.

Go to Triggers in GTM. Click New.

Name it: cta_button_click

Click Trigger Configuration. Select Click - All Elements.

Under "This trigger fires on," select Some Clicks.

Set the condition: Click Classescontainscta-button

(Replace cta-button with whatever class your CTA buttons use.)

Click Create.

Step 3: Create a tag to send CTA clicks to GA4.

Go to Tags. Click New.

Name it: GA4 - CTA Click

Click Tag Configuration. Select Google Analytics: GA4 Event.

Enter your Measurement ID.

Under Event Name, type: cta_click

Add Event Parameters:

  • Parameter Name: cta_text
  • Parameter Value: {{Click Text}}

This captures the text on the button ("Get Started", "Sign Up", etc.).

Add another parameter:

  • Parameter Name: cta_url
  • Parameter Value: {{Click URL}}

This captures where the button links.

Under Firing Triggers, select cta_button_click.

Click Create.

Step 4: Test and publish.

Preview your site in GTM's preview mode. Click a CTA button. Watch the console fire the cta_click event.

Once verified, submit the changes.

Analyzing CTA Click Data

In GA4:

  1. Go to ReportsEngagementEvents.
  2. Find cta_click.
  3. Create a custom report: Metrics = cta_click event count. Dimensions = Organic Search Traffic and Landing Page.

This shows you: "From organic search, which pages drive the most CTA clicks?"

You can also segment by traffic source. Go to AcquisitionTraffic Source. Filter to organic traffic. Then look at Conversions and cross-reference with cta_click events.

Event 3: Form Submission Tracking

Why This Event Matters

GA4's default conversion tracking is fragile. It relies on page views. If someone submits a form and the page doesn't change (common with JavaScript-based forms), GA4 sees nothing.

Form submission events track the actual moment someone converts. No page reload required. No UTM parameter required. Just: someone filled out a form.

This is your cleanest conversion signal for SEO.

Setting Up Form Submission Events

Step 1: Identify your forms.

Find every form on your site that matters:

  • Contact forms
  • Newsletter signups
  • Waitlist forms
  • Account creation forms

Note the form ID or name. For example: id="contact-form" or name="newsletter-signup".

Step 2: Create a trigger for form submissions.

Go to Triggers in GTM. Click New.

Name it: form_submission

Click Trigger Configuration. Select Form Submission.

Under "This trigger fires on," select Some Forms.

Set the condition: Form IDequalscontact-form

(Use your actual form ID.)

Click Create.

If you have multiple forms, you can create a single trigger that fires on all form submissions:

Instead of specifying a single form ID, leave the condition blank. The trigger will fire on any form submission on your site.

Step 3: Create a tag to send form submissions to GA4.

Go to Tags. Click New.

Name it: GA4 - Form Submission

Click Tag Configuration. Select Google Analytics: GA4 Event.

Enter your Measurement ID.

Under Event Name, type: form_submission

Add Event Parameters:

  • Parameter Name: form_name
  • Parameter Value: {{Form ID}}

This captures which form was submitted.

Add another parameter:

  • Parameter Name: form_destination
  • Parameter Value: {{Page URL}}

This captures which page the form was on.

Under Firing Triggers, select form_submission.

Click Create.

Step 4: Test and publish.

Preview your site. Fill out and submit a form. Watch the form_submission event fire in the GTM console.

Submit the changes.

Viewing Form Submission Data

In GA4:

  1. Go to ReportsEngagementEvents.
  2. Find form_submission.
  3. Create a custom report: Metrics = form_submission count. Dimensions = Organic Search Traffic and Landing Page.

This answers: "Which organic landing pages drive the most form submissions?"

You can also set up a conversion. Go to AdminConversions. Click Create New Conversion. Select form_submission as the event. This makes form submissions appear in your main conversion reports.

Once you've linked GA4 to Google Search Console using the 2-minute setup, you'll see which search queries drive form submissions. This is SEO gold.

Event 4: Internal Link Click Tracking

Why This Event Matters

Organic visitors land on your blog post. Do they explore deeper? Do they click links to your product pages? Or do they bounce?

Internal link clicks reveal engagement patterns. If 40% of organic visitors click internal links from your blog, your content drives discovery. If 5% do, your internal linking is invisible.

This event also helps you optimize your site structure. You'll see which content acts as a gateway to deeper pages. You'll know which internal links actually work.

Setting Up Internal Link Click Events

Step 1: Create a trigger for internal link clicks.

Go to Triggers in GTM. Click New.

Name it: internal_link_click

Click Trigger Configuration. Select Click - All Elements.

Under "This trigger fires on," select Some Clicks.

Set the condition: Click URLcontains → your domain name (e.g., yourdomain.com)

Add another condition:

ANDClick URLdoes not containyourdomain.com/thank-you (or whatever page you want to exclude)

This ensures the trigger fires only when someone clicks a link to your own domain, not external links.

Click Create.

Step 2: Create a tag to send internal link clicks to GA4.

Go to Tags. Click New.

Name it: GA4 - Internal Link Click

Click Tag Configuration. Select Google Analytics: GA4 Event.

Enter your Measurement ID.

Under Event Name, type: internal_link_click

Add Event Parameters:

  • Parameter Name: link_text
  • Parameter Value: {{Click Text}}

This captures what the link says.

Add another parameter:

  • Parameter Name: destination_url
  • Parameter Value: {{Click URL}}

This captures where the link goes.

Add another parameter:

  • Parameter Name: source_page
  • Parameter Value: {{Page URL}}

This captures which page the link was clicked from.

Under Firing Triggers, select internal_link_click.

Click Create.

Step 3: Test and publish.

Preview your site. Click an internal link. Watch the internal_link_click event fire.

Submit the changes.

Analyzing Internal Link Click Data

In GA4:

  1. Go to ReportsEngagementEvents.
  2. Find internal_link_click.
  3. Create a custom report: Metrics = internal_link_click count. Dimensions = Source Page and Destination URL.

This shows you: "From which pages do organic visitors click the most internal links? Where do they go?"

You can also segment by organic traffic. Go to AcquisitionTraffic Source. Filter to organic. Then look at the internal link clicks. This reveals which content from Google drives the deepest engagement.

Use this data to improve your internal linking. If a blog post drives clicks to your pricing page, that link is working. If a post about your product features drives zero clicks to the product page, your internal link is either missing or irrelevant.

Putting It All Together: The SEO Reporting Dashboard

You've set up four custom events. Now you need to look at them.

Don't create a 47-metric dashboard. Create one simple report that answers: "Is my SEO working?"

Go to Reports in GA4. Click Create New Report.

Set it up like this:

Report Name: "Organic SEO Performance"

Metrics:

  • Users (organic traffic)
  • Sessions (organic traffic)
  • content_engagement event count
  • cta_click event count
  • form_submission event count
  • internal_link_click event count

Dimensions:

  • Date
  • Organic Search Traffic (to filter to organic only)

Date Range: Last 30 days

This single report shows you:

  • How much organic traffic you're getting
  • How many people engage with your content
  • How many click your CTAs
  • How many convert
  • How many explore deeper pages

Check this report weekly. If engagement metrics are flat while traffic grows, your content isn't resonating. If CTAs are flat while engagement is high, your conversion funnel is broken.

For deeper analysis, read our guide to the 5 GA4 reports every busy founder should bookmark. We cover the reports that actually matter and how to set them up in minutes.

You can also connect this data to Looker Studio to build a one-page SEO dashboard that pulls from GA4, Google Search Console, and other sources. This gives you a complete picture of organic visibility and conversions in one place.

Troubleshooting: Why Your Custom Events Aren't Firing

You set up the events. You see nothing in GA4.

Here's what went wrong:

Problem 1: GA4 isn't installed.

Check your site. Open the browser console (F12). Type gtag. If nothing returns, GA4 isn't running. Go back and set up GA4 properly from day one.

Problem 2: GTM is installed but not wired to GA4.

Go to GTM. Check your GA4 tag. Does it have the correct Measurement ID? Copy the ID from GA4 admin settings and paste it into your GTM tag. Republish.

Problem 3: The trigger isn't firing.

Use GTM's preview mode. Load your site. Perform the action (scroll, click, submit form). Does the trigger fire? If not, the trigger condition is wrong. Check the CSS class, form ID, or URL pattern. Make sure it matches your actual HTML.

Problem 4: The event fires in preview but not in production.

You didn't publish the changes. In GTM, after testing, click Submit to publish. Wait 15-30 minutes for changes to propagate.

Problem 5: Data shows in GTM but not in GA4.

GA4 takes 24-48 hours to populate real-time data in reports. Check the Real-time report in GA4 first. If events appear there, they'll show up in regular reports tomorrow. If they don't appear in real-time, the GA4 tag isn't configured correctly.

Use Google Tag Assistant to verify your GA4, GSC, and GTM setup. It catches silent tracking failures that waste weeks of data.

Advanced: Custom Event Parameters and Segments

Once you have the four basic events working, you can add parameters to get more granular data.

For Content Engagement: Add a parameter for article category. Track which types of content engage readers best.

For CTA Clicks: Add a parameter for button position (above fold, middle, bottom). See which placements convert best.

For Form Submissions: Add a parameter for form type (contact, newsletter, waitlist). Track which forms drive the most conversions from organic.

For Internal Link Clicks: Add a parameter for link category (product, pricing, blog). See which content categories organic visitors explore.

To add parameters, follow the same GTM process. Go to your tag. Add a new parameter. Use built-in variables like {{Click Text}} or {{Page URL}}, or create custom variables.

Then in GA4, segment your reports by these parameters. You'll see patterns you missed with basic event data.

For a complete guide to GA4 event strategy and advanced tracking, check out how to set up custom events in GA4 with Google Tag Manager. The Google Developers guide on setting up events in GA4 also covers recommended events and best practices.

Connecting Custom Events to Conversions

Custom events are data. Conversions are signals.

Go to AdminConversions in GA4. Click Create New Conversion.

Select one of your custom events (e.g., form_submission).

This converts the event into a conversion metric. Now it appears in:

  • Your main Acquisition reports
  • Conversion Rate calculations
  • Goal Completion Rate metrics

You can set up multiple conversions. Typically:

  • form_submission = primary conversion
  • cta_click = secondary conversion
  • content_engagement (at 75% scroll) = engagement indicator

Once you have conversions set up, link GA4 to Google Search Console in 2 minutes. This shows you which search queries drive conversions. You'll see: "People searching for 'X' land on page Y and convert at 8% rate."

This is where SEO becomes revenue.

Key Takeaways: What You've Built

You've set up four custom events that transform GA4 from a vanity metric tool into an SEO instrument.

Content Engagement tells you if your content resonates. High scroll depth = good content match. Low scroll depth = wrong audience or misleading headlines.

CTA Clicks show whether your blog drives traffic toward conversion. This is your content-to-funnel bridge.

Form Submissions are your cleanest conversion signal. No page reload needed. No UTM parameter required. Just real conversions from organic search.

Internal Link Clicks reveal how deeply organic visitors explore your site. This shows content quality and internal linking effectiveness.

These four events answer the questions that matter:

  • Is my organic traffic high quality?
  • Are my blog posts converting?
  • Which content drives engagement?
  • What's my real organic ROI?

Next steps:

  1. Set up all four events using the steps above.
  2. Test them in GTM preview mode before publishing.
  3. Use Tag Assistant to verify they're firing correctly.
  4. Wait 24 hours for data to populate in GA4.
  5. Create the simple "Organic SEO Performance" report we outlined.
  6. Check it weekly. Make decisions based on what you see.
  7. Read our guide to GA4 events for SEO: what to track beyond pageviews for deeper strategy on event measurement planning.

Don't overthink this. Don't add 20 events. Ship these four. Use the data. Iterate.

Your SEO is only as good as your measurement. These four events give you real measurement.

Connecting Everything: The Complete SEO Stack

Custom events are one piece. To see the full picture, connect them to your other SEO tools.

You should have:

  1. Google Search Console to see which keywords drive traffic.
  2. GA4 with custom events to see what happens after people click.
  3. Google Tag Manager to manage tracking without touching code.
  4. Looker Studio to visualize everything in one dashboard.

If you're missing any of these, start here:

Once everything is connected, you have a complete SEO measurement system. You'll see:

  • Which keywords drive traffic (Search Console)
  • How visitors behave after clicking (GA4 + custom events)
  • Whether they convert (form submissions, CTA clicks)
  • Which content drives the deepest engagement (internal link clicks, scroll depth)

This is the foundation of data-driven SEO. Not guessing. Not agency promises. Real data.

For a complete 100-day SEO roadmap that builds on this measurement foundation, check out our playbook from busy to cited: a founder's roadmap from day 0 to day 100. It covers everything from audit to content to visibility.

Final Word: Ship It

GA4 out of the box is useless for SEO. These four custom events make it useful.

Don't wait for perfect. Set them up this week. Test them. Publish. Check the data in a month.

You'll see patterns. You'll find broken funnels. You'll discover which content actually works.

That's when you iterate. That's when SEO becomes a lever you can actually pull.

Ship these events. Then ship better content based on what the data tells you.

Free weekly newsletter

Get the next one on Sunday.

One short email a week. What is working in SEO right now. Unsubscribe in one click.

Subscribe on Substack →
Keep reading