Skip to content

Send call events to Google Analytics 4

Call Tracking sends a phone_call event to the client's Google Analytics 4 property for each qualifying call, so phone leads appear next to web conversions and can be marked as a key event.

Before you begin

  • You have Editor access to the client's Google Analytics 4 property.
  • The website's Google Analytics tag is installed and setting _ga cookies. Without it, calls still arrive but can't be linked to the visitor's Google Analytics session.
  • You have the Owner or Editor role in the Call Tracking project.

Get the Measurement ID and API secret

  1. In Google Analytics, click Admin > Data streams and open the web stream whose tag runs on the website. This is usually the only web stream for the site.
  2. Copy the Measurement ID. It starts with G-.
  3. Under Measurement Protocol API secrets, click Create, give the secret a nickname such as Call Tracking, and copy the secret value.

Use the website's existing stream

Don't create a new data stream for Call Tracking. Calls join a visitor's session through the session cookie that the website's own tag sets, which is named after that stream's Measurement ID. A stream whose tag isn't on the website never gets that cookie, so website calls can't join the visitor's session and lose the visit's traffic source. An API secret belongs to one stream, so create it on the same stream as the Measurement ID.

To check which stream the site runs, open the website, then your browser's developer tools, and look for a cookie named _ga_ followed by the ID: _ga_2ZK2RW9N8D means G-2ZK2RW9N8D. After the integration is connected, the card warns you if the configured stream hasn't been seen on the website in the last 14 days and names the one that has.

Connect

  1. In the Enfonica Console, open the tracking site and click Integrations.
  2. On the Google Analytics card, click Connect.
  3. Enter the Measurement ID and the API secret, and click Connect.
  4. Click Configure to set the Minimum call duration (seconds). The default of 60 sends answered calls connected for a minute or more. Set 0 to send every call, including missed calls.

Calls that end after you connect are sent. The secret is stored encrypted and isn't shown again; to change it, enter a new one under Configure.

The event

Each qualifying call sends one event named phone_call with these parameters:

Parameter Value
call_id The tracked call's ID
tracking_type dynamic for a number pool, static for a static number
session_id The Google Analytics session ID from the visitor's _ga_ cookie, when available
page_location, page_referrer The session's landing page and referrer
source, medium, campaign, term, content, channel The call's attribution. source and medium are omitted for direct visits.
device_category, browser, os The session's device (mobile, tablet or desktop), browser and operating system. Google Analytics can't work these out for server-sent events, so without them a call shows as an unknown device. Register them as custom dimensions to report on them.
gclid, gbraid, wbraid Google click IDs from the session, when present
labels_list The call's AI labels, comma separated, when Call Insights is on
label_<name> true for each label, for example label_qualified
call_summary The AI summary, when Call Insights is on
engagement_time_msec 100, so the event counts as engaged

The event's client ID is the visitor's Google Analytics client ID when the script could read the _ga cookie, so the call joins the visitor's user in Google Analytics, and the session_id joins it to the visit and its traffic source. Otherwise a synthetic client ID is used and the call appears as a separate user. The event time is the call's start time. The caller's phone number is never sent.

Calls without a website session

Some calls have no Google Analytics session to join: calls to static tracking numbers, and calls from visitors whose browser didn't set the Google Analytics cookies, for example after declining cookies. For these, Call Tracking also sends a campaign_details event with the call's source, medium, campaign, term and content, so Google Analytics reports the call under that traffic source instead of Unassigned. Direct visits are left out. The source, medium and campaign parameters on phone_call itself are for your own reports; Google Analytics doesn't use event parameters to set a traffic source.

Static tracking number calls show the source and medium set on the number, for example business-number / offline. Google Analytics' default channel group has no channel for most offline values, so it still shows them as Unassigned in Session default channel group. Report on Session source / medium instead, or add a custom channel group in Google Analytics that recognises them.

Set up Google Analytics

  1. Mark the event as a key event. In Admin > Events, find phone_call after the first call arrives and turn on Mark as key event. It can take a day for the event to appear in the list.
  2. Register custom dimensions for the parameters you want to report on, such as tracking_type, channel and labels_list, under Admin > Data display > Custom definitions. Parameters that aren't registered are still received but don't appear in standard reports. Report on calls in Google Analytics 4 lists the ones the suggested reports use.
  3. Import the key event into Google Ads if the client bids on Google Analytics conversions. Otherwise use the Google Ads integration, which attributes conversions to the click directly.

Timing

Events appear in Realtime within a few minutes of the call ending. A recorded call is sent once its transcript is ready and, if AI Call Insights is on, its analysis. Standard reports can take 24 to 48 hours to update.

Troubleshooting

Problem Check
No events at all The Measurement ID and API secret belong to the same web stream. The card shows Connected.
Some calls missing The call was answered and connected for at least the minimum duration. Missed calls aren't sent unless the minimum is 0. The call's page shows a GA4 · pushed or GA4 · failed chip; no chip means the call wasn't sent. A failure caused by a temporary problem is retried a few times over about half an hour.
Calls appear as new users The _ga cookie wasn't readable when the script ran: the Google Analytics tag loads after the tracking script, is on a different domain, or was blocked by consent. The event still arrives with its attribution parameters.
Website calls don't show the visit's source The Measurement ID belongs to a stream whose tag isn't on the website. The card warns about this. Switch to the website's stream with an API secret created on it; see Get the Measurement ID and API secret. Calls already sent stay Unassigned.
Static number calls are Unassigned in the channel report Expected in Session default channel group. Use Session source / medium, or add a custom channel group.
The card says calls failed to push The notice shows the latest reason. Click View calls to see every failed call. Google Analytics accepts events without checking the Measurement ID or API secret, so a wrong one doesn't show here: if calls show as pushed but no events arrive, see No events at all.
Source and medium look different from Google Analytics Call Tracking reads them from the landing page of the session using the same rules Google Analytics uses. See Sources, mediums, campaigns and channels.

Having trouble? See Calls don't show up in Google Analytics, Google Ads, Meta, HubSpot or Zapier in the Help Center.

What's next