GA4 Event Tracking Setup in GTM Without Code — Complete Guide
TL;DR: To set up GA4 custom events in GTM without code: create a trigger matching the user action (click, form, scroll), add a GA4 Event tag with a snake_case event name and parameters, register custom dimensions in GA4, and test with Tag Assistant + DebugView. Always check GA4's recommended events list before creating custom ones.
Google Analytics 4 is event-based. Every interaction — page view, button click, scroll, purchase — is an event. GA4 collects some events automatically, but the most valuable insights come from custom events you define yourself. The good news: you don't need to write a single line of code. Google Tag Manager handles everything.
This guide covers the full process: understanding GA4's event model, creating custom events in GTM, naming conventions, adding parameters, and verifying that data flows into your GA4 reports.
How do GA4 events work?
GA4 has four types of events:
- Automatically collected —
page_view,session_start,first_visit. These fire without any setup. - Enhanced measurement —
scroll,click(outbound),file_download,video_start. Toggle them on in GA4 admin. - Recommended events — Google's suggested names for common scenarios:
sign_up,purchase,add_to_cart,generate_lead. Using these unlocks built-in GA4 reports. - Custom events — anything specific to your business:
click_hero_cta,submit_demo_request,view_pricing.
The key rule: always check if a recommended event name fits before creating a custom one. Recommended events unlock built-in GA4 reporting features. Custom events require manual report setup.
How should I plan my GA4 event?
Before touching GTM, decide:
- What user action are you tracking? A button click, form submission, page scroll, video play?
- What's the event name? Use
snake_case, keep it under 40 characters. Examples:click_signup_cta,submit_contact_form,view_pricing_page. - What parameters do you need? GA4 allows up to 25 custom parameters per event. Common ones:
button_text,button_location,form_id,page_section.
Naming Conventions That Scale
With a 500-event-name limit per GA4 property, consistency matters. Use a pattern:
{action}_{object}_{detail}
click_hero_signup
click_nav_pricing
submit_contact_form
view_pricing_section
download_whitepaper_pdf
This pattern makes it easy to filter events in GA4 Explore reports — you can filter all click_* events or all events on a specific page section.
How do I create a trigger for GA4 events in GTM?
The trigger tells GTM when to fire the tag. The trigger type depends on the user action:
| User Action | GTM Trigger Type | Key Condition |
|---|---|---|
| Button click | Click - All Elements | Click Element matches CSS selector |
| Link click | Click - Just Links | Click URL contains value |
| Form submit | Form Submission | Form ID or Form Classes |
| AJAX form | Click - All Elements | Click Element matches submit button |
| Element appears | Element Visibility | CSS selector of the element |
| Page scroll | Scroll Depth | Vertical scroll percentage |
For click tracking, the most critical piece is the CSS selector. A bad selector breaks your tracking the moment the site updates. Prioritize data-* attributes, role, name, and aria-label over class names or IDs.
GTM Event Helper auto-generates the CSS selector when you click an element. It filters out unstable identifiers (CSS-in-JS hashes, random IDs) and shows a stability badge for each option.
How do I create a GA4 Event tag in GTM?
In GTM, go to Tags → New:
- Tag Type: Google Analytics: GA4 Event
- Measurement ID: Your GA4 Measurement ID (format:
G-XXXXXXXXXX). If you already have a GA4 Configuration tag, select it instead. - Event Name: Your planned event name (e.g.,
click_hero_signup) - Event Parameters: Add rows for each parameter:
- Parameter Name:
button_text→ Value:{{Click Text}} - Parameter Name:
button_url→ Value:{{Click URL}} - Parameter Name:
page_section→ Value:hero(static)
- Parameter Name:
- Triggering: Select the trigger you created in Step 2
Using GTM Variables as Parameter Values
GTM's built-in variables give you dynamic data without code:
{{Click Text}}— visible text of clicked element{{Click URL}}— href of clicked link{{Click Classes}}— CSS classes of clicked element{{Page Path}}— current URL path{{Page URL}}— full page URL
Make sure these are enabled in GTM under Variables → Configure → Built-In Variables.
How do I register custom parameters in GA4?
This is the step most people forget. GA4 won't show custom parameters in reports until you register them:
- In GA4, go to Admin → Custom definitions → Custom dimensions
- Click "Create custom dimension"
- Set the Dimension name (what appears in reports) and the Event parameter (must match exactly what you set in GTM)
- Set the Scope to "Event"
GA4 allows up to 50 custom dimensions and 50 custom metrics per property. Plan accordingly.
How do I test GA4 events with Tag Assistant?
- In GTM, click Preview to launch Tag Assistant
- Navigate to the page and perform the action (click, submit, scroll)
- In the Tag Assistant timeline, find your event
- Verify the tag fired and check the event parameters
Verify in GA4 DebugView
Tag Assistant confirms GTM fired the tag. GA4 DebugView confirms the data arrived:
- In GA4, go to Admin → DebugView
- Enable debug mode: install the GA Debugger extension or add
?debug_mode=trueto your URL - Perform the action on your site
- Watch the event appear in DebugView's real-time stream
- Click the event to inspect parameters and values
If the event appears in Tag Assistant but not in DebugView, check your Measurement ID and ensure no ad blockers are interfering.
How do I publish and verify GA4 events?
Once testing passes:
- Publish the GTM workspace version with a descriptive name: "Add GA4 events: hero CTA, pricing click"
- Wait 24-48 hours for data to appear in GA4 standard reports
- Check Realtime report for immediate confirmation
- Build an Explore report if you need custom parameter breakdowns
What are common GA4 event tracking mistakes?
- Too many unique event names. Creating
click_button_1,click_button_2, etc. instead of oneclick_ctaevent with abutton_locationparameter. You have 500 event names — use parameters to differentiate. - Not registering parameters. The data reaches GA4 but you can't see it in reports because custom dimensions aren't set up.
- Case sensitivity. GA4 treats
Click_CTAandclick_ctaas different events. Stick to lowercasesnake_case. - Missing Measurement ID. Double-check the
G-XXXXXXXXXXvalue. A wrong ID sends data to the wrong property. - Duplicate tags. If you copy a tag and forget to change the trigger, you'll get duplicate events inflating your reports.
How do I build GA4 Explore reports for custom events?
Standard GA4 reports show aggregated event counts, but Explore reports let you slice custom events by any dimension. This is where your event parameters become valuable.
To build a custom event report in GA4 Explore:
- Go to Explore → create a Free-form exploration
- Add dimensions:
Event name, plus your custom dimensions (button_text,page_section,form_id) - Add metrics:
Event count,Total users,Active users - Drag dimensions into Rows, metrics into Values
- Apply a filter:
Event nameexactly matches your custom event (e.g.,click_hero_signup)
Example: CTA click report. Add Event name, button_text, and Page path as dimensions. Add Event count and Active users as metrics. Filter to click_* events. Now you can see which CTAs get clicked, on which pages, and by how many unique users.
For funnel analysis, create an event-based segment: users who triggered click_hero_signup followed by submit_contact_form. Segments persist across the exploration, so you can compare conversion paths between segments side by side.
What is the difference between recommended and custom events in GA4?
GA4 treats recommended and custom events differently in reports. Recommended events use names that GA4 recognizes internally — when you fire purchase or add_to_cart with the correct parameters, GA4 automatically populates monetization reports, predictive audiences, and funnel visualizations. Custom events require you to build every report manually.
Here are the key recommended events by business type:
| Business Type | Key Recommended Events |
|---|---|
| Ecommerce | view_item, add_to_cart, begin_checkout, purchase, refund |
| Lead Generation | generate_lead, sign_up, login |
| SaaS | sign_up, login, tutorial_begin, tutorial_complete |
| Content / Media | share, search, select_content, view_item_list |
The rule is simple: if a recommended event name fits your use case, use it — even if you need to add custom parameters alongside the required ones. Only create a custom event when no recommended name applies. For example, tracking a "Request Demo" button should use generate_lead (recommended) rather than click_request_demo (custom), because generate_lead automatically appears in GA4's lifecycle reports and can feed predictive audiences like "likely 7-day purchasers."
How do I use GA4 events for Google Ads conversions?
GA4 events become powerful when you connect them to Google Ads. Any GA4 event can be marked as a conversion and imported into your Google Ads account to power Smart Bidding strategies.
The setup has three steps:
- Mark as a key event in GA4. Go to Admin → Events, find your event, and toggle the "Mark as key event" switch. GA4 starts counting conversions immediately.
- Link GA4 to Google Ads. In GA4, go to Admin → Google Ads Links and connect your Google Ads account. Both accounts need the same Google account with appropriate permissions.
- Import in Google Ads. Go to Google Ads → Goals → Conversions → Import → Google Analytics 4 properties. Select the key events you want to optimize for.
Attribution window matters. GA4 uses a data-driven attribution model with a default 30-day lookback for acquisitions and 90 days for other conversions. Google Ads has its own attribution windows per conversion action (default 30 days for clicks, 1 day for view-through). Align these windows to avoid discrepancies between GA4 and Google Ads reporting.
Why this matters for Smart Bidding: algorithms like Target CPA and Target ROAS optimize toward your imported conversions. If your GA4 events are misconfigured or underreporting, Smart Bidding will optimize toward incomplete data — leading to poor ad spend allocation. Always verify conversion counts match between GA4 and Google Ads within a reasonable margin (5-10% difference is normal due to attribution model differences).
How many custom events and parameters can I create in GA4?
GA4 has hard limits that you need to plan around. Hitting a limit means you cannot create new events or parameters without removing existing ones — and historical data for removed items is not recoverable in standard reports.
| Resource | Limit (Standard) | Limit (GA4 360) |
|---|---|---|
| Distinct event names | 500 | 2,000 |
| Parameters per event | 25 | 25 |
| Custom dimensions (event-scoped) | 50 | 125 |
| Custom dimensions (user-scoped) | 25 | 100 |
| Custom metrics | 50 | 125 |
| Event name length | 40 characters | 40 characters |
| Parameter name length | 40 characters | 40 characters |
| Parameter value length | 100 characters | 100 characters |
Strategy to stay within limits: use parameters instead of unique event names to capture variation. Instead of creating click_hero_cta, click_nav_cta, and click_footer_cta as separate events, create one click_cta event with a button_location parameter. This uses 1 event name instead of 3 and keeps your event namespace clean.
GTM Event Helper's AI Agent suggests optimal event names and parameters following this exact principle — it recommends parameter-based differentiation to help you stay well within GA4's limits.
If you're approaching the 50 custom dimension limit, audit your existing dimensions in Admin → Custom definitions. Remove any that haven't received data in the last 90 days. You can also use BigQuery export to retain full event data without relying on custom dimensions for every parameter.
Is there a faster way to set up GA4 events?
The manual workflow requires switching between your website, GTM, and GA4. GTM Event Helper combines it into one flow:
- Click the element on your page
- The extension generates a stable CSS selector automatically
- Choose your event name and GA4 as the tag type
- Click "Create in GTM" — trigger and tag are created via the API
No tab switching. No manual selector work. No forgetting to enable built-in variables. The AI Agent tab can even analyze your page and suggest the right event name and parameters.
Set up GA4 events in seconds, not minutes.
Install GTM Event HelperExternal Resources
- GA4: About events
- GA4: Recommended events reference
- GA4: Custom dimensions and metrics
- GTM: Set up GA4 event tags