← blog/google-ads-mcc
    // blog/google-ads-mcc.md

    Google Ads: One Account Runs Every Client

    How an agency operates N Google Ads accounts with one MCC, 1 token and 1 OAuth — and why plugging in a new client is a single line.

    2026-07-24·6 min read·paid media·POSTEP Digital

    MCC = the agency's manager account · 1 token + 1 OAuth operate any client · adding a client = 1 customer_id

    // 01

    The problem of running N accounts

    An agency running Google Ads for many clients hits a silent mess: each client has their own account, their own login, their own permission. Multiply by ten and you have ten places to log into, ten tokens, ten points where something breaks.

    And when you want to automate — pull reports, upload offline conversions, pause a campaign via API — each account would need its own access setup. It doesn't scale. Google solved this with a structure built for agencies: the MCC.

    // 02

    What an MCC is

    An MCC (Manager Account) is an account that sits ABOVE the client accounts. You link each client's Google Ads account to your MCC, the client accepts the invite, and that's it — you operate all of them from one place, without knowing anyone's password.

    The client's account stays theirs: the money, the billing, the data. The MCC is just the agency's access and operation layer on top. It's the same model Google uses internally for large advertisers.

    // 03

    One authentication covers all

    Here's the trick for automation. With the MCC, you authenticate ONCE — 1 developer token + 1 OAuth app (which yields 1 refresh_token) — and that credential operates any subaccount. To target a specific client, you pass their customer_id + the login_customer_id (the MCC). That's all.

    // one login, every account
    1 authentication
    MCC · manager account
    1 developer token + 1 OAuth cover everything
    operate any account by passing just the customer_id
    Client A
    customer_id •••
    Client B
    customer_id •••
    Client C
    customer_id •••
    + N accounts
    adding a new client = 1 line in the config (their customer_id)
    // same credential, any client
    GoogleAdsApi(
    developer_token, client_id, client_secret
    )
    .Customer({
    customer_id: "CLIENT_ACCOUNT",
    login_customer_id: "MCC",
    refresh_token
    })

    Switching clients means switching a string. No new login, no new token, no new Google approval.

    // 04

    Plugging in a client is trivial

    Because the authentication is a single one, onboarding a new client is almost no work:

    01

    Link the client's account under the MCC and have them accept the invite (once, in the Google Ads UI).

    02

    Write the customer_id (10 digits) into a config line.

    03

    Done. The scripts already operate the new account — reports, conversions, campaigns.

    The existing clients never even know another one joined. Onboarding with no access renegotiation, no new app, no waiting for approval.

    // 05

    How we use it at POSTEP

    Our MCC operates client accounts via Node scripts using the official google-ads-api library. A shared layer reads the credentials once and builds the API client already pointing at the MCC's login_customer_id. Two capabilities come out of it:

    // what the MCC unlocks
    reporting
    spend & performance per campaign
    real cost per lead
    feeds the dashboards
    no manual spreadsheet
    offline conversions (ECL)
    CRM quality → Google Ads
    real sales teach the algorithm
    hashed phone (Enhanced Conv.)
    optimization with better signal

    In practice: opening a client's terminal and asking “how many active campaigns do they have” returns the answer instantly — the MCC credential already knows how to operate that account.

    // 06

    The trade-off (honestly)

    Centralizing has a cost: blast radius. If the refresh_token dies or the MCC gets suspended, it affects ALL clients at once — unlike an isolated model, where each client has its own credential and a problem stays contained.

    It's the opposite of how we treat Meta: there, each client gets a dedicated App on purpose, because CTWA/leadgen requires isolation per WhatsApp Business. On Google, the MCC is the mechanism Google itself designed for agencies — so the gain of operating everything with one credential outweighs the risk, as long as it's monitored.

    // the rule

    Use the structure the platform designed for your case. On Google, agency = MCC: one authentication, every account, plugging a client is one line. Just don't confuse it with per-client isolation — each platform has its own model.

    written by
    POSTEP Digital
    ← all posts