Marketing & analytics Available
Google Ads
Ads shares the per-client link and the Google consent with Analytics and Search Console, but needs two extra things: a developer token belonging to your agency and, under a manager account, the knowledge of which account each client account has to be reached through.
What you need
- The Marketing module is enabled and licensed for this workspace (Instellingen → Modules)
- The Google Ads API is switched on in your OAuth client's Google Cloud project
- A developer token from the <strong>API Center</strong> of your Google Ads manager account. Apply early: Google reviews the request itself, and a freshly issued token does not yet read your live accounts.
- A Google account with access to the Ads account, or to the manager account above it, connected under Instellingen → Mijn account
- The marketing.link.manage permission, which gates both the token and the linking
How to connect it
- 1 Request a developer token in your Google Ads manager account under API Center. This is one token for the whole agency, not one per client.
- 2 Switch on the Google Ads API in the Google Cloud project your OAuth client belongs to.
- 3 Put the token into Instellingen → Marketing (Settings → Marketing). It is stored encrypted and never handed back; the screen only reports that a token is present, and leaving the field empty keeps the stored one. An install that still has
SCHAKL_GOOGLE_ADS_DEVELOPER_TOKENin its environment keeps working, but the screen is where it belongs. - 4 Connect your Google account under Instellingen → Mijn account (Settings → My account) if you haven't. That single consent covers Analytics, Search Console and Ads together.
- 5 Open Klanten → de klant (Clients → the client), click edit on the Marketing panel and choose Account koppelen (Link account) with source
Ads-account. If the account sits under a manager account, that is shown as a hint beside its name. - 6 The link backfills roughly 13 months and is updated nightly from then on.
Manager accounts are the normal shape, not an edge case
An agency is granted access to the manager account, not to each client account separately. Google's answer to "which accounts may you see" covers direct grants only, so that list is exactly one MCC id and none of the clients you actually run. So schakl. expands each manager account into its whole hierarchy in one query, and remembers per client account which manager it has to be reached through. That last part is the load-bearing half: without it every later call is made by someone with no grant on that account.
- A nested MCC needs no separate walk: the whole tree arrives in one call
- Sub-managers are dropped and their client accounts kept
- Manager accounts cannot be linked themselves — Google refuses metric queries at that level
- Past 500 client accounts per manager the list is capped and that is logged, never silently dropped
The API version is a setting, because it expires
Google Ads is the one Google API here whose URL carries a version, and Google sunsets a version roughly a year after it ships. From that day every path under it answers 404. That is not a token, permission or account problem, so none of the usual failure messages fits it and the module simply looks broken. schakl. therefore recognises a 404 from Ads specifically and says what is going on. The release pins a current version and <code>SCHAKL_GOOGLE_ADS_API_VERSION</code> overrides it, so an install that outlives its release can be bumped from the compose file instead of waiting for an upgrade.
Without a token, the rest keeps working
With no developer token, Ads is not broken but off: the picker and the sync fall back to a labelled state saying Ads still needs configuring. Analytics and Search Console keep running in the meantime. That is deliberate, because an agency that only wants the first two sources should not have to apply for a developer token to get them.
Permissions
Grant these to the role that manages this integration (Settings → Roles). Admin-only by default, and never to the client role.
-
marketing.metrics.readRead a client's marketing figures, spend included. Granted by default to admin, member and the client portal; an agency that treats ad spend as sensitive narrows this to admins. -
marketing.link.manageLink and unlink Ads accounts, open the account picker, and save the developer token under Instellingen → Marketing. Admin only by default. -
marketing.overview.readThe cross-client grid under Overzicht → Marketing, which is where the spend column comes from. Admin only by default.
What it deliberately does not do
- Nothing is written back: no changing budgets, bids, campaigns or ads. The link only reads.
- Manager accounts cannot be linked; you link the client accounts beneath them.
- The campaign drill-down shows ten campaigns sorted on spend. Ad groups, keywords and individual ads are not in it.
- Amounts arrive in the Ads account's own currency and are never converted.
- At most 500 client accounts per manager account are offered in the picker.
- A link made before manager-account expansion shipped does not carry the manager it is reached through. Unlink it and pick the account again — the picker hides accounts already linked to the client, so the unlink is what puts it back in the list.
Where to find it Instellingen → Marketing (Settings → Marketing) for the developer token, and Klanten → de klant → paneel Marketing (Clients → the client → Marketing panel) to link an account.
Read the guide