GA4 Analytics Setup Guide
Complete configuration reference for docjoy.com's Google Analytics 4 tracking. Follow these steps to mark conversions, register custom dimensions, and build the five performance dashboard cards in GA4 Explore.
Step 1 — Mark Conversion Events
In GA4, go to Admin → Events. Find each event below and toggle "Mark as conversion". Events only appear after they've fired at least once on the live site.
phone_clickHigh priorityVisitor taps/clicks any phone number on the site.
Fires on: Hero, sticky mobile bar, contact page, blog post CTA
schedule_now_clickHigh priorityVisitor clicks a "Schedule Now" or "Schedule Consultation" CTA.
Fires on: Hero primary CTA, geo page hero CTAs
contact_form_submitHigh priorityVisitor successfully submits the contact form on /contact.
Fires on: /contact page
form_conversionHigh priorityAny form successfully submitted — includes time-to-convert and traffic source. Use this to compare contact vs patient form performance.
Fires on: /contact and /patient-forms
appointment_request_clickVisitor clicks "Request an Appointment" link.
Fires on: Blog post CTA block
blog_cta_clickVisitor clicks either CTA inside a blog post (phone or contact form link).
Fires on: Bottom of every blog post
geo_cta_clickVisitor clicks a CTA on a geo-targeted landing page.
Fires on: /chiropractor-gig-harbor, -lakewood, -tacoma, -university-place
patient_form_submitVisitor submits a patient intake form on /patient-forms.
Fires on: /patient-forms
form_startVisitor focuses their first field in a form — marks the beginning of a booking attempt.
Fires on: /contact and /patient-forms
form_errorForm submission failed (network or server error). High counts indicate a technical problem.
Fires on: /contact and /patient-forms
Step 2 — Register Custom Dimensions
Go to GA4 → Admin → Custom definitions → Custom dimensions → Create. Register each dimension below so they appear as filterable columns in Explore reports.
| Dimension name | Scope | Description |
|---|---|---|
page_section | Event | Where on the page the action occurred (e.g. hero, blog_post_cta, contact_page) |
cta_label | Event | The button or link text that was clicked |
form_name | Event | Which form was submitted (contact, new_patient_intake, etc.) |
post_slug | Event | Blog post slug when a blog CTA is clicked |
service_area | Event | Geographic service area for geo page CTA clicks |
depth_percent | Event | Scroll depth threshold reached (25, 50, 75, or 90) |
page_name | Event | Page identifier for scroll depth events |
traffic_source | Event | document.referrer at form start — identifies which channel drove the booking attempt |
time_to_convert_ms | Event | Milliseconds from first field focus to successful form submission — measures booking friction |
error_type | Event | Type of form error: network or server |
field_name | Event | Which form field was focused or blurred |
Note: Custom dimensions can take up to 24 hours to appear in reports after first registration.
Step 3 — Build the 5 Dashboard Cards in GA4 Explore
All five cards live in GA4 → Explore. Click each card below for step-by-step setup instructions. Build them all in one Exploration named "DocJoy Performance Dashboard" using separate tabs.
Step 4 — Before / After Comparison Setup
Comparing pre- and post-optimisation performance
The homepage hero, trust badges, testimonials, sticky mobile CTA, blog post CTAs, and geo page CTAs were all deployed on Oct 11, 2026. Use this as your comparison boundary in every Explore report.
Before period
Sep 1 – Oct 10, 2026
Pre-optimisation baseline. Use once you have 2+ weeks of post data for a fair comparison.
After period
Oct 11, 2026 → ongoing
Post-optimisation. Custom events start accumulating from this date.
How to add a comparison in GA4 Explore:
- 1Open any Explore report
- 2Click the date range picker (top right of the canvas)
- 3Enable "Compare" toggle
- 4Set comparison period: Sep 1 – Oct 10, 2026
- 5Apply — GA4 will overlay both periods on charts and show % change in tables
Key Metrics to Watch (First 30 Days)
Avg session duration
Target: > 45 seconds
Baseline: ~0s (pre-optimisation)
Bounce rate (homepage)
Target: < 60%
Baseline: ~100% (pre-optimisation)
phone_click conversions
Target: > 5/week
Baseline: Not tracked before
contact_form_submit
Target: > 2/week
Baseline: Not tracked before
Blog scroll depth 75%+
Target: > 30% of blog sessions
Baseline: Not tracked before
Funnel: Homepage → Contact
Target: > 5% conversion
Baseline: Not tracked before