Documentation sections
Money
Google Ads: connection and conversions
All Google settings live in Sources → Ad account → Google: your OAuth application, account selection, conversion actions, browser tags, spend and delivery history. In the flow, only select that source. The flow has no separate Google connection or action IDs.
In this guide: resource ownership · connection options · prerequisites · Google Cloud and OAuth · connecting a source · account selection · manual action IDs · IDs and labels · individual flows · postback delivery · browser tags · spend · verification · troubleshooting · maintenance · FAQ.
1. Who owns the accounts and permissions?
| Resource | Owner and purpose |
|---|---|
| Google Cloud project | Yours. You enable APIs and manage their access in this project. |
| OAuth Client ID and Client Secret | Your application's credentials in your Cloud project. Your application requests permission from the Google user you select. |
| Google user and Ads account | Your selected user must have access to the target Ads account. Their email address is not the ten-digit advertising account ID. |
| Manager account / MCC | Your manager account, or one the selected Google user can already access, if this access path is needed. |
| ArtisanClo | Provides the software, server and OAuth callback; stores settings, receives postbacks, refreshes authorized tokens, sends events and displays responses. |
This Ads integration does not use a shared ArtisanClo OAuth application, Cloud project, developer token or MCC. It does not substitute another customer's credentials. Server requests still run on ArtisanClo infrastructure; using your own app does not mean requests originate from your computer.
Client Secret and access/refresh tokens are stored encrypted. Saved secrets are not returned to the settings form. Leaving a saved secret field empty keeps its previous value. Visitors receive only public tag IDs and labels. Resource isolation is not a guarantee against Google restrictions: its rules still apply to accounts, applications and use of the service.
2. Choose the features you need
| Option | Requirements | Provides | Does not provide |
|---|---|---|---|
| Server conversions | Your OAuth app, Data Manager API, Ads account ID and action IDs | Sends lead and sale after ArtisanClo receives a conversion | Account discovery or spend on its own |
| Additional Google Ads API access | Your Cloud project's access to the target accounts and the Google Ads OAuth permission | Lists accounts, creates/reuses import actions and enables spend import | Access to accounts your Google user cannot manage |
| Browser only | Conversion ID/label and the ArtisanClo JavaScript tag on the page | Offer visits and form submission events | Late postbacks or spend; Google sign-in is unnecessary |
| Scheduled file | The source's feed URL and an upload schedule in Google Ads | Google retrieves prepared offline conversions | OAuth authorization or immediate delivery when a postback arrives |
You can enable server and browser delivery together. They observe different moments and do not automatically merge into one conversion. Review duplicates and conversion goals.
Google removed this requirement on September 9, 2026. Google Ads API access now follows the Cloud project that owns your OAuth credentials. Do not apply for a new developer token through MCC for this connection; check your project's Google Ads API Overview instead. Google's migration notice. ArtisanClo neither asks for nor stores it; previously saved tokens have been deleted.
3. Prepare tracking and your source
- Your plan must include ad-platform conversion delivery. Spend import is a separate plan feature. The settings show plan restrictions when a feature is unavailable.
- Use a flow with the tracker enabled. Cloaking-only flows do not deliver source conversions. Select the source in the flow's tracking settings.
- Configure incoming conversions from your site, affiliate network or external tracker. Pass the ArtisanClo click ID to the offer and return it in the postback.
- Check that advertising visits retain a real
gclid,gbraidorwbraid. The internal ArtisanCloclick_idconnects the postback to a visit; Google's identifier connects that visit to an ad. Both links are necessary. - Use a Google user with sufficient rights in the target Ads account or an accessible MCC. Cloud permissions alone do not grant Google Ads account access.
Do not invent a Google click ID for ordinary delivery. gad_source, UTM values, email and transaction IDs cannot replace it. Connecting Google later cannot recover an identifier missing from the original visit.
4. Set up your own Google Cloud application
- Open Google Cloud Console and select or create a project you control.
- Enable Data Manager API in the API library for server conversion delivery.
- For account discovery, automatic action creation or spend, also enable Google Ads API. Check your project's access level on Google Ads API Overview and complete Google's requirements for your intended accounts. Test-only access is insufficient for production advertising accounts. Project access levels.
- Configure your application's identity, contact email and audience in Google Auth Platform. An internal organizational audience only serves that organization's users. In Testing, add the Google address you will use as a test user.
- Create an OAuth Client ID with type Web application. In ArtisanClo, open the source → Ad account → Google → server conversions → your own Google Cloud OAuth application. Copy the displayed Authorized redirect URI into that OAuth client's settings.
- Copy the Client ID and Client Secret into the source. The Client ID normally ends in
.apps.googleusercontent.com. Do not paste an API key, Ads account number or an entire JSON file into these fields.
Copy the callback URI exactly, including scheme, domain and path. Do not replace /en/ with your dashboard language: the callback path is fixed. Local and production installations may display different addresses. Google's Web OAuth requirements.
The server connection requests openid, email and https://www.googleapis.com/auth/datamanager. Enabling the Google Ads API switch adds https://www.googleapis.com/auth/adwords. Grant the permissions needed for your selected features. Data Manager permission is required to complete this server connection.
An external app in Testing normally receives a seven-day refresh-token lifetime with these API scopes. For ongoing delivery, configure your app's publication status and meet applicable Google verification requirements. OAuth app publication/verification and the Cloud project's Ads API access are separate settings. OAuth token expiration.
Google screen names may change. Use your own application identity and only claim domains you control. If Google requires domain or application verification, follow the requirements for your actual configuration; connecting ArtisanClo does not replace that process.
5. Connect the source
- Open Sources and create or edit your Google source. Give it a name that identifies the business/account.
- Expand the ad-account conversions/spend block, select Google and enable server lead/sale delivery.
- Enter Client ID and Client Secret. Enable “Account discovery, conversion creation and spend (Google Ads API)” if your Cloud project is prepared for those features.
- Click “Save and connect my Google”. The source is saved before opening Google. Select the appropriate Google user and authorize your own application.
- After returning, check the connected email and configure the advertising account and conversion actions. “Connected” confirms stored authorization, not delivery of a particular conversion.
Signing into the ArtisanClo dashboard with Google and authorizing an advertising source are separate operations. The Ads connection uses the Client ID saved in that source.
Complete authorization in the same browser session within ten minutes. Starting another connection replaces the pending one. If you return to an old tab or the request expires, restart from the source.
If sign-in fails, the cabinet names the reason:
| Reason | What to do |
|---|---|
| Conversion upload access was unchecked | Sign in again and keep every permission checked on the Google screen |
| Google did not grant lasting access | Remove the app’s access in your Google Account (Security → Third-party apps) and sign in again |
| Google rejected the Client ID or Client Secret | Compare them with the OAuth client in your Google Cloud |
| The source’s Client ID, Secret or access options changed during sign-in | Save the source and sign in again |
| Google did not confirm the account email | Sign in with an account that has a verified email |
| Google did not grant access | Check the redirect URI in your OAuth client and sign in again |
6. Select an account and configure actions automatically
- After authorizing Google Ads API, click “Show my accounts”. The list includes accessible advertising accounts, including MCC clients. An empty list requires checking your Google user, Ads permissions and Cloud project access.
- Match the ten-digit account ID and click “Select and configure”. This button can create actual conversion actions in that account.
- Review the populated account ID, manager ID when applicable, and action IDs for lead and sale.
| ArtisanClo status | Exact action name in Ads | Created action |
|---|---|---|
lead | AC — Lead | Click import (UPLOAD_CLICKS), lead submission category, one per click |
sale | AC — Sale | Click import (UPLOAD_CLICKS), purchase category, many per click |
Enabled, compatible actions with these exact names are reused. An incompatible type or status stops configuration with an error; existing actions are not silently rewritten. The two creations are separate operations: if the second fails, the first may already exist and will be reused after you resolve the error and try again.
If conversion tracking belongs to a different account under an MCC setup, automatic configuration returns google_shared_conversion_account. Check conversion ownership in Google Ads first; changing the manager ID does not transfer actions.
Automatic configuration fills server action IDs. It does not create or retrieve browser Conversion IDs/labels. Configure browser events separately, and review campaign conversion goals and bidding settings in Google Ads.
7. Use manual IDs without Google Ads API
Data Manager API plus your OAuth grant can send postbacks even when account discovery and action creation are disabled.
- Prepare click-import conversion actions in Google Ads. Use separate lead and sale actions if you want both statuses.
- Enter the advertising account number in Google Ads Account ID, for example
123-456-7890. Hyphens are removed for API requests. - Enter the MCC ID if that is your access path. Leave it empty for direct access.
- Open each conversion action in Google Ads and copy its numeric ID, the
ctIdparameter in its page URL, into the corresponding lead or sale field. - Save the source and run validation for each enabled status.
An empty action field disables that status. To send sales only, fill sale and leave lead empty. Do not put AW-… or a Conversion label into a server action ID field.
8. Distinguish account IDs, action IDs and tag labels
These are illustrative values, not usable credentials.
| Field | Example | Purpose |
|---|---|---|
| Google Ads Account ID | 1234567890 | Advertising account receiving server events or supplying spend |
| Manager account / MCC | 9876543210 | Access path; does not replace the advertising account |
| Action ID / ctId | 111111111 | Destination for a server lead or sale |
| GTAG ID / Conversion ID | AW-12345678901 | Public Google tag identifier for browser delivery |
| Conversion label | ExampleLeadLabel | Identifies the particular browser action |
| Browser destination | AW-12345678901/ExampleLeadLabel | Combined ID/label from the event snippet |
| Client ID / Client Secret | Your OAuth application's credentials | Authorization and access refresh; never placed in the visitor tag |
9. Select a source in the flow
All Google settings live in Sources → Ad account → Google: your OAuth application, account selection, conversion actions, browser tags, spend and delivery history. In the flow, only select that source. The flow has no separate Google connection or action IDs.
For a different Google account or different conversion actions, create another source and select it in the relevant flow. Changes to a source apply to every flow that selects it. The visitor tag and server postbacks both use that selected source. Changing sources before a queued conversion is sent stops the old delivery with google_connection_changed.
10. Follow a server conversion
- An advertising visit is stored with Google's real click identifier and ArtisanClo's internal click ID.
- Your site or network reports a lead/sale through the configured conversion receiver, returning the ArtisanClo click ID.
- All Google settings live in Sources → Ad account → Google: your OAuth application, account selection, conversion actions, browser tags, spend and delivery history. In the flow, only select that source. The flow has no separate Google connection or action IDs.
- The server uses your application's valid OAuth token to call Data Manager API for your account and action.
- The result is recorded in delivery history. Google processes and attributes the event separately.
The request contains the Google click identifier, event time, conversion value in USD and an event identifier for duplicate protection. Value comes from the conversion payout recorded in ArtisanClo, not advertising spend. Server delivery does not wait for morning spend import.
A conversion/status pair is sent once. A transition from lead to sale can send two separate actions. Hold, rejected and trash are not sent through this mapping. Rejecting a previously sent lead does not automatically retract its Google conversion. Resending a changed amount in the same status is not a Google Ads value adjustment.
This interface has no automatic retry of failed delivery attempts or bulk historical upload. Reconnecting restores access for future events. Repeating the same postback and status is not a resend button. Use validation for setup checks and a new authorized test conversion to check the complete chain.
11. Browser events using Google IDs and labels
With Google Ads API enabled and your account selected, click “Configure tags from Google” in the source’s browser section. It creates or reuses AC — Offer visit and AC — Form lead website actions and retrieves their ID/label pairs. New actions are secondary goals. Install the ArtisanClo JavaScript tag on your page; the button does not install it. Without API access, use the manual fields below.
Browser delivery is independent of OAuth. It observes offer visits and form submission while the visitor is on the page; it cannot send a late postback after the visitor has left.
- Install the ArtisanClo JavaScript tag on the page and enable tracking for the flow.
- Open the relevant website conversion in Google Ads → tag setup → “Use Google Tag Manager”. Copy Conversion ID and Conversion label. This tab exposes the values; using ArtisanClo does not itself require installing GTM.
- Enable browser conversions in the source. Fill GTAG ID and GTAG Click Label for the offer visit, and GTAG Conversion ID and GTAG Conversion Label (Lead) for the form.
- Alternatively, expand “Paste an event snippet” and paste one destination's snippet. ArtisanClo extracts the ID/label; pasted JavaScript is not executed.
- Check the displayed
AW-ID/labeland save. At least one complete event is required while enabled. To disable all events, turn off the browser switch.
For example, gtag('event', 'conversion', {'send_to': 'AW-12345678901/ExampleLeadLabel'}); becomes the stored destination AW-12345678901/ExampleLeadLabel. Do not mix two different destinations in one field. An ID without a label is incomplete.
The runtime loads Google's tag automatically and reuses an existing gtag function. On a pre-lander, the offer event follows the offer link rather than simply opening the pre-lander. Before navigation it waits for the event callback for at most 800 ms and then continues even if Google is blocked.
A normal form event fires after native browser field validation when submit has not been prevented. It does not prove that your server accepted the form. For AJAX forms, dispatch the following after a successful response from your form handler:
document.dispatchEvent(new Event('artisanclo:lead'));
Do not dispatch it merely on a button click, validation failure or before receiving the server response. It notifies the Google tag and does not itself create an ArtisanClo conversion. Configure incoming conversions separately.
The parent tag cannot observe a form inside a third-party iframe or later actions on an external site without your tag. Ad blockers, CSP and consent settings can affect delivery. The integration does not override your site's consent configuration.
12. Prevent duplicates and choose conversion goals
Avoid sending the same browser action from both GTM and ArtisanClo using the same ID/label. ArtisanClo limits repeat events of the same type for a click and supplies a transaction identifier to Google.
Server and browser events have separate mechanisms and no shared automatic deduplication guarantee. A browser form submission and a confirmed postback may represent distinct goals. Review which actions are primary and used for campaign optimization in Google Ads. Rejecting a postback does not cancel a browser event already sent.
13. Import spend
- Authorize your own OAuth application for Google Ads API and check your Cloud project's production account access.
- Choose Google in the source's ad-account spend block.
- Set the advertising account supplying spend. Review the suggested number after automatic account setup; a previously filled spend account is not overwritten automatically.
- Save the source. Spend is imported on schedule when your plan includes this feature.
Each morning the importer rereads the previous three completed days to pick up corrections. It is not a live counter for today's spend. Values are read in the advertising account's currency and converted to USD with an available exchange rate.
When multiple flows share a source, retain campaign IDs in their clicks, normally with utm_campaign={campaignid} in the Google Ads template. A campaign shared by flows is allocated using their share of related clicks that reached offers; if none reached offers, all related clicks are used. Campaigns with no matching clicks are not allocated arbitrarily: their IDs appear in an import error.
When a source has only one tracking flow, that flow receives all imported account spend. Do not treat that setup as a filter for one campaign in a larger account. Imported values do not overwrite manually entered spend. Check the last synchronization time and error in the spend settings.
14. Verify setup, delivery and attribution separately
All Google settings live in Sources → Ad account → Google: your OAuth application, account selection, conversion actions, browser tags, spend and delivery history. In the flow, only select that source. The flow has no separate Google connection or action IDs.
Non-recording validation. Click “Save and send validation” beside a filled server status. It saves the form and calls Google with validateOnly = true, validating without executing the conversion. No actual ArtisanClo conversion is created; delivery history identifies the validation attempt. Google's validateOnly reference.
All Google settings live in Sources → Ad account → Google: your OAuth application, account selection, conversion actions, browser tags, spend and delivery history. In the flow, only select that source. The flow has no separate Google connection or action IDs.
Complete-chain check. In an authorized test scenario, record an advertising click, verify its Google click ID, use the internal click ID in a new conversion, find that conversion in ArtisanClo and inspect its ordinary Google delivery. Confirm the destination/result and later check Google Ads. This is an actual submission that may affect reporting.
Browser check. Use Google Tag Assistant, perform the action and inspect the conversion event and send_to destination. Failed forms should not dispatch your success event. Browser events have neither a server Google response log nor a validateOnly button.
15. Read delivery history
| Field or result | Meaning |
|---|---|
| Time, google channel, lead/sale | The time and status of the attempt |
| Validation passed | A validation request was accepted; no real conversion was executed |
| Request accepted / OK | The API accepted an ordinary request; attribution is not yet confirmed |
| HTTP status and error | Request result or the reason delivery did not occur |
| Google response and warnings | Additional details, including warnings with successful responses |
| requestId | Google's request identifier, when returned, for investigating the attempt |
The source shows the last ten deliveries, not a complete history export. An ordinary delivery's conversion association is also available in conversion/click history. For support, provide the source, flow, time, status, HTTP code, error text and requestId if present. Do not send Client Secret, access tokens or refresh tokens.
16. Troubleshooting
| Symptom or code | Check |
|---|---|
| Connect button unavailable | Server delivery is enabled, Client ID/Secret are provided, and your plan/team role permits the feature. |
| redirect_uri_mismatch | The exact displayed callback is registered for this OAuth client, including scheme, domain, language path and trailing slash. |
| Google refuses the selected user | The email, application audience, Test users and Workspace restrictions. Use truthful application ownership details. |
| 403 after Google returns | The ten-minute window, same browser/session, another pending connection or changed credentials. Restart from the source. |
| google_ads_api_disabled | Enable Google Ads API in your project and the source's corresponding switch, then save. |
| google_scope_missing / reconnect prompt | Reconnect and grant the API permission. Enabling an API in Cloud does not itself grant OAuth access. |
| google_auth | The server could not get Google access. The log response names the reason: access revoked or expired, Client ID/Secret rejected, or Google disconnected in the source. Fix it and reconnect. |
| CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION | Your Cloud project's Google Ads API access does not cover production accounts. Review Google Ads API Overview and access requirements. A developer token does not solve this. |
| Account missing or Google permission error | The user, direct/MCC access, account status and rights for the operation. Cloud access does not add a user to Ads. |
| google_shared_conversion_account | The conversion owner differs from the selected account; review cross-account conversion tracking. |
| google_incompatible_conversion | The action with that name must be enabled and a click-import action. Use a compatible action or enter an appropriate ID manually. |
| no_click_id | The original click lacks gclid/gbraid/wbraid. Check the advertising URL, parameter preservation and postback-to-click matching. |
| Conversion recorded, no delivery attempt | Check the selected source, tracker mode, plan, server switch, Google authorization and status action. If correct, ask support to check the delivery queue. |
| Accepted request, no Ads conversion | Exclude validateOnly, then check the account/action, genuine click ID, import diagnostics, report range, conversion window and Google processing. HTTP 200 alone does not prove attribution. |
| No browser event | The JS tag, browser switch, complete ID/label, CSP, blocker, consent settings, iframe boundaries and AJAX success dispatch. Inspect Tag Assistant. |
| Missing spend | The plan, Google Ads API permission, account number, completed day, campaign-to-click matching and latest import error. |
| 429 / request limit | Wait before repeating UI requests. Check your project's quotas for Google limits. Failed ordinary delivery attempts do not automatically retry. |
17. Reconnect, disconnect and migrate from JSON
Adding Google Ads API. Enable it in your project and source, then reconnect. Saving the switch does not expand an existing grant.
Changing Client ID or Secret. Saving changed application credentials clears the existing OAuth grant. Connect again and consider all flows sharing that source before changing it.
Stopping postback delivery only. Turn off server delivery and save. Browser events, scheduled files and spend have separate settings. Disable each used feature to stop all source activity with Google.
Disconnect access. Removes this source's stored OAuth grant. It does not delete the application or actions in Google Ads. It does not invoke global Google revocation, which could affect other sources using the same customer application. If you revoke permission in Google yourself, review all those sources.
An existing customer service account JSON key. Previously connected sources remain supported. To migrate, configure and authorize your own OAuth application in the source. Entering an OAuth Client ID selects the OAuth path; do not expect automatic fallback to the old JSON key while sign-in is incomplete. Successful authorization clears the previous server-conversion key. Also check spend, Ads API permission and every action.
Scheduled Google Ads file. This independent option includes up to 90 days of eligible events with gclid and uses conversion names from the feed settings. Those names are not ctId or browser labels. Choose one principal delivery path for the same events to avoid unintended duplicate imports.
18. Frequently asked questions
- Can I avoid Google Cloud?
- Yes for browser ID/label delivery or a scheduled file. Automatic server delivery through OAuth requires your own Cloud project.
- Can I avoid JSON?
- Yes. The new connection uses Client ID, Client Secret and Google authorization, not a downloaded service-account key.
- Is everything automatic?
- With Google Ads API enabled and your account selected, click “Configure tags from Google” in the source’s browser section. It creates or reuses
AC — Offer visitandAC — Form leadwebsite actions and retrieves their ID/label pairs. New actions are secondary goals. Install the ArtisanClo JavaScript tag on your page; the button does not install it. Without API access, use the manual fields below. - Do I need ArtisanClo's MCC?
- No. With direct access, your own MCC is also unnecessary. Use a manager ID only when your access path requires one.
- Can one flow use another account?
- For a different Google account or different conversion actions, create another source and select it in the relevant flow. Changes to a source apply to every flow that selects it. The visitor tag and server postbacks both use that selected source. Changing sources before a queued conversion is sent stops the old delivery with
google_connection_changed. - Will a lead be sent after the visitor leaves?
- Yes if a matched postback arrives and server-delivery conditions are met. A browser-only configuration cannot do this.
- Why is a browser event absent from ArtisanClo conversions?
- The Google tag does not replace the conversion receiver. Configure your postback/site handler and internal click ID.
- Does successful validation prove attribution?
- No. Confirm the whole chain with an authorized real advertising click and check the eventual result in Google Ads.
Related: sources, flow tracking, incoming conversions, conversion history, reports and spend. External API requirements were checked against Google documentation on October 19, 2026; consult the current Google interface for your project's settings and screen names.
ArtisanClo · Dashboard documentation. Questions — info@artisanclo.com or @artisanclo_support on Telegram.