GA4 + GTM Strategy Playbook

Bright Side Plumbing & Heating
Mastering Google Analytics 4 and Google Tag Manager for revenue-tied measurement
4.9 stars, 384+ Google reviews | $3M to $6M | callbrightside.com
Companion document to the Nexus AI Command Center & Google AI Ads Playbook

Table of Contents

  1. Why GA4 + GTM Matter for Bright Side's $6M Goal
  2. GA4 Foundations: The Event-Based Data Model
  3. GA4 Property Setup for callbrightside.com
  4. GTM Foundations: Tags, Triggers, and Variables
  5. GTM Container Architecture for Bright Side
  6. Event Tracking Strategy: Every Touchpoint That Matters
  7. Key Events and Conversions: What Counts as Revenue
  8. Custom Dimensions and Metrics for Plumbing Lead Gen
  9. Audiences: Segmentation That Drives Revenue
  10. Reporting and Explorations: Dashboards Kalen Will Actually Use
  11. GA4 + Google Ads Linking: Offline Conversion Pipeline
  12. Enhanced Conversions via GTM
  13. Consent Mode V2 and Privacy Compliance
  14. Server-Side GTM: The Advanced Upgrade
  15. Tech Stack Integration Map
  16. Skillshop Certification Study Guide
  17. 30-60-90 Day Implementation Sequence
Core principle from Stephanie and Kalen: "We are not interested in activity-based reporting. We are interested in revenue-tied performance." Every GA4 event, every GTM tag, every custom dimension in this playbook exists to answer one question: which marketing dollars produce which revenue dollars? If a metric cannot be tied to revenue or lead quality, it does not belong in the dashboard.

1. Why GA4 + GTM Matter for Bright Side's $6M Goal

Bright Side spends $35K/month on marketing with a $200 CPL and an 80% booking rate. The constraint is volume, not close rate. GA4 and GTM are the measurement infrastructure that tells you which volume is worth buying more of.

KEY

The Measurement Problem

Without Proper GA4 + GTMWith Proper GA4 + GTM
"We got 175 leads this month""We got 42 sewer leads from Google Ads at $312 CPL generating $189K in invoiced revenue"
"Our bounce rate is 65%""Sewer repair page visitors who scroll past the 5th-gen trust badge convert at 8.2%, versus 3.1% for those who bounce before it"
"People are clicking the phone number""Mobile users from 66209 who called after viewing the sewer camera page have a $7,800 average job value"
"Traffic is up this month""Organic sewer keywords drove 18 form submissions at $0 CPL; 14 became booked jobs totaling $48K revenue"
GA4 is not Universal Analytics. If anyone on the team still thinks in terms of "sessions," "goals," and "bounce rate" from the old UA model, they need to reset. GA4 uses an event-based data model where every interaction is an event with parameters. There are no "goals" in GA4. There are key events (formerly called conversions in GA4, now aligned with the Google Ads definition). This playbook covers the entire new model from the ground up.

What GA4 + GTM Enable for the $3M to $6M Journey

Business GoalGA4 CapabilityGTM Role
Prove which channels generate sewer revenueAttribution reporting with offline conversion import from ServiceTitanCaptures GCLID, UTM parameters, and user data at every form/call touchpoint
Reduce CPL from $200 to $120Key event tracking with accurate conversion counts feeds Smart BiddingFires conversion tags only for qualified actions, not page views
Scale to 500+ leads/monthAudience segments exported to Google Ads for lookalike targetingCollects the behavioral signals that define high-value audience segments
Justify $35K/month spend to ownershipRevenue-tied dashboards in Looker Studio pulling from GA4 + ServiceTitanEnsures every data point flowing into GA4 is accurate and complete
Win against KC plumbing competitorsFunnel analysis reveals where competitors' leads leak; yours convertTracks micro-conversions (scroll depth, video views, review reads) that predict macro-conversions

2. GA4 Foundations: The Event-Based Data Model

GA4 replaced Universal Analytics in July 2023. Every interaction on callbrightside.com is now tracked as an event. Understanding the event model is the foundation for everything else in this playbook.

CORE

The Four Event Types in GA4

Event TypeDefinitionBright Side Examples
Automatically CollectedEvents GA4 collects with no configuration. Always active.page_view, session_start, first_visit, user_engagement, scroll (90% depth)
Enhanced MeasurementEvents enabled with a toggle in GA4 Admin. No code required.scroll, outbound_click, site_search, video_start, video_progress, video_complete, file_download, form_interaction
Recommended EventsGoogle-defined event names you implement manually. GA4 recognizes the names and provides built-in reporting.generate_lead (form submit), purchase (offline import from ServiceTitan), sign_up (newsletter), search (site search with service terms)
Custom EventsEvents you define for business-specific actions. Use only when no recommended event fits.click_to_call, schedule_service, review_click, service_page_view, chat_start

Events, Parameters, and User Properties

Every event can carry parameters (metadata about the event) and be associated with user properties (metadata about the user). This is how GA4 builds rich data without the rigid "Category / Action / Label" structure from Universal Analytics.

EXAMPLE

How a Single Form Submission Becomes Rich Data

Event name: generate_lead
Parameters:
  form_id:        "sewer-repair-contact"
  form_location:  "sewer-repair-page-hero"
  service_type:   "sewer_repair"
  lead_value:     500
  source_medium:  "google / cpc"

User Properties:
  zip_code:       "66209"
  customer_type:  "new"
  device_category: "mobile"

This single event tells you: a new mobile user from Leawood submitted the sewer repair contact form in the hero section, arriving via Google Ads paid search, with an estimated lead value of $500. That is actionable data.

Dimensions vs. Metrics

This distinction matters for every report and exploration you build:

ConceptDefinitionBright Side Examples
DimensionA descriptive attribute. Text-based. Answers "what" or "which."Source/Medium, Page path, Service type, City, Device category, Campaign name
MetricA quantitative measurement. Number-based. Answers "how many" or "how much."Sessions, Key events, Event count, Engagement rate, Average engagement time, Revenue
Bounce Rate vs. Engagement Rate: GA4 replaced bounce rate with engagement rate. A session is "engaged" if it lasts longer than 10 seconds, has a key event, or has 2+ page views. For Bright Side, engagement rate is more useful because a homeowner who lands on the sewer repair page, reads for 45 seconds, and calls the phone number is an engaged session (and a lead), even though they only viewed one page. Under UA, that was a "bounce." Under GA4, that is an engaged session.

Data Streams

A GA4 property connects to your website through a data stream. Bright Side needs one web data stream for callbrightside.com. The data stream generates a Measurement ID (format: G-XXXXXXXXXX) which is used by GTM to send data to GA4.

Attribution Models

GA4 uses data-driven attribution as its default model. This means GA4 uses machine learning to assign credit for conversions across all touchpoints, not just the last click. For Bright Side, this matters because a homeowner might:

  1. See a Google Ads result for "sewer repair Overland Park" (first touch)
  2. Visit callbrightside.com but leave without converting
  3. See a remarketing display ad two days later (middle touch)
  4. Search "Bright Side Plumbing reviews" and click the organic result (last touch)
  5. Call (913) 963-1029 and book a $7,500 sewer repair

Data-driven attribution distributes the $7,500 conversion value across all three touchpoints based on their actual influence, rather than giving 100% credit to the last click. This is critical for justifying both paid and organic spend to Kalen and Stephanie.


3. GA4 Property Setup for callbrightside.com

This section covers the exact GA4 property configuration for Bright Side. Every setting here maps to a Skillshop concept and a business outcome.

GA4-1

Property Settings

SettingRecommended ValueWhy
Property nameBright Side Plumbing - ProductionClear identification; add a second property for staging/testing if needed
Reporting time zoneCentral Time (US & Canada)Matches Overland Park, KS business hours
CurrencyUSDRevenue values from ServiceTitan are in USD
Industry categoryHome & GardenClosest match for plumbing; enables industry benchmarking
GA4-2

Data Stream Configuration

SettingRecommended ValueWhy
Stream URLhttps://callbrightside.comPrimary domain
Stream namecallbrightside.com - WebDescriptive name
Enhanced MeasurementALL toggles ONFree data collection: scrolls, outbound clicks, site search, video engagement, file downloads, form interactions
Internal traffic filterOffice IP: 12022 Blue Valley Pkwy networkExclude staff visits from skewing data. Also exclude Robert's IP and agency IPs.
Cross-domain measurementNot needed unless HubSpot forms use a different domainIf HubSpot forms redirect to a *.hubspot.com domain, add cross-domain tracking
GA4-3

Data Retention and Collection Settings

SettingRecommended ValueWhy
Event data retention14 months (maximum)Allows year-over-year comparisons in Explorations. Standard reports are unaffected by this setting.
Reset user data on new activityONExtends the 14-month window for active users
Google SignalsONEnables cross-device tracking and demographic reporting. Required for remarketing audiences.
Granular location and device dataONEnables city-level and device-model reporting. Critical for KC metro zip code analysis.
Ads personalizationONRequired for audience export to Google Ads
CRITICAL

Filters: Internal Traffic and Developer Traffic

Create these data filters in GA4 Admin to prevent internal activity from contaminating conversion data:

FilterConditionAction
Bright Side OfficeIP address matches the 12022 Blue Valley Pkwy office networkExclude from reporting
Robert / Dove Web ConsultingRobert's home/office IPExclude from reporting
Russ / Dir of Digital MarketingRuss Satterfield's IPExclude from reporting
Developer/staging trafficHostname does not equal callbrightside.comExclude from reporting

Important: GA4 data filters are permanent. Filtered data cannot be recovered. Always test filters in "Testing" state before switching to "Active."


4. GTM Foundations: Tags, Triggers, and Variables

Google Tag Manager is the control center for all tracking code on callbrightside.com. Instead of asking a developer to add code to every page, GTM lets you deploy, modify, and remove tracking tags through a web interface. Every GA4 event, every Google Ads conversion tag, every HubSpot tracking pixel, and the ClickCease script should run through GTM.

CORE

The Three Building Blocks

ComponentDefinitionAnalogyBright Side Example
TagA piece of code that sends data to a third-party serviceThe mail carrier delivering a packageGA4 Event tag that sends generate_lead to Google Analytics when someone submits a form
TriggerA condition that tells a tag when to fireThe doorbell that activates the carrier"Fire when Form ID equals sewer-contact-form and Event equals gtm.formSubmit"
VariableA dynamic value used by tags and triggersThe address label on the packageA Data Layer Variable that reads formServiceType to determine if the lead is for sewer, water heater, or drain cleaning

The Data Layer

The data layer is a JavaScript object (window.dataLayer) that serves as the bridge between your website and GTM. When something happens on callbrightside.com (form submit, phone click, page load), the website pushes structured data to the data layer. GTM reads from the data layer to populate tags.

EXAMPLE

Data Layer Push for a Form Submission

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  'event': 'form_submission',
  'form_id': 'sewer-repair-contact',
  'form_location': 'hero-section',
  'service_type': 'sewer_repair',
  'lead_value': 500,
  'user_email_hash': 'a1b2c3...',     // SHA-256 hashed
  'user_phone_hash': 'd4e5f6...'      // SHA-256 hashed
});

GTM then uses Data Layer Variables to read each field and pass them as parameters to the GA4 Event tag and the Google Ads Conversion tag simultaneously.

Tag Types Bright Side Will Use

Tag TypePurposeCount Needed
GA4 ConfigurationLoads GA4 on every page, sends page_view event, sets Measurement ID1
GA4 EventSends custom/recommended events to GA4 (one per event type)8-12
Google Ads Conversion TrackingFires when a lead action occurs; feeds Smart Bidding3-4
Google Ads RemarketingBuilds remarketing audiences based on page visits1
HubSpot Tracking CodeConnects website activity to HubSpot CRM contacts1
ClickCeaseClick fraud detection for Google Ads traffic1
Consent Mode ConfigurationSets default consent state and updates on user choice2

GTM Workspaces, Versions, and Environments

GTM tracks changes through workspaces (draft changes), versions (published snapshots), and environments (where code runs). Best practices for Bright Side:


5. GTM Container Architecture for Bright Side

This section defines the complete tag, trigger, and variable inventory for the Bright Side GTM container (GTM-M3L9374). Think of this as the blueprint; Section 6 covers the event strategy in detail.

🚨 GOOGLE SITE KIT CONFLICT: callbrightside.com has the Google Site Kit WordPress plugin installed alongside GTM. Site Kit can inject its own GA4 tracking tag independently of GTM. This creates a double-tracking risk where every pageview and event is counted twice. Before deploying any new GTM tags, check Site Kit settings (WordPress Dashboard > Site Kit > Settings > Connected Services) and either: (A) disable Site Kit's GA4 analytics and use GTM exclusively, or (B) remove the GA4 Config tag from GTM and let Site Kit handle GA4. Pick ONE source of truth. Recommended: GTM exclusively (more control).
GTM-1

Container Settings

SettingValue
Container namecallbrightside.com
Container typeWeb
Container IDGTM-M3L9374 (verified live on callbrightside.com, Mar 2026)
InstallationGTM snippet in <head> (via Oxygen Builder Code Block or WPCode plugin)
GTM-2

Naming Convention (Mandatory)

Without consistent naming, a GTM container becomes unmanageable within weeks. Every tag, trigger, and variable must follow this format:

Tags:     [Platform] - [Action] - [Detail]
          GA4 - Event - generate_lead
          GAds - Conversion - phone_call
          HubSpot - Tracking Code
          ClickCease - Script

Triggers: [Type] - [Condition]
          Form Submit - Sewer Contact Form
          Click - Phone Number Link
          Page View - Service Pages
          Timer - 30 Second Engagement
          Scroll - 50 Percent Depth

Variables: [Type] - [Name]
           DLV - service_type        (Data Layer Variable)
           DOM - hero_cta_text       (DOM Element Variable)
           URL - page_path           (URL Variable)
           CONST - ga4_measurement_id (Constant)
           LOOKUP - service_value     (Lookup Table)
GTM-3

Complete Variable Inventory

Variable NameTypeValue / Configuration
CONST - GA4 Measurement IDConstantG-XXXXXXXXXX (your GA4 Measurement ID)
CONST - GAds Conversion IDConstantGoogle Ads account conversion ID
DLV - event_nameData Layer VariableReads event from data layer
DLV - service_typeData Layer VariableReads service_type (sewer_repair, water_heater, drain_cleaning, etc.)
DLV - form_idData Layer VariableReads form_id for form-specific tracking
DLV - form_locationData Layer VariableReads form_location (hero, sidebar, footer, popup)
DLV - lead_valueData Layer VariableReads estimated lead value based on service type
DLV - user_emailData Layer VariableReads hashed email for Enhanced Conversions
DLV - user_phoneData Layer VariableReads hashed phone for Enhanced Conversions
URL - Page PathURL VariableComponent: Path
URL - Page HostnameURL VariableComponent: Hostname
LOOKUP - Service Page ValueLookup TableMaps page paths to service types and proxy values (see Section 6)
GTM-4

Complete Trigger Inventory

Trigger NameTypeCondition
All PagesPage ViewAll page views (for GA4 Config tag)
Page View - Service PagesPage ViewPage Path matches regex /sewer|water-heater|drain|gas-line|plumbing/
Form Submit - Contact FormsForm SubmissionForm ID matches contact/schedule forms
Form Submit - HubSpot FormsCustom EventEvent equals hubspot_form_submit (from HubSpot callback)
Click - Phone NumberClick - Just LinksClick URL contains tel:9139631029
Click - Email LinkClick - Just LinksClick URL contains mailto:
Click - CTA ButtonsClick - All ElementsClick Classes contain cta-button or schedule-btn
Click - Google Reviews BadgeClick - All ElementsClick URL contains google.com/maps or element ID matches reviews widget
Scroll - 25/50/75/90 PercentScroll DepthVertical scroll at 25%, 50%, 75%, 90% thresholds
Timer - 30 Second EngagementTimer30,000ms interval, limit 1, fires on all pages
Video - YouTube EngagementYouTube VideoStart, 25%, 50%, 75%, Complete
Custom Event - chat_openedCustom EventEvent equals chat_opened (from live chat widget)

6. Event Tracking Strategy: Every Touchpoint That Matters

This is the most important section of the playbook. Every event defined here directly maps to a business question Kalen, Stephanie, or Russ will ask. "How many sewer leads did we get?" "Which page drives the most calls?" "Is the $35K working?"

CRITICAL

The Bright Side Event Hierarchy

Events are organized by business impact, from highest to lowest:

$$$ Tier 1: Revenue Events Directly tied to booked revenue via ServiceTitan
+++ Tier 2: Lead Events Form submits, phone calls, chat requests
*** Tier 3: Intent Signals CTA clicks, service page views, review reads
--- Tier 4: Engagement Signals Scroll depth, time on page, video views
... Tier 5: Discovery Events Page views, site search, outbound clicks

Complete Event Specification

Tier 1: Revenue Events (Offline Import)

Event NameSourceParametersBusiness Use
purchaseServiceTitan via offline importtransaction_id, value, currency, service_type, technician_nameActual invoiced revenue tied back to the original click/visit. This is the gold standard for ROAS calculation.
job_bookedServiceTitan via Zapier/APIbooking_id, service_type, estimated_value, booking_sourceTracks the booking before the job is completed. Faster signal than waiting for invoice.

Tier 2: Lead Events (GTM-Fired)

Event NameTriggerParametersProxy Value
generate_leadContact/schedule form submissionform_id, form_location, service_type, lead_value$100-$500 based on service type
click_to_callClick on tel:9139631029 linkpage_path, service_type, call_location (header, hero, footer, sticky)$150-$500 based on page context
schedule_serviceServiceTitan online booking completionservice_type, preferred_date, booking_source$200 (direct booking = high intent)
chat_startLive chat widget opened with message sentpage_path, service_type, chat_source$75

Tier 2 Lead Value Lookup Table

$$$

Service-Based Lead Values for Smart Bidding

Service TypeForm Submit ValuePhone Call ValueRationale (Avg Job Value)
Sewer Repair$500$500Avg job: $3K-$15K. Highest revenue per lead.
Sewer Replacement$500$500Avg job: $5K-$15K. Highest ticket service.
Water Heater$200$200Avg job: $2K-$4K. Second-tier revenue.
Gas Line$200$200Avg job: $1.5K-$5K. Specialized service.
Drain Cleaning$75$100Avg job: $150-$500. Volume play, upsell potential to sewer.
General Plumbing$100$100Avg job: $200-$1K. Mixed bag.
Emergency$300$350Avg job: $500-$5K. Urgency = willingness to pay premium.

These proxy values are used until the offline conversion import pipeline from ServiceTitan is live (see Section 11). Once actual revenue data flows back, Smart Bidding will learn from real invoice amounts instead of proxies.

Tier 3: Intent Signals

Event NameTriggerParameters
cta_clickClick on any CTA button ("Schedule Now," "Get a Free Estimate," "Call Us")cta_text, cta_location, page_path, service_type
service_page_viewPage view on any /services/* pageservice_type, page_title
review_interactionClick on Google reviews badge, Birdeye widget, or testimonial sectionreview_source (google, birdeye, bbb), page_path
coupon_viewCoupon/offer section becomes visible in viewportcoupon_name, page_path
directions_clickClick on Google Maps / address linkpage_path

Tier 4: Engagement Signals

Event NameTriggerParameters
scroll_depthUser scrolls to 25%, 50%, 75%, or 90% of pagepercent_scrolled, page_path
engaged_sessionTimer fires at 30 seconds on any pagepage_path, service_type
video_engagementYouTube video reaches start, 25%, 50%, 75%, or completevideo_title, video_percent, page_path
file_downloadClick on PDF, guide, or checklist download linkfile_name, file_type, page_path

7. Key Events and Conversions: What Counts as Revenue

In GA4, any event can be marked as a key event. Key events are GA4's equivalent of conversions and are what flows into Google Ads for Smart Bidding optimization. Choosing the right key events is one of the most consequential decisions in this entire setup.

CRITICAL

Key Events vs. Conversions: The 2024+ Terminology Split

Google split the terminology in March 2024:

TermWhere It LivesWhat It Means
Key EventGA4 ReportsAn event you marked as important for your business. Shows in GA4 reports and explorations. Does NOT automatically flow to Google Ads.
ConversionGoogle AdsA key event that you have explicitly linked to Google Ads for bidding optimization. This is what Smart Bidding uses.

Translation for Bright Side: Mark generate_lead and click_to_call as key events in GA4. Then in Google Ads, import those key events as conversions. Only then will Smart Bidding optimize toward them.

Recommended Key Events for Bright Side

Key EventCounting MethodImport to Google Ads?Why
generate_leadOnce per sessionYes, as primary conversionForm submissions are the highest-intent online action. One per session prevents duplicate counting from double-submits.
click_to_callOnce per sessionYes, as primary conversionPhone calls from the website. One per session prevents counting obsessive re-clickers.
schedule_serviceOnce per sessionYes, as primary conversionDirect online booking through ServiceTitan scheduler.
purchaseOnce per eventYes, as primary conversion (offline import)Actual completed job revenue from ServiceTitan. The true source of truth.
cta_clickOnce per sessionYes, as secondary/observation conversionSignals intent but is not a completed lead action. Use as observation conversion so Smart Bidding can see the signal without optimizing directly toward it.
chat_startOnce per sessionYes, as secondary conversionLower volume but still a lead source.
Primary vs. Secondary Conversions in Google Ads: Primary conversions are what Smart Bidding optimizes toward. Secondary (observation) conversions are tracked for reporting but do NOT influence bidding. For Bright Side, only generate_lead, click_to_call, schedule_service, and purchase should be primary. Everything else is secondary. If you make cta_click a primary conversion, Smart Bidding will optimize for CTA clicks instead of actual leads, and your CPL data will be meaningless.

8. Custom Dimensions and Metrics for Plumbing Lead Gen

Custom dimensions let you attach business-specific attributes to GA4 events and users. They are what transform GA4 from a generic analytics tool into Bright Side's revenue intelligence system.

Event-Scoped Custom Dimensions

These attach to individual events and describe what happened:

Parameter NameDisplay Name in GA4DescriptionExample Values
service_typeService TypeWhich plumbing service this event relates tosewer_repair, sewer_replacement, water_heater, drain_cleaning, gas_line, general_plumbing, emergency
form_idForm IDWhich form was submittedsewer-contact, hero-schedule, sidebar-estimate, footer-contact
form_locationForm LocationWhere on the page the form sitshero, sidebar, footer, popup, inline, sticky
cta_textCTA TextThe label text of the CTA button clickedSchedule Now, Get Free Estimate, Call Us Today
cta_locationCTA LocationWhere on the page the CTA sitsheader, hero, mid-page, footer, sticky-mobile
call_locationCall Click LocationWhich phone number link was clickedheader, hero, footer, sticky-bar, sidebar
lead_valueLead ValueEstimated dollar value of the lead based on service type75, 100, 200, 300, 500
review_sourceReview SourceWhich review platform the user interacted withgoogle, birdeye, bbb, yelp, angi
content_groupContent GroupLogical grouping of pages by purposeservice_page, blog, about, contact, landing_page, homepage
video_titleVideo TitleTitle of the video being watchedSewer Camera Inspection Explained, Meet the Barkers

User-Scoped Custom Dimensions

These attach to the user and persist across sessions:

Parameter NameDisplay Name in GA4DescriptionExample Values
customer_typeCustomer TypeWhether the visitor is new or returning (from ServiceTitan data or cookie)new, returning, past_customer
lead_statusLead StatusCurrent stage in the funnel (updated via Measurement Protocol from ServiceTitan)website_visitor, form_submitted, called, booked, completed, invoiced
service_interestPrimary Service InterestThe highest-value service page the user has visitedsewer_repair, water_heater, drain_cleaning
HOW-TO

Registering Custom Dimensions in GA4

Custom dimensions must be registered in GA4 Admin before they appear in reports:

  1. Go to GA4 Admin > Custom Definitions
  2. Click Create custom dimension
  3. Enter the Dimension name (display name) and the Event parameter (must exactly match the parameter name sent from GTM)
  4. Set the Scope (Event or User)
  5. Click Save

Important: GA4 allows up to 50 event-scoped and 25 user-scoped custom dimensions. Bright Side needs approximately 10 event-scoped and 3 user-scoped, leaving plenty of room for future expansion.

Timing: After registering a custom dimension, allow up to 24 hours for data to populate in standard reports and up to 48 hours in explorations.

Custom Metrics

Parameter NameDisplay NameUnitDescription
lead_valueLead ValueCurrency (USD)The proxy or actual dollar value assigned to each lead event. Enables "total lead value" and "average lead value" calculations in reports.
scroll_depth_maxMax Scroll DepthStandard (number)The maximum scroll depth percentage reached in a session. Shows how deep users read service pages.

9. Audiences: Segmentation That Drives Revenue

GA4 audiences are dynamic user segments based on behavior, demographics, and custom dimensions. Audiences serve two critical functions for Bright Side: (1) targeted reporting in GA4 and (2) export to Google Ads for remarketing and lookalike targeting.

KEY

Audience Architecture for Bright Side

Build audiences in layers, from broadest to most specific:

High-Value Remarketing Audiences

Audience NameConditionsMembership DurationGoogle Ads Use
Sewer Leads - Not ConvertedViewed /sewer-repair or /sewer-replacement AND did NOT trigger generate_lead or click_to_call30 daysRemarketing with sewer-specific messaging. Highest-value retargeting audience.
Water Heater Leads - Not ConvertedViewed /water-heater AND did NOT trigger generate_lead or click_to_call30 daysRemarketing with water heater messaging and seasonal urgency.
Emergency Visitors - Not ConvertedViewed /emergency-plumber AND did NOT trigger lead event within session7 daysShort-window remarketing. Emergency intent fades fast; 7-day membership is optimal.
All Converters - 90 DaysTriggered generate_lead OR click_to_call OR schedule_service in last 90 days90 daysExclusion audience. Do NOT show ads to people who already converted. Saves budget.
High-Value ConvertersTriggered purchase event with value > $3,000 (from ServiceTitan/Housecall Pro import)540 daysSimilar/lookalike audience seed. Google Ads finds users who look like your best customers.
Form AbandonersTriggered form_start but NOT form_submit14 daysRetarget with simplified CTA or click-to-call messaging. These visitors showed intent.
Past Customers (Customer Match)Email/phone list exported from ServiceTitan + Housecall ProRefreshed monthlyUpsell, cross-sell, seasonal campaigns. Also use as exclusion for prospecting. Upload as Customer Match list in Google Ads.
🚨 FACEBOOK/META REMARKETING STATUS: Facebook Pixel was REMOVED from callbrightside.com in July 2025 (confirmed via BuiltWith). If Meta/Facebook remarketing is desired (recommended for homeowner demographics ages 35-65), the Pixel must be reinstalled via a GTM tag. This enables Facebook Custom Audiences mirroring the GA4 audiences above: sewer visitors, emergency visitors, form abandoners, and past customers. Day 1 question: Should Facebook Pixel be reinstalled?

GA4 Lead Generation Audience Templates (New in 2025-2026)

GA4 now includes eight pre-built audience templates designed for lead funnel segmentation. These can be activated directly in GA4 Admin:

Template AudienceDefinitionBright Side Application
New LeadsUsers who triggered a lead generation event for the first timeFirst-time form submitters or callers. Measure acquisition cost per new lead.
Qualified LeadsUsers whose lead status progressed beyond initial submissionLeads that became booked jobs in ServiceTitan. Requires Measurement Protocol integration.
Converted LeadsUsers who completed a purchase/transactionLeads with invoiced jobs. The "gold" segment for lookalike targeting.
Unconverted LeadsUsers who submitted a lead but did not progressForm submitters who never booked. Win-back remarketing targets.
Audience export to Google Ads: When GA4 is linked to Google Ads (see Section 11), all GA4 audiences automatically become available in Google Ads for targeting. This means your sewer remarketing audience, built on behavioral data in GA4, can be targeted with specific sewer repair ad copy in Google Ads. This closes the loop between measurement and action.

Predictive Audiences (Advanced)

GA4 offers predictive audiences based on machine learning. These require sufficient data volume (1,000+ positive examples and 1,000+ negative examples in the last 28 days) to activate:

Predictive AudienceDefinitionBright Side Application
Likely to convert in 7 daysUsers predicted to trigger a key event within the next 7 daysProactive remarketing: show ads to people GA4 predicts will convert this week
Likely to churnUsers predicted to not return in the next 7 daysRe-engagement: target users who visited a sewer page but are about to disappear
Data volume requirement: Predictive audiences need significant conversion volume. At $200 CPL and ~175 leads/month, Bright Side may be close to the threshold. Monitor the "Not enough data" status in GA4 Audiences. As volume grows toward $6M, predictive audiences will unlock and become a competitive advantage most KC plumbing competitors cannot match.

10. Reporting and Explorations: Dashboards Kalen Will Actually Use

GA4 has two reporting layers: Standard Reports (pre-built, always available) and Explorations (custom, flexible, built by the analyst). Robert and Russ will live in Explorations. Kalen and Stephanie will see polished summaries in Looker Studio dashboards that pull from GA4 data.

Standard Reports That Matter

ReportWhere to Find ItBright Side Use
Acquisition OverviewReports > Acquisition > OverviewWhich channels drive traffic. Compare Google Ads vs. Organic vs. Direct vs. LSA.
Traffic AcquisitionReports > Acquisition > Traffic AcquisitionSession-level view of source/medium. Filter by service_type custom dimension to see sewer-specific channel performance.
User AcquisitionReports > Acquisition > User AcquisitionFirst-touch attribution. Answers: "What channel first brought this user to us?" Critical for understanding organic SEO value.
Lead Generation ReportReports > Lead Generation (new in 2025)Pre-built funnel from lead acquisition through qualification. Requires implementing the lead generation event schema.
Landing Page ReportReports > Engagement > Landing PageWhich pages people land on and how they perform. Filter by key events to see which landing pages generate the most leads.
Pages and ScreensReports > Engagement > Pages and ScreensPage-level performance. Identifies high-traffic pages with low conversion (optimization opportunities) and high-conversion pages needing more traffic.
Tech OverviewReports > Tech > OverviewDevice category breakdown. Bright Side's emergency callers are overwhelmingly mobile; confirm with data.

Custom Report Collections

GA4 lets you customize the Reports navigation by creating report collections. Build a "Bright Side Plumbing" collection with these reports:

  1. Lead Performance: Traffic Acquisition report with service_type custom dimension as secondary dimension, filtered to key events only
  2. Service Page Performance: Pages and Screens filtered to /services/* paths, showing engagement rate, key events, and average engagement time
  3. Sewer Revenue Tracker: Landing Page report filtered to sewer-related pages, with lead_value custom metric as a column

Explorations (Advanced Analysis)

Explorations are GA4's power tool. They let you drag and drop dimensions, metrics, segments, and filters into flexible visualizations. Key explorations for Bright Side:

EXP-1

Lead Conversion Funnel

Technique: Funnel Exploration

Steps:

  1. session_start (all website visitors)
  2. service_page_view (viewed a service page)
  3. cta_click (clicked a CTA button)
  4. generate_lead OR click_to_call (converted to lead)

Segmented by: service_type and source/medium

Business insight: "32% of sewer page visitors click a CTA, but only 8% actually submit a form. Where are the other 24% dropping off? Is the form too long? Is the CTA unclear?"

EXP-2

Service Page Path Analysis

Technique: Path Exploration

Starting point: page_view on /sewer-repair

Business insight: "After viewing the sewer repair page, 40% of users go to /about (trust-building), 25% go to /reviews (social proof), and 15% go to /contact (conversion). Users who visit /about before /contact convert at 2.3x the rate of those who go directly to /contact."

EXP-3

Lead Source Quality Matrix

Technique: Free-form Exploration

Rows: Source/Medium

Columns: Key events, Lead value (sum), Engagement rate, Sessions

Business insight: "Google Ads drives 120 leads/month at $200 CPL, but organic drives 18 leads at $0 CPL. Organic leads also have a 12% higher booking rate per ServiceTitan data. Investing in SEO will reduce blended CPL."

EXP-4

Geographic Performance

Technique: Free-form Exploration

Rows: City (or Region)

Columns: Sessions, Key events, Key event rate, Lead value (sum)

Filter: Only KC metro cities

Business insight: "Leawood generates 3x the lead value of Independence per session. Increase Google Ads bid adjustments for 66209, 66211, 66213 zip codes." Directly feeds Conversion Value Rules in Google Ads (covered in the AI Ads Playbook).

Looker Studio Dashboard (Executive Layer)

Kalen and Stephanie do not need to log into GA4. Build a Looker Studio dashboard that pulls from GA4 and ServiceTitan, showing:

Dashboard SectionData SourceMetrics
Weekly Lead SummaryGA4Total leads by channel, CPL by channel, lead value by service type
Revenue AttributionServiceTitan + GA4Invoiced revenue tied to marketing channel via GCLID/UTM
Funnel HealthGA4Visitors to leads conversion rate, week-over-week trend
Page PerformanceGA4Top 10 landing pages by lead generation, engagement rate, bounce rate
Geographic HeatmapGA4Leads and revenue by KC metro zip code

This is the most technically complex and most financially impactful section. Linking GA4 to Google Ads and importing offline conversions is what transforms Google Ads from "we think it is working" to "we know this click generated $8,200 in invoiced revenue."

🚨 DUAL CRM REALITY (Verified Mar 1, 2026): callbrightside.com uses Housecall Pro as the online booking widget AND ServiceTitan for CRM/dispatch/invoicing. Both systems' revenue data must be imported into Google Ads and GA4 for offline conversion tracking. The pipeline below applies to BOTH systems. Extract GCLID + revenue from whichever system completes the job.
🚨 LIVE TRACKING IDs: GTM: GTM-M3L9374 | GA4: G-R9K15PMWPR | Google Ads: AW-404985988 + AW-242993149 (two accounts). Use these in all configurations.
CRITICAL

The Linking Architecture

Homeowner clicks Google Ad
  |
  +--> Lands on callbrightside.com (GCLID captured by GTM, stored in cookie + data layer)
  |
  +--> Submits form or calls (GCLID passed to HubSpot/ServiceTitan with lead data)
  |
  +--> Job booked in ServiceTitan (GCLID attached to customer record)
  |
  +--> Job completed, invoice sent ($8,200 sewer repair)
  |
  +--> Offline conversion import: GCLID + $8,200 + "purchase" sent to Google Ads
  |
  +--> Smart Bidding learns: "clicks like this one produce $8,200 jobs"
  |
  +--> Future bids automatically favor similar click patterns

Step-by-Step Linking Process

LINK-1

Link GA4 to Google Ads

  1. In GA4 Admin, go to Product Links > Google Ads Links
  2. Click Link, select your Google Ads account
  3. Enable Personalized Advertising (required for audience export)
  4. Enable Auto-tagging in Google Ads (appends GCLID to every ad click URL)

What this enables:

LINK-2

Import GA4 Key Events as Google Ads Conversions

  1. In Google Ads, go to Goals > Conversions > Summary
  2. Click New conversion action > Import > Google Analytics 4 properties
  3. Select the linked GA4 property
  4. Import these key events as conversions:
    • generate_lead (Primary, $100-$500 value by service type)
    • click_to_call (Primary, $100-$500 value by service type)
    • schedule_service (Primary, $200 value)
    • cta_click (Secondary/Observation only)
  5. Set counting method to One (per session) for lead events
LINK-3

GCLID Capture Pipeline

The GCLID (Google Click Identifier) is a unique string appended to every Google Ads click URL. It is the key that connects an ad click to a revenue outcome. Here is the capture pipeline:

StepActionTool
1. CaptureGTM reads GCLID from URL parameter on landing pageGTM URL Variable
2. StoreGTM writes GCLID to a first-party cookie (90-day expiry)GTM Custom HTML tag with cookie-setting JavaScript
3. PassOn form submission, GCLID is included as a hidden form fieldGTM DOM manipulation or form plugin configuration
4. ReceiveHubSpot receives GCLID in the form submissionHubSpot hidden field
5. SyncHubSpot syncs lead data (including GCLID) to CRMZapier or native integration
6a. Associate (ServiceTitan)ServiceTitan attaches GCLID to the customer/job recordServiceTitan custom field
6b. Associate (Housecall Pro)Housecall Pro booking captures GCLID via hidden field or Zapier webhookHousecall Pro custom field or Zapier data pass-through
7. ExportWhen job is invoiced in EITHER system, GCLID + invoice amount sent to Google Ads + GA4Zapier automation, Google Ads API, GA4 Measurement Protocol, or manual CSV upload
LINK-4

Offline Conversion Import Methods

MethodDifficultyLatencyBest For
Manual CSV UploadLowWeeklyGetting started. Export ServiceTitan data, format CSV with GCLID + value + timestamp, upload to Google Ads.
Zapier AutomationMediumNear real-timeAutomated pipeline. When a job is invoiced in ServiceTitan, Zapier sends GCLID + value to Google Ads Offline Conversions API.
Google Ads API (Direct)HighReal-timeEnterprise-grade. Requires developer resources. Most accurate but most complex.
GA4 Measurement ProtocolMediumNear real-timeSend offline events directly to GA4, which then flows to Google Ads via the GA4-Ads link. Good for updating lead status.

Recommended path for Bright Side: Start with manual CSV upload (Week 1-4) to prove the concept and validate data quality. Migrate to Zapier automation (Week 5+) once the data format is confirmed clean.

LINK-5

Link GA4 to Search Console

This is a separate but equally important link:

  1. In GA4 Admin, go to Product Links > Search Console Links
  2. Link callbrightside.com's verified Search Console property
  3. This enables the "Google Organic Search Queries" report in GA4, showing which organic keywords drive traffic and conversions

Why it matters: When Kalen asks "is the SEO working?" you can show organic keyword performance alongside conversion data in a single GA4 report, instead of switching between Search Console and GA4.


12. Enhanced Conversions via GTM

Enhanced Conversions improve conversion tracking accuracy by supplementing standard conversion tags with hashed first-party customer data (email, phone, name, address). As browser privacy restrictions tighten and third-party cookies disappear, Enhanced Conversions become essential for maintaining accurate CPL and ROAS measurement.

KEY

Why Enhanced Conversions Matter for Bright Side

ScenarioWithout Enhanced ConversionsWith Enhanced Conversions
User clicks ad on phone, calls from desktop laterConversion lost. Different devices, no cookie match.Google matches hashed phone number across devices. Conversion attributed.
User clicks ad, cookie expires before bookingConversion lost. 7-day ITP cookie limit on Safari.Hashed email from form submission matches Google account. Conversion attributed.
User uses private browsingConversion lost. No cookies stored.If user is signed into Google, hashed data matches. Partial recovery.
User clears cookies between ad click and conversionConversion lost.Hashed first-party data provides the match. Conversion attributed.

Industry data: Enhanced Conversions recover 5-15% of conversions that would otherwise be lost to cookie restrictions. At 175 leads/month, that is 9-26 additional tracked conversions per month. At $200 CPL, that is $1,800-$5,200/month in conversions Smart Bidding can now optimize toward.

Implementation via GTM

EC-1

Step 1: Enable Enhanced Conversions in Google Ads

  1. Go to Google Ads > Goals > Conversions > Settings
  2. Expand Enhanced conversions
  3. Toggle ON
  4. Select Google Tag Manager as the implementation method
  5. Accept the compliance terms (data is hashed with SHA-256 before transmission)
EC-2

Step 2: Configure GTM to Send Hashed Data

Two approaches, from simplest to most complete:

Option A: Automatic Collection (Simplest)

GTM can automatically detect email and phone fields on the page and hash them. Enable this in the Google Ads Conversion Tracking tag settings. Works when form fields use standard HTML attributes (type="email", type="tel", autocomplete="email").

Option B: Manual Data Layer (Most Reliable)

Push hashed user data to the data layer on form submission:

window.dataLayer.push({
  'event': 'form_submission',
  'enhanced_conversion_data': {
    'email': 'customer@example.com',   // Will be auto-hashed by GTM
    'phone_number': '+19139631029',     // E.164 format
    'first_name': 'John',
    'last_name': 'Smith',
    'street': '123 Main St',
    'city': 'Overland Park',
    'region': 'KS',
    'postal_code': '66213',
    'country': 'US'
  }
});

Recommended for Bright Side: Start with Option A (automatic). If match rates are below 50%, implement Option B for forms that capture email and phone. Most Bright Side forms already capture phone number and email, making this straightforward.

EC-3

Step 3: Enhanced Conversions for Leads (Offline)

This is the advanced version specifically designed for lead generation businesses like Bright Side:

  1. When a user submits a form, GTM sends hashed email/phone + a conversion event to Google Ads
  2. Later, when the lead converts to a paying customer in ServiceTitan, you upload the offline conversion with the same hashed email/phone
  3. Google matches the original ad click to the offline sale using the hashed data

This is an alternative to the GCLID pipeline that works even when GCLID capture fails. The two methods are complementary; use both for maximum coverage.

Data normalization requirements: Before hashing, email addresses must be lowercased with whitespace trimmed. Phone numbers must be in E.164 format (+19139631029). Google's GTM tag handles hashing automatically, but the input data must be clean.

Google Consent Mode V2 is a framework that adjusts how Google tags behave based on a user's cookie consent choice. While GDPR and CCPA requirements differ by region, implementing Consent Mode demonstrates privacy maturity and unlocks Google's behavioral modeling for users who decline cookies.

KEY

Consent Mode V2: The Four Consent Signals

Consent TypeWhat It ControlsDefault State (Recommended)
ad_storageWhether Google Ads cookies can be stored (used for remarketing and conversion tracking)Denied (until user consents)
analytics_storageWhether GA4 cookies can be stored (used for session and user identification)Denied (until user consents)
ad_user_dataWhether user data can be sent to Google for advertising purposesDenied (until user consents)
ad_personalizationWhether personalized advertising features can be usedDenied (until user consents)

Basic vs. Advanced Consent Mode

ModeBehavior When User DeclinesData ImpactRecommendation
Basic Consent ModeAll Google tags are completely blocked. Zero data collected.Significant data loss for users who decline. No behavioral modeling.Not recommended. Too much data loss.
Advanced Consent ModeGoogle tags fire but in a restricted "cookieless" mode. Pings are sent without cookies. Google uses behavioral modeling to estimate conversions from non-consenting users.Minimal data loss. Google models fill the gap.Recommended for Bright Side. Maintains data completeness while respecting user choice.
CM-1

Implementation via GTM

  1. Choose a Consent Management Platform (CMP). Recommended options for WordPress: CookieYes, Complianz, or Iubenda. Must be Google-certified and IAB TCF compatible.
  2. Install the CMP plugin on callbrightside.com via WordPress
  3. Configure GTM Consent Overview:
    • Go to GTM Admin > Container Settings > Enable consent overview
    • Each tag now shows its consent requirements
  4. Set default consent state using a GTM tag that fires on Consent Initialization (before any other tags):
    gtag('consent', 'default', {
      'ad_storage': 'denied',
      'analytics_storage': 'denied',
      'ad_user_data': 'denied',
      'ad_personalization': 'denied',
      'wait_for_update': 500    // Wait 500ms for CMP to load
    });
    
  5. Update consent state when user makes a choice (the CMP handles this automatically if configured correctly):
    gtag('consent', 'update', {
      'ad_storage': 'granted',
      'analytics_storage': 'granted',
      'ad_user_data': 'granted',
      'ad_personalization': 'granted'
    });
    
For Kansas-based businesses: The US does not have a federal GDPR equivalent (as of February 2026), but multiple states have passed privacy laws, and Google increasingly requires Consent Mode for full feature access. Implementing Consent Mode now future-proofs Bright Side and ensures maximum data collection. The CMP banner adds minimal UX friction; most home services users simply accept and move on.

14. Server-Side GTM: The Advanced Upgrade

Server-side Google Tag Manager (sGTM) moves tag processing from the user's browser to a server you control. This is the most advanced tracking upgrade in this playbook and represents the direction enterprise-grade analytics is moving in 2026.

ADVANCED

Client-Side vs. Server-Side GTM

AspectClient-Side GTM (Current)Server-Side GTM (Upgrade)
Where tags runIn the user's browserOn a server (Google Cloud Run or similar)
Ad blocker impactBlocked by ad blockers and privacy extensionsBypasses most ad blockers (tags fire server-to-server)
Cookie lifespan7 days on Safari (ITP), varies on other browsersUp to 2 years (first-party server-set cookies)
Page speed impactEach tag adds JavaScript and HTTP requests to the pageMinimal browser load. Heavy processing happens server-side.
Data controlData goes directly from browser to Google, Facebook, etc.Data goes to YOUR server first. You decide what to forward.
CostFree~$50-$150/month for Cloud Run hosting

Why Server-Side GTM Matters for Bright Side

ROI

The Business Case

Implementation Overview

sGTM-1

Server-Side GTM Setup Steps

  1. Create a server-side GTM container in your existing GTM account (separate from the web container)
  2. Deploy to Google Cloud Run (recommended) or another cloud provider. Google Cloud Run auto-scales and costs ~$0.00002 per request.
  3. Map a custom subdomain: data.callbrightside.com or gtm.callbrightside.com. This makes all tracking requests appear as first-party.
  4. Configure the GA4 client in the server-side container to receive hits from the web container
  5. Add server-side tags: GA4 server tag, Google Ads conversion tag, and any other third-party tags you want to move server-side
  6. Update the web container: Change the GA4 Configuration tag's transport URL to point to your server-side endpoint
  7. Test thoroughly: Use GTM Preview Mode for both containers simultaneously. Verify data flows from browser to server to GA4/Google Ads.
sGTM-2

What to Move Server-Side (Priority Order)

TagPriorityWhy
GA4HighExtend cookie life, bypass ad blockers, improve page speed
Google Ads ConversionHighRecover lost conversions from Safari ITP and ad blockers
Google Ads RemarketingMediumBuild larger remarketing audiences from previously blocked users
HubSpotLowHubSpot has its own first-party cookie strategy; less benefit from sGTM
ClickCeaseLowKeep client-side; needs browser-level fraud detection signals
Timing recommendation: Server-side GTM is a Day 60-90 initiative. Get client-side tracking perfect first (Sections 1-13), prove the value with 60 days of data, then upgrade to server-side. Do not attempt sGTM on Day 1. The complexity is manageable but the client-side foundation must be solid first.

15. Tech Stack Integration Map

Bright Side's tech stack has multiple tools that must communicate. This section maps every integration point and identifies potential gaps.

MAP

Complete Integration Architecture

callbrightside.com (WordPress + Oxygen Builder)
  |
  +--[GTM Web Container]
  |    |
  |    +--> GA4 (page views, events, key events)
  |    +--> Google Ads (conversion tracking, remarketing)
  |    +--> HubSpot (tracking code, form tracking)
  |    +--> ClickCease (click fraud detection)
  |    +--> Consent Mode (CMP integration)
  |    |
  |    +--> [Future: Server-Side GTM Container]
  |              |
  |              +--> GA4 (server-side)
  |              +--> Google Ads (server-side conversions)
  |
  +--[Rank Math SEO Plugin]
  |    |
  |    +--> Schema markup (LocalBusiness, FAQPage, Service)
  |    +--> XML Sitemap --> Google Search Console
  |
  +--[HubSpot CRM]
       |
       +--> Lead capture (forms, chat)
       +--> GCLID/UTM storage on contact record
       +--> Zapier --> ServiceTitan (lead sync)
       |
       +--[ServiceTitan]
            |
            +--> Job booking, dispatch, invoicing
            +--> Revenue data (source of truth)
            +--> Zapier --> Google Ads Offline Conversions
            +--> Zapier --> GA4 Measurement Protocol

Integration Checklist

IntegrationStatusPriorityAction Required
GTM installed on callbrightside.comVerifyDay 1Confirm GTM snippet is in <head> of all pages via Oxygen or WPCode
GA4 data stream activeVerifyDay 1Confirm Measurement ID is correct and data is flowing
GA4 linked to Google AdsConfigureDay 1Link in GA4 Admin, enable auto-tagging in Google Ads
GA4 linked to Search ConsoleConfigureDay 1Link verified Search Console property
HubSpot tracking code via GTMVerify/MigrateDay 3If HubSpot code is hardcoded, move it to GTM for centralized management
ClickCease via GTMVerify/MigrateDay 3Same as HubSpot; move to GTM if hardcoded
GCLID capture on formsBuildDay 7Add hidden GCLID field to all contact forms; GTM populates from cookie
HubSpot to ServiceTitan syncBuild/VerifyDay 14Zapier workflow: new HubSpot contact creates ServiceTitan lead with GCLID
ServiceTitan to Google Ads offline importBuildDay 30Zapier workflow or manual CSV: invoiced job sends GCLID + revenue to Google Ads
Consent Mode V2BuildDay 14Install CMP plugin, configure GTM consent settings
Enhanced ConversionsBuildDay 14Enable in Google Ads, configure GTM to send hashed data
Server-side GTMPlanDay 60After client-side is proven, deploy sGTM on Cloud Run

ClickCease + GA4 Coordination

ClickCease blocks fraudulent clicks from consuming ad budget. It needs to work with, not against, GA4 tracking:


16. Skillshop Certification Study Guide

The Google Analytics Certification and Google Tag Manager training on Skillshop validate the concepts in this playbook. This section maps every Skillshop topic to Bright Side's implementation.

CERT

GA4 Certification Exam Overview

DetailValue
Questions50
Time limit75 minutes
Passing score80% (40/50 correct)
CostFree
Validity12 months (annual recertification)
Platformskillshop.google.com

GA4 Certification Topic Map

Skillshop TopicCovered in This PlaybookBright Side Application
GA4 property setup and data streamsSection 3callbrightside.com web data stream, Measurement ID, timezone, currency
Event-based data modelSection 2Four event types, parameters, user properties
Automatically collected eventsSection 2page_view, session_start, first_visit
Enhanced Measurement eventsSection 3Scroll, outbound click, site search, video, form interaction, file download
Recommended and custom eventsSection 6generate_lead, purchase, click_to_call, schedule_service
Key events (conversions)Section 7Which events to mark as key events, primary vs. secondary conversions
Dimensions and metricsSection 2Source/Medium, Page path, Sessions, Key events, Engagement rate
Custom dimensions and metricsSection 8service_type, form_id, lead_value, customer_type
User propertiesSection 8customer_type, lead_status, service_interest
Audiences and segmentsSection 9Sewer Leads Not Converted, High-Value Converters, All Converters exclusion
Predictive audiencesSection 9Likely to convert, Likely to churn (requires volume threshold)
Standard reportsSection 10Acquisition, Engagement, Landing Page reports
Explorations (Funnel, Path, Free-form)Section 10Lead Conversion Funnel, Service Page Path, Lead Source Quality Matrix
Attribution modelsSection 2Data-driven attribution, cross-channel credit distribution
Google Ads integrationSection 11Linking, key event import, offline conversions, GCLID pipeline
Search Console integrationSection 11Organic search query data in GA4 reports
Data retention and privacySections 3 and 1314-month retention, Consent Mode V2, data filters
Data filters (internal traffic)Section 3Office IP filter, developer traffic filter
BigQuery exportSection 14 (referenced)Future state: raw event export for advanced SQL analysis
User identification methodsSection 12User-ID, Google Signals, Device-ID hierarchy

GTM Fundamentals Topic Map

Skillshop TopicCovered in This PlaybookBright Side Application
Tags, triggers, and variablesSection 4GA4 tags, form submission triggers, data layer variables
The data layerSection 4window.dataLayer pushes for form submissions, phone clicks, service detection
Container setup and structureSection 5callbrightside.com container, naming conventions, version control
Tag types (GA4, Ads, Custom HTML)Section 5GA4 Config, GA4 Event, Google Ads Conversion, HubSpot, ClickCease
Trigger typesSection 5Page View, Form Submit, Click, Timer, Scroll Depth, Custom Event
Variable typesSection 5Data Layer, URL, Constant, Lookup Table, DOM Element
Preview and debug modeSection 4Test every change before publishing, verify in GA4 DebugView
Version control and publishingSection 4Named versions, changelog, workspace management
Built-in variablesSection 5Page URL, Click URL, Form ID, Scroll Depth
Tag sequencingSection 5Consent tag fires before all other tags (Consent Initialization trigger)
Cross-domain trackingSection 3Only needed if HubSpot forms redirect to external domain
Event tracking implementationSection 6Complete event specification with parameters and business context

Study Recommendations

STUDY

Certification Prep Plan

WeekActivityTime
Week 1Complete all GA4 Skillshop lessons (Google Analytics section). Take notes on anything not covered in this playbook.4-6 hours
Week 1Complete GTM Fundamentals Skillshop course. Focus on the Preview Mode and data layer sections.2-3 hours
Week 2Hands-on practice: implement Sections 3-7 of this playbook on callbrightside.com's GA4 property and GTM container.8-10 hours
Week 2Take the GA4 practice exam. Review any missed topics against this playbook's topic map.2 hours
Week 3Take the official GA4 Certification exam on Skillshop. 50 questions, 75 minutes.1.5 hours

Key exam tip: The GA4 exam emphasizes report interpretation and feature location over implementation details. Know WHERE to find things in the GA4 interface, not just what they do conceptually. For example: "Where would you go to see which organic search queries drive traffic?" Answer: Reports > Search Console > Queries (if linked).


17. 30-60-90 Day Implementation Sequence

This maps directly to Stephanie and Kalen's 30-60-90 day evaluation framework: Days 1-30 diagnose and build the foundation, Days 31-60 activate and measure, Days 61-90 optimize and scale.

Days 1-14: Foundation

D1-3

Audit and Access

D4-7

Event Tracking Foundation

D7-14

Custom Dimensions, Key Events, and Consent

Days 15-30: Build and Validate

D15-21

Audiences and Reporting

D22-30

Offline Conversion Pipeline (Phase 1)

Days 31-60: Activate and Measure

D31-45

Optimization Based on Data

D46-60

Advanced Tracking and Refinement

Days 61-90: Optimize and Scale

D61-75

Server-Side GTM Deployment

D76-90

Full Revenue Attribution and Reporting Maturity


Complete Stack

The Bright Side Measurement Stack

$$$ Offline Conversion Import ServiceTitan revenue tied to ad clicks via GCLID
### Enhanced Conversions Hashed first-party data recovers 5-15% lost conversions
*** Server-Side GTM Extended cookies, ad blocker bypass, faster pages
>>> GA4 Audiences + Google Ads Behavioral segments exported for targeting and exclusion
||| Key Events + Custom Dimensions Service-specific lead tracking with proxy/actual values
... GTM Event Architecture Tags, triggers, variables for every lead touchpoint
=== GA4 Property Foundation Data stream, filters, retention, Google Signals, consent

Every layer serves one purpose: connecting marketing dollars to revenue dollars.
GA4 measures the journey. GTM captures the signals. ServiceTitan confirms the revenue.
At $35K/month, measurement accuracy is not optional. It is the difference between $3M and $6M.