I have the very same issue. Anyone got this connection working?
If it helps anyone, with the help of Support I found out that the testing call is failing because of the testing payload not being compatible with Google Ads API. If you switch it for an actual payload (or just enable the integration after skipping the test) it will work.
If it helps anyone, with the help of Support I found out that the testing call is failing because of the testing payload not being compatible with Google Ads API. If you switch it for an actual payload (or just enable the integration after skipping the test) it will work.
Thanks @Ondrej Peterka! What did you end up using for the `Google Cloud Service Account` field? The base64 encoding of the JSON file or what?
@Steve Lionais did you end up base64’ing the entire json file? just the private key? something else?
@Ondrej Peterka did you end up base64 encoding the entire json download from google, just the key, or something else?
I actually got this to work by base64-encoding the entire JSON file (on a Mac, you can just do `base64 -i <path_to_json_file>`). Running into auth issues though now with my service account that I'm trying to work through with Amplitude Support, but at least I see attempts going through now. If anyone knows how to get the service account added to the Google Ads account, that’d be helpful!
I run into auth issues as well, “authentication_error: NOT_ADS_USER”, which I have not been able to resolve. I have domain-wide delegation enabled in Google Cloud, but it seems that Ads expect the call to impersonate actual account with access permissions, and I have not figured out how to do that in Amplitude, nor in Google Cloud.
So I solved it with a workaround.
In Amplitude I create data table chart grouped by initial utm_gclid that I store as a user property, day, and with event count.
Then I leverage https://www.docs.developers.amplitude.com/analytics/apis/dashboard-rest-api/#get-results-from-an-existing-chart and with a simple script I populate a google sheet daily, then set this sheet as upload source to adwords.
// In the url below insert the chart ID.
const url = 'https://amplitude.com/api/3/chart/3chart_id]/query';
const options = {
headers: {
// Base64 encoded string representing amplitude key and secret.
'Authorization': 'Basic Base64 encoded auth key]'
}
};
// We get the data.
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
const spreadsheet = SpreadsheetApp.getActive();
// Change the name of the sheet if needed.
const sheet = spreadsheet.getSheetByName('Import from Script');
// We clear the table.
sheet.clear;
// Now we parse the JSON.
// This works for any chart that is grouped by id and day and contains one column of values.
// Adapt this section as needed.
const rows = data.data.labels.map((label, i) => {
const value = data.data.valuesai]a0];
if (label.length > 0 && value > 0) {
const id = label 0];
const date = label 1];
return id, date, value];
}
}).filter(row => row !== undefined);
// We write everything in the table.
const headers = a'ID', 'Date', 'Value'];
sheet.getRange(1, 1, 1, headers.length).setValues(theaders]);
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
Has anyone succeeded in setting up event streaming to google ads? Would love to see more details in the instructions on:
- Which roles need to be enabled for the service account?
- How exactly do I set up the permissions in my google ads / service account to enable streaming?
Any solutions on this? I am having the same issue when I enter in the Base64 version of the json file from the service account.
When I look at the debugger, the failed reason does have to do with the NOT_ADS_USER.
Hello everyone,
We're aware of issues with our Google Ads streaming integration and are currently working on improving the setup experience. We're currently scoping out the effort and hope to deliver an improved integration by early Q2. If you have any questions or are interested in being part of the Beta program for the new iteration, feel free to reach out at brandon.khoo@amplitude.com.
Thank you for your patience and feedback so far.
Any update here @Brandon Khoo ? Would love to test the beta, pretty blocked by this right now.
Hello everyone,
I’m excited to give an update on our Google Ads streaming connector.
Key updates
- Streamlined the setup flow to make it easier to provide your Google Ads credentials. For example you can now upload your Google Cloud Service Account as a json format
- We’ve also made it possible for you to select and map additional optional properties such as Conversion Value, Currency Code and Order ID.
- Please note that our Google Ads integration is still in open BETA. You can access this by navigating to Data > Catalog > Destinations tab > Google Ads streaming tile. For any further feedback or questions, please feel free to email me at brandon.khoo@amplitude.com.
Key resources
Hello everyone,
We are facing issues with setting up Data destination for Google Ads conversion sync.
Stuck at OAuth credentials issue, with error
`io.grpc.StatusRuntimeException: UNAVAILABLE: Credentials failed to obtain metadata`. Can someone help, if its required to upload Base64 version of the json file from the service account ?