Skip to content

Manage multiple client accounts

If you manage several Google Ads accounts — a few clients, maybe under different manager accounts (MCCs) — you don’t need to sign in for each one. One bidsmith auth login covers every account your Google login can reach. What changes per client is just which account a folder targets, and that lives in a small committable file: bidsmith.toml.

The layout

Give each client its own folder, each with a bidsmith.toml at its root:

  • Directoryads-config/
    • Directoryacme/
      • bidsmith.toml
      • campaigns.bid
    • Directoryglobex/
      • bidsmith.toml
      • campaigns.bid

acme/bidsmith.toml:

customer_id = "1112223333" # the Acme Google Ads account
login_customer_id = "4445556666" # the MCC you reach it through

globex/bidsmith.toml:

customer_id = "7778889990"
login_customer_id = "4445556666"

Now switching clients is just cd:

Terminal window
cd acme && bidsmith plan # targets the Acme account
cd ../globex && bidsmith plan # targets the Globex account

bidsmith searches upward from the directory you run in, so running from a subfolder works too.

Why this works

A Google Ads connection has four parts. Three of them are shared across all your accounts; only the account id really changes:

PartScopeWhere it lives
Your sign-in (refresh token)Your whole Google identity — every account you can accessGlobal, from auth login
Developer tokenYour agency’s API accessGlobal (or env)
login_customer_id (the MCC)Per accountbidsmith.toml
customer_id (the account)Per accountbidsmith.toml

So bidsmith.toml only carries the two account/MCC ids — which aren’t secret, so the file is safe to commit alongside your campaigns.

Account-agnostic campaigns

Because the account now comes from bidsmith.toml, your .bid files don’t have to name one. You can drop customer_id from the provider block entirely:

provider "google_ads" {} # account comes from bidsmith.toml

That lets you apply the same campaign files to several accounts — keep the campaigns in a shared module and let each client’s bidsmith.toml point it at the right account.

How it resolves

For the account and MCC ids, bidsmith checks, in order:

environment variable → bidsmith.toml → provider block → saved sign-in

An environment variable always wins, so CI can still set GOOGLE_ADS_CUSTOMER_ID to override everything for a one-off run.

See also