Low call attribution rate: how to diagnose and fix tracking gaps in GA4
If fewer calls than expected are showing source, medium, or campaign data in GA4, you have one of two problems:
Capture gap
- Nimbata swapped the number but couldn't read the visitor's session data.
- Usually a cookie consent manager.
Integration gap
- Nimbata captured full session data, but it never reached GA4.
- Usually a Client ID or workflow misconfiguration.
They look the same on the surface but require different fixes.
Diagnose which one you have first.
Step 1. Check Nimbata's attribution data
- Go to Activity > Calls.
- Open an unattributed call.
- Check the Attribution section of the call record.
Source and medium are populated > data was captured but didn't reach GA4.
This is an integration gap. Go to Section A.
Source and medium are empty > session data was never captured.
This is a capture gap. Go to Section B.
Section A. Integration gap: call data not reaching GA4
A1. Verify your GA4 credentials
- Go to Integrations > Google Analytics in Nimbata.
- Confirm the Measurement ID (format:
G-XXXXXXXXXX) matches exactly the one in GA4 under Admin > Data collection and modification > Data streams > [your stream] > Stream details. - Confirm the API secret comes from Measurement Protocol API secrets on that same screen; not a Tag Manager token or any other credential.
- Confirm the integration status shows running in 1 workflow.
A2. Check whether the Google Client ID is being transmitted
Nimbata links call events to GA4 sessions using the visitor's _ga cookie.
If it isn't captured at call time, GA4 can't match the event to a session; even if source and medium are correct in Nimbata.
- In a call record, check for a Client ID field in the attribution data.
- If it's blank on calls that do have source and medium, the Client ID handshake is broken.
Common causes: the Nimbata script loads before GA4's gtag.js initializes, the _ga cookie is blocked by a consent manager, or a GTM error is preventing the GA4 tag from firing.
Fix: in GTM, set your GA4 configuration tag to fire on All Pages with no conditions, and ensure the Nimbata tag fires after it.
A3. Check your workflow configuration
- Go to Workflows.
- Open the workflow driving your GA4 integration.
- Trigger: must be set to Call ends, not Call starts.
- At call start, duration is 0; any duration filter will fail.
- Filters: check every condition.
- A common silent blocker is Recording = Yes.
- If a caller presses the privacy opt-out digit, recording stops and this filter fails.
- Replace it with Duration > X seconds instead.
- Status: Confirm the workflow is enabled and showing as running.
A4. Check for GA4-side data filters
- In GA4, go to Admin > Data filters.
- Confirm no filter is excluding events sent via the Measurement Protocol.
Section B. Capture gap: session data missing at the point of the call
B1. Check whether a consent manager is blocking the script
This is the most common cause, especially in markets with low opt-in rates (Germany, Sweden, France, Poland).
The pattern: DNI is working and numbers swap when tested, but a high percentage of calls from a specific market show no attribution.
To confirm:
- Open the affected site in a fresh browser session without accepting the cookie banner.
- Call the tracking number and check the resulting call record in Nimbata.
- If source and medium are blank, repeat the test after accepting cookies.
- If attribution appears after accepting, the consent manager is the cause.
Fix: review how your consent manager categorizes the Nimbata script and GA4 tag.
If compliant with your privacy policy, moving Nimbata to a Functional or Necessary category will resolve this.
Ensure the GA4 tag fires before Nimbata even in consent-pending mode, so the _ga cookie is set first.
B2. Check the script load order
Even without a consent manager, if Nimbata fires before GA4 it cannot read the _ga cookie.
- Open F12 > Network.
- Reload the page.
- Confirm the GA4 tag fires before the Nimbata script.
- In GTM, add a trigger dependency or sequence the Nimbata tag after GA4.
- In manual installs, place the Nimbata script tag below the GA4 tag.
B3. Check that your swap group source matches your traffic
- A Google Ads swap group only swaps for visitors with a
gclidparameter. - Calls from other channels won't have campaign attribution.
- An All Visitors swap group swaps for everyone but will show many calls as direct or organic.
Confirm your swap group sources match your attribution expectations.
Realistic attribution benchmarks
- 60-80% is typical for single-market setups with moderate consent rates.
- Below 50% usually indicates a fixable technical issue covered in this guide.
- Near 0% in one market with a working setup elsewhere is almost always a consent manager or script load order issue.
Detailed Guide: Google Analytics 4 integration: how to set it up in Nimbata
Detailed Guide: Google Ads conversions via GA4: how to import Nimbata call events
Detailed Guide: How to set up your first workflow
Troubleshooting: Tracking number not swapping: full troubleshooting guide
Updated on: 07/04/2026
Thank you!