Skip to content

Warning catalog

The complete list of console.warn calls in the SDK. Two categories: always-on (developer warnings about programming mistakes) and debug-gated (infrastructure failures only surfaced when debug: true).

For the conceptual split, see Debug mode & the warning catalog.

These fire regardless of the debug flag. They indicate something the application code did wrong, not transient infrastructure trouble.

[trackbridge] ⚠️ trackConversion called without transactionId
→ Auto-generated: tb_a8f3c1d2-...
→ Dual-send disabled for this call. Pass a transactionId you control
to enable cross-side dedup.
→ See: trackbridge.dev/docs/dedup
SourceBoth tracker.trackConversion() and serverTracker.trackConversion().
TriggertransactionId is missing or empty on the call input.
What’s happeningThe SDK falls back to a fresh UUID prefixed with tb_. The conversion still fires, but because the other side will generate a different fresh UUID, Google cannot deduplicate the two calls.
FixPass a stable string as transactionId on both sides. Almost always your order ID. See Deduplication & transactionId.

These fire only when debug: true is set on the tracker constructor. In production with debug: false, the underlying failure is silently swallowed (the Promise resolves normally, no log).

[trackbridge] gtag event failed: <error>
Sourcetracker.trackEvent().
Triggerwindow.gtag(...) threw.
Likely causewindow.gtag is undefined (the gtag script hasn’t loaded yet, or a TagManager container isn’t present). Less commonly, gtag itself errored on the params shape.
FixConfirm gtag is loaded before the tracker fires. If you load gtag asynchronously, defer the first event until dataLayer is ready, or accept the dropped event.
[trackbridge] gtag conversion failed: <error>
Sourcetracker.trackConversion().
Triggerwindow.gtag(...) threw during the conversion push.
Likely causeSame as above.
FixSame as above. The dual-send pattern means the server-side fire is your floor — a single failed gtag call doesn’t lose the conversion.
[trackbridge] GA4 MP returned <status> <statusText>
SourceserverTracker.trackEvent().
TriggerThe GA4 MP endpoint returned a non-2xx response.
Likely causeWrong ga4ApiSecret, wrong ga4MeasurementId, malformed clientId, or transient GA4 issue.
FixConfirm the secret in GA4 Admin → Data streams → Measurement Protocol API secrets matches ga4ApiSecret. Confirm the clientId is the third+fourth dot-separated segment of the _ga cookie value (GA1.1.<clientId>.<timestamp><clientId> is <part3>.<part4>).

Server: GA4 Measurement Protocol network error

Section titled “Server: GA4 Measurement Protocol network error”
[trackbridge] GA4 MP request failed: <error>
SourceserverTracker.trackEvent().
TriggerThe HTTP request to GA4 failed before getting a response (DNS, connection reset, timeout).
Likely causeEgress firewall, runtime networking misconfiguration, or transient outage.
FixCheck egress rules; the SDK needs to reach www.google-analytics.com over HTTPS.
[trackbridge] Ads API returned <status>
<response body>

The response body is logged as a separate argument so it’s expandable in DevTools.

SourceserverTracker.trackConversion().
TriggerThe Ads API returned a non-2xx response.
Likely causeMany — Google’s error responses include a details array that names the cause: INVALID_DEVELOPER_TOKEN, USER_PERMISSION_DENIED, INVALID_CONVERSION_ACTION_RESOURCE_NAME, etc.
FixRead the body. The most common causes: developer token still in test mode (request basic-access upgrade in Ads UI → API Center); customer ID has dashes (digits only); loginCustomerId missing for MCC hierarchies; conversion action belongs to a different customer than customerId. See Setting up Google Ads OAuth.
[trackbridge] Ads API request failed: <error>
SourceserverTracker.trackConversion().
TriggerThe HTTP request to Ads API failed before getting a response.
Likely causeEgress firewall, runtime networking misconfiguration, OAuth refresh failure (which throws separately — see below).
FixCheck egress to googleads.googleapis.com and oauth2.googleapis.com.

Two failure paths in the SDK throw rather than warn — they indicate misconfiguration that nothing later can recover from.

Error: [trackbridge] adsConversionId is required
Error: [trackbridge] ga4MeasurementId is required
Error: [trackbridge] ga4ApiSecret is required

Throws at createBrowserTracker / createServerTracker. Fix: provide the field.

Server: trackConversion without ads config

Section titled “Server: trackConversion without ads config”
Error: [trackbridge] trackConversion requires `ads` to be configured on createServerTracker

Throws at call time. Fix: pass ads: { ... } when creating the server tracker, or stop calling trackConversion from the server.

Error: [trackbridge] no conversionAction configured for label "..." — add it to ads.conversionActions on createServerTracker

Throws at call time. Fix: add the label to your conversionActions map. See Mapping conversion actions.

Error: [trackbridge] OAuth refresh failed with <status> <statusText>

Throws at call time when an Ads API call needs to refresh the access token and Google rejects the request. Fix: regenerate the refresh token via OAuth Playground; common cause is a personal-Google-account refresh token that’s been silently revoked.