Google Analytics 4 Integration
Available on: Solo plans and higher
Connect Google Analytics 4 (GA4) to see real on-site traffic in Cuppa: sessions, pageviews, users, and engagements. GA4 complements Google Search Console and Bing Webmaster Tools by showing what happens after the click.
What You Can Do
- Import page-level GA4 metrics per brand (sessions, pageviews, users, engagements)
- See Sessions KPI in Performance Hub Overview
- View GA4 columns on Performance Hub Pages (sessions, engagements)
- Power Content Health with on-site engagement alongside GSC rankings
- Trend charts include a sessions series when GA4 is connected
Plan Requirements
| Plan | GA4 Access |
|---|---|
| Solo | Available |
| Studio | Available |
| Scale | Available |
| Enterprise | Available |
Legacy plans: Power, Business, Agency, and Agency+ include the same access (mapped to Solo, Studio, Scale, and Enterprise). Hobby does not. Legacy plans are no longer available for new purchases.
GA4 uses the same integrations feature gate as Google Search Console and Bing Webmaster Tools.
Prerequisites
- A Google Analytics 4 property for your site
- Viewer access or higher to the GA4 property (Editor/Admin recommended for property listing)
- A Cuppa Solo plan or higher
How Connection Works (Two-Tier Model)
Cuppa uses the same pattern as GSC and Bing:
- Team level: OAuth tokens stored once per team in Team Settings (
integrationsrow, typega4) - Brand level: Each brand binds to one GA4 property (
sites.ga4_property_id)
GSC and GA4 are separate OAuth connections. You can use the same Google account for both or different accounts per team need.
Step 1: Connect GA4 at the Team Level
- Go to Team Settings → Integrations
- Find Google Analytics 4
- Click Connect
- Sign in with your Google account
- Authorize Cuppa (read-only Analytics access)
Tip: Use a Google account that has access to the GA4 properties you want to bind to brands.
OAuth scopes: analytics.readonly plus basic profile/email (same Google OAuth infrastructure as GSC, separate integration record).
Step 2: Bind a Property per Brand
- Open Brand Settings for the site you want to connect
- Go to the Basic tab
- Find the Google Analytics 4 section
- Select your team GA4 connection
- Choose the GA4 property from the dropdown (display name + property ID)
- Save
Saving updates ga4_integration_id and ga4_property_id on the brand. The daily sync cron picks up the property on the next run.
Step 3: Wait for Initial Sync
| Status | Meaning |
|---|---|
| Connected | Property bound, sync scheduled |
| First sync | May take up to 24 hours for full backfill |
Backfill behavior: On first connect (or when history is thin), Cuppa backfills up to 16 months of page-level metrics in 30-day chunks. After that, the daily cron fetches the last 30 days incrementally.
What Data Gets Synced
Stored in site_ga4_page_metrics (per page path, per day):
| Metric | GA4 API Name | How Cuppa Uses It |
|---|---|---|
| Sessions | sessions | Overview KPI, trends, Pages tab |
| Pageviews | screenPageViews | Trends, page-level detail |
| Users | totalUsers | Trends aggregation |
| Engagements | engagedSessions | Pages tab, Content Health |
Dimensions: pagePath + date (daily granularity, unlike Bing’s weekly buckets).
Where GA4 Appears in Cuppa
| Surface | GA4 data shown |
|---|---|
| Performance Hub → Overview | Sessions KPI, sessions sparkline in trends |
| Performance Hub → Pages | Sessions and engagements per page |
| Performance Hub → Content Health | Page engagement alongside GSC clicks |
| Brand Visibility Score | Sessions contribute to social/engagement signals where applicable |
GA4 does not replace GSC or Bing for organic search KPIs. Search clicks/impressions still come from Search Console and Bing Webmaster. GA4 answers “what did visitors do on the site?”
Data Refresh
| Trigger | When |
|---|---|
| Automatic | Daily at 5:00 AM UTC (cron-sync-ga4-metrics) |
| Backfill | Up to 16 months on first connect |
| Incremental | Last 30 days on subsequent daily runs |
Sync order: GSC (4:00 AM) → GA4 (5:00 AM) → Bing (5:30 AM) → BVS daily (5:00 AM after GSC).
GSC + GA4 + Bing Together
| Source | Answers |
|---|---|
| GSC | How you perform in Google Search (pre-click) |
| Bing | How you perform in Bing Search (pre-click) |
| GA4 | What users do on your site (post-click) |
Performance Hub organic KPIs combine GSC + Bing for search.traffic GA4 sessions are a separate KPI and page-level columns.
Troubleshooting
”Google Analytics 4 not showing in Integrations”
- Confirm your plan is Solo or higher
”No properties found”
- Verify the correct Google account was used for OAuth
- Confirm you have at least Viewer access to GA4 properties in Google Analytics
- Check the property is a GA4 property (not legacy Universal Analytics)
“Sessions KPI is zero”
- Wait for the first daily sync (up to 24 hours)
- Confirm the correct GA4 property is bound in Brand Settings
- Verify the property receives traffic in the GA4 UI for the same date range
”GA4 data doesn’t match the GA4 UI exactly”
- Cuppa stores page-path level data aggregated to daily totals
- Sampling or thresholding in GA4’s UI can cause small discrepancies
- Very large properties sync the most recent 30 days incrementally; historical backfill runs in chunks
”Connection expired”
- Go to Team Settings → Integrations → Google Analytics 4 → Reconnect
- Re-authorize with Google
Privacy and Security
- OAuth 2.0 with read-only Analytics scope
- Read-only access - Cuppa never modifies GA4 configuration
- Data stored securely per team, never shared across accounts
- Revoke anytime from Google account permissions or Cuppa disconnect
Revoking Access
From Cuppa: Team Settings → Integrations → Google Analytics 4 → Disconnect
From Google: myaccount.google.com/permissions → Remove Cuppa
FAQ
Do I need GA4 if I have GSC? Yes, if you want on-site session and engagement data in Performance Hub. GSC only shows search appearance and clicks, not on-site behavior.
Which plan includes GA4? Solo plan and higher.
Can I use the same Google account for GSC and GA4? Yes. Connect both in Team Settings. They are separate integration records but can share the same Google OAuth account.
Can I connect different GA4 properties per brand?
Yes. Each brand binds its own ga4_property_id.
How often is data synced? Daily at 5:00 AM UTC. First connect triggers a up-to-16-month backfill.
Does connecting affect my analytics? No. Cuppa only reads reporting data.
What if I disconnect GA4? Sessions KPI and page-level GA4 columns disappear from Performance Hub. Cached metrics remain in the database until overwritten.
Related Docs
- Performance Hub - Where GA4 sessions and page metrics appear
- Google Search Console - Search performance (pre-click)
- Bing Webmaster Tools - Bing search performance
- Brand Settings - Bind GA4 property per brand