Data Manager: Missing Auth Token Error

Hi everyone,

I’m trying to send Google Ads Data Manager (GoogleConversionEvent) events from my server GTM via Stape, but every request to Google Ads is failing with:

“Request is missing required authentication credential. Expected OAuth 2 access token…”

My setup:
• Google Ads connection in Stape is active
• 2FA is enabled on the Google account
• I removed and re-added the connection
• Operating Customer ID and Conversion Event ID match the ones shown inside Google Ads
• Payload from GTM to Stape looks valid, and Stape receives it with no issues.

Request to Stape (with obfuscations):

{
  "type": { "type": "request", "label": "Request Log" },
  "platform": "GoogleConversionEvent",
  "requestUrl": "https://<stape-endpoint>/v2/data-manager/events/ingest",
  "logData": {
    "Name": "GoogleConversionEvent",
    "Type": "Request",
    "EventName": "ConversionEvent",
    "RequestMethod": "POST",
    "RequestUrl": "https://<stape-endpoint>/v2/data-manager/events/ingest",
    "RequestBody": {
      "validateOnly": false,
      "destinations": [
        {
          "reference": "1111111111",
          "productDestinationId": "1111111111",
          "operatingAccount": {
            "accountType": "GOOGLE_ADS",
            "accountId": "**********"
          },
          "linkedAccount": {
            "accountType": "GOOGLE_ADS",
            "accountId": "**********"
          }
        }
      ],
      "events": [
        {
          "eventTimestamp": "2025-12-01T13:35:02+00:00",
          "eventSource": "WEB"
        }
      ]
    },
    "TraceId": "REDACTED_TRACE_ID"
  }
}

Response

{
  "type": { "type": "response", "label": "Response Log" },
  "platform": "GoogleConversionEvent",
  "responseStatusCode": 400,
  "logData": {
    "Name": "GoogleConversionEvent",
    "Type": "Response",
    "EventName": "ConversionEvent",
    "ResponseStatusCode": 400,
    "ResponseHeaders": {
      "cache-control": "no-cache, private",
      "content-type": "application/json",
      "date": "Mon, 01 Dec 2025 13:35:04 GMT",
      "server": "nginx",
      "trace-id": "REDACTED"
    },
    "ResponseBody": "{\"body\":{\"message\":\"Request is missing required authentication credential. Expected OAuth 2 access token...\"}}",
    "TraceId": "REDACTED_TRACE_ID"
  }
}

Any ideas what the issue might be?

Thanks in advance

Google Ads or Data Manager one?

Data Manager @Dan

Hi @syedali, I encountered this error previously when I did not pass the correct value in the Operating Customer ID and Customer ID fields in the UI.
Make sure to remove the “-” symbols and also any space characters at the start and the end of the string.

Thanks @giovaniortolani @Dan it was the ID fields yes.

Now I managed to get 200 response codes for conversion tags configured with the template.

But they are appearing as ‘Inactive’ goals under Google Ads.

I have set up the conversions as Offline conversions on Ads and Ads keeps prompting me to set up the data source. I could not find any instructions related to this. What could be the issue?

Thanks in advance.

Hi @syedali, from our experience, it will display Inactive until an actual Conversion is recorded (e.g. a conversion that came from an ad click or ad view).

And you don’t need to do anything else regarding setting up a data source. Just leave without one.

We have started a campaign targeting this conversion goal and have not have any conversions and the conversion goal remains inactive.

I can also see gclids generated by the ad clicks of that campaign in our internal database which is the source for the requests sent by Stape to Data Manager.

So I suspect, Google Ads is accepting the gclid but unusually rejecting the gclid (checked format already) or accepting its validity but not matching for some reason.

What could be the issue?

Hi @syedali, are you passing the GCLID in the corresponding field in the tag? And do you see the GCLID being sent correctly in the tag API call (i.e., without any modification after being captured)?

Hi all, unusually all was solved when switching to Legacy API connector and tag template. To be honest, I can’t figure out why Data Manager API did not work with the equivalent setup!

I’m having the exact same issue. Getting a 200 OK response from Google but there’s no attribution in Google Ads.

If you are sending the conversion through an MCC account be sure that “Customer Data Terms” are accepted the MCC Goal Settings, in my case this was blocking the conversion from being propagated to the child account.

Also, it would be a cool if the Stape API supported the requestStatus:retrieve endpoint. Currently, the proxy only handles event:ingest.

Without the status check, we can’t tell if a conversion is actually successful, still PROCESSING, or denied because of an old GCLID. Having that route would let us finally see into the “black box” and fix the silent errors we’re all seeing.

documentation here: REST Resource: requestStatus  |  Data Manager API  |  Google for Developers

@Dan @giovaniortolani Are there any limitations or requirements when using the Data Manager API, such as the requirement mentioned above regarding two people? I’m planning to use it for one of my clients and want to make sure there aren’t any restrictions I should be aware of.

Hi @Rosa_Paula.

There are some things to keep in mind, like what was already mentioned above, plus:

  • Accept the Customer Data Terms in Google Ads (if tracking conversions there)
  • Enable the Enhanced Conversions toggle in Google Ads (if tracking conversions there)
  • If Data Manager API is used to enhance conversions (as a fallback method) that are already collected via app/web directly, then there’s a 14-day trial during which the conversions collected through the Data Manager won’t be processed for that conversion. Ref.
  • Conversion Value and Conversion Currency Code behavior for Google Ads can change when a conversions is deduplicated. Ref.
  • If not using Stape connection, then you have to manually perform the connection yourself as described here, and also have in mind the request limits.
  • Google Ads Store Sales conversions only work for accounts that are allowlisted.
  • There are other minor details regarding the parameters that can be sent in the event. They can be found in the docs: Send events  |  Data Manager API  |  Google for Developers

You can read more about the Stape integration and the Data Manager Conversion tag here: Track Google Ads Conversions: Data Manager API Guide.

@giovaniortolani Thanks, that’s very helpful.

In my case, we’re focusing entirely on offline conversions. We’re not sending the same conversions through web or app tracking, so the Data Manager API would be used as the primary method for sending qualified leads from the CRM to Google Ads through the Stape connection.

Are there any other limitations or requirements I should be aware of for this type of offline conversion setup?

Hi @Rosa_Paula. In that case, no.

Just try to send as many data points as possible (Click ID, user data, etc.) so that the click or ad view can be attributed properly.

@giovaniortolani @Dan

I’m setting up the Google Data Manager API Conversion Events tag in GTM for a client who has a standalone Google Ads account and does not have a Google Ads Manager Account (MCC).

However, in the GTM tag, the Customer ID field is required, and I get the error The value must not be empty when I leave it blank.

My question is:

If the client doesn’t have an MCC, should I use the same Google Ads Operating Customer ID for both fields?

For example:

  • Operating Customer ID: 1234567890
  • Customer ID: 1234567890
  • Conversion Event ID: 771762****

Or is there another value I should use for the Customer ID when working with a standalone Google Ads account?

Check what the Google Data Manager event tag indicates.

Hi @Rosa_Paula, in this case you should use the same ID in both fields.

The help text of this section (Destination Accounts and Conversion Events) contains more information about the expected values for each scenario, if you ever need it.