Skip to main content

Which account a connection uses

When you connect Google Ads, Meta Ads, TikTok Ads, Reddit Ads, or Google Analytics, you authorize Erdo against a login, not against an account. That login usually reaches several accounts: a marketing agency’s Google account can see every client it manages, and a Meta login can see every ad account under every Business Manager it belongs to. The grant covers all of them. That leaves one question the authorization itself cannot answer — which of those accounts is this connection for? It is a property of the connection rather than of any one dashboard or dataset, because it decides the account for everything the connection does: every dataset built on it, every sync it runs, and every action an agent takes through it. So Erdo asks as soon as you connect, and records the answer on the connection.

Choosing when you connect

After you authorize the provider, Erdo lists the accounts that connection can reach and asks you to pick one. For Google Ads that includes accounts reachable only through a manager (MCC) account — Erdo asks each account it can see directly whether it manages others, so client accounts appear even though the provider does not list them directly. Pick the account and the connection is ready. Everything Erdo does through it from then on runs against that account. An agent cannot widen the connection by naming a different account in an action: Erdo compares the requested account with the connection’s selected account before calling the provider and refuses a mismatch. For Google Ads, an agent listing accounts sees the one selected client account rather than every client reachable through the same manager login — unless the account you chose is the manager itself, in which case the connection operates every client under it and the listing shows them. Choosing an account the picker reached through a manager also records that manager as the connection’s context, so requests reach the account the way Google expects. Both are described under choosing an account under a manager. One account per connection. To work with a second account, connect the integration again and choose that account. Two connections to the same provider are normal and expected — an agency typically has one per client. Choosing is optional. Connecting often comes before the account exists: you authorize Google Ads or Meta so that Erdo can go and create an ad account for you, and until it has, there is nothing to choose between. Skip the question and the connection is made anyway. Erdo records the account it creates against the connection, and you can set or change it yourself at any point. A connection with no account recorded cannot read or write anything account-bound at the provider yet, so Erdo says so where it matters rather than blocking the connection itself: building a dataset or running an agent action on one asks for the account before it will read or write. Provider-wide discovery used to create or select that account remains available.

Changing it later

The choice is not permanent, and skipping it is not final. In the app, find the connection under your connectors and use Account on it. Over the API or CLI, read the accounts a connection can reach and set the one it should use.
Over MCP the same two operations are erdo_get_connection_scope and erdo_set_connection_scope.

Reading a recorded account without contacting the provider

For reporting and source attribution, read the account Erdo already stores even when the connection needs reauthorizing. Set include_options=false on the existing read:
MCP callers pass include_options: false to erdo_get_connection_scope. The response keeps selected, has_connection_scope and the scope description, with options: []. An empty selected means no account is recorded. Unreadable saved account metadata returns an error instead of an empty selection. Saved reads do not decrypt connection credentials or config secrets. This reads saved configuration; it does not verify that the provider grant still works. Omit the option, or set it to true, to enumerate live accounts as before. Setting an account still validates it against the provider’s live options. Saved reads also work for a connection your manager organization currently provides to your organization. Changing it and enumerating live provider options still require the connection’s existing permissions. A revoked management link or an active connection of your own removes that manager-provided entry. For hierarchical choices such as a GA4 property, the CLI shows the selected property with its parent account’s name. It does not count the parent as a second selected account. Dataset list and search responses (GET /v1/datasets, GET /v1/datasets-search, erdo_list_datasets and erdo_search_datasets) also include selected_segments when the dataset has a stored provider selection. Each entry carries its provider id, name, type, parent_id, metadata and nested children. These are the dataset’s saved account ancestors and filters, already loaded by the dataset read; no provider request is made. An older dataset can record a specific account while its connection lists several. Inspect account-level segments when identifying that historical dataset’s source; a campaign-level filter is not an account identifier. Those responses also include canonical provenance.connection_scope and provenance.selected_scope. connection_scope is the account identity saved on the connection; selected_scope is the effective connection-plus-dataset scope Erdo actually uses, with the connection’s account selection taking precedence over legacy account segments stored on the dataset. Use provenance for new consumers; selected_segments remains the unmerged stored selection for API compatibility and historical inspection.

What comes back

Address an account by the id the options list gives you, exactly as it appears. Account ids are not numeric everywhere — a Meta ad account is act_1234567890 and a Reddit one is a2_bzv32cgqp — and a Google customer id is accepted in either the 530-201-2239 form its UI shows or the 5302012239 form its API wants. Some providers reach an account through an owner — a Reddit ad account belongs to a business, a GA4 property belongs to an account. Those appear as parent on the option, and setting the account records the whole path, so you never have to name the owner separately.

Filtering within the account

Choosing the account is not the same as narrowing what a dashboard reads. Once a connection knows its account, a dataset built on it can still filter to specific campaigns, lists, or flows — that filter belongs to the dataset, because two dashboards on one connection routinely want different slices of the same account. You will see both: the account on the connection, and the campaign filter on the dataset.

If an account is missing

The list holds exactly what the provider says that login can reach. If it is empty because you do not have an account yet, that is the expected state — leave it, and set the account once it exists. Otherwise a missing account is almost always a permissions question at the provider rather than in Erdo:
  • The login lacks access. Grant it access in the provider’s own UI, then reconnect.
  • The account sits under a manager the login cannot see. Google Ads client accounts are found by asking each directly-accessible account what it manages, so a client account is only reachable if the login can see its manager.
  • The connection needs reauthorizing. A connection whose grant expired cannot list anything. Reconnect it and the accounts return.