Articles on: Integrations

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.


A single mismatched character in either field will silently block all events from sending.


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



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.


Consult your legal team before changing cookie categorization.


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 gclid parameter.
  • 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

Was this article helpful?

Share your feedback

Cancel

Thank you!