Existen dos tipos de cuentas de Google Ads: las cuentas de administrador de Google Ads y las cuentas de anunciante de Google Ads (también conocidas como cuentas de cliente). Las cuentas de administrador pueden administrar otras cuentas de administrador de Google Ads o cuentas de anunciante de Google Ads. Puedes vincular una cuenta de anunciante a una cuenta de administrador y, luego, administrar la cuenta de anunciante a través de la cuenta de administrador. La estructura general vinculada es un grafo acíclico dirigido con cuentas de anunciantes en el nivel de hoja.
Puedes otorgar acceso a las cuentas de Google Ads a usuarios individuales o cuentas de servicio. Existen dos formas de otorgarles a los usuarios acceso a una cuenta de anunciante:
- Invita al usuario a la cuenta del anunciante para otorgarle acceso directo.
- Otorga al usuario acceso indirecto a la cuenta del anunciante invitándolo a una cuenta de administrador vinculada a esa cuenta. El usuario obtiene acceso a la cuenta de anunciante, ya que la cuenta de administrador tiene acceso a todas las cuentas vinculadas a ella.
También puedes asignar roles de usuario cuando invitas a un usuario a administrar una cuenta.
Considera la siguiente jerarquía de cuentas. Supón que todos los usuarios tienen acceso estándar.

En la siguiente tabla, se resume la estructura de esta cuenta.
| Usuario | Tiene acceso directo a | Tiene acceso indirecto a |
|---|---|---|
| U1, SA1 | M1 | M2, A1, A2, A3 |
| U2 | M2 y M3 | A1, A2, A3 y A4 |
| U3 | A4 |
ID de cliente de acceso
Un usuario puede tener acceso a varias jerarquías de cuentas. Cuando realices una llamada a la API en estos casos, deberás especificar la cuenta raíz que se usará para determinar correctamente los niveles de autorización y acceso a la cuenta. Para ello, especifica un encabezado login-customer-id como parte de la solicitud a la API.
En la siguiente tabla, se usa la jerarquía de cuentas del ejemplo anterior para mostrar qué IDs de cliente de acceso puedes usar y la lista correspondiente de cuentas a las que puedes realizar llamadas.
| Usuario | ID de cliente de acceso que se usará | Cuentas para realizar llamadas a la API |
|---|---|---|
| U1, SA1 | M1 | M1, M2, A1, A2, A3 |
| U2 | M2 | M2, A1, A2, A3 |
| U2 | M3 | M3, A1 y A4 |
| U3 | A4 | A4 |
Puedes omitir el encabezado login-customer-id si el usuario tiene acceso directo a la cuenta de Google Ads a la que realizas llamadas. Por ejemplo, no es necesario que especifiques el encabezado login-customer-id cuando usas credenciales de U3 para hacer una llamada a A4, ya que los servidores de Google Ads pueden determinar correctamente el nivel de acceso a partir del ID de cliente (A4).
Si usas una de nuestras bibliotecas cliente, usa la siguiente configuración para especificar el encabezado login-customer-id.
Java
Agrega el siguiente parámetro de configuración a tu archivo ads.properties.
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
C#
Agrega el siguiente parámetro de configuración cuando inicialices el objeto GoogleAdsConfig y úsalo para crear un objeto GoogleAdsClient.
GoogleAdsConfig config = new GoogleAdsConfig()
{
...
LoginCustomerId = ******
};
GoogleAdsClient client = new GoogleAdsClient(config);
PHP
Agrega el siguiente parámetro de configuración a tu archivo google_ads_php.ini.
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
Python
Agrega el siguiente parámetro de configuración a tu archivo google-ads.yaml.
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
Ruby
Agrega el siguiente parámetro de configuración a tu archivo google_ads_config.rb.
Google::Ads::GoogleAds::Config.new do |c|
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Crea una instancia de GoogleAdsClient pasando la ruta de acceso a la ubicación en la que guardas este archivo.
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
Perl
Agrega el siguiente parámetro de configuración a tu archivo googleads.properties.
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
curl
Especifica el siguiente argumento de línea de comandos cuando ejecutes el comando curl.
-H "login-customer-id: LOGIN_CUSTOMER_ID"
Puedes usar el método CustomerService.ListAccessibleCustomers para recuperar la lista de cuentas a las que un usuario tiene acceso directo. Estas cuentas se pueden usar como valores válidos para el encabezado login-customer-id.
Java
private void runExample(GoogleAdsClient client) { // Optional: Change credentials to use a different refresh token, to retrieve customers // available for a specific user. // // UserCredentials credentials = // UserCredentials.newBuilder() // .setClientId("INSERT_OAUTH_CLIENT_ID") // .setClientSecret("INSERT_OAUTH_CLIENT_SECRET") // .setRefreshToken("INSERT_REFRESH_TOKEN") // .build(); // // client = client.toBuilder().setCredentials(credentials).build(); try (CustomerServiceClient customerService = client.getLatestVersion().createCustomerServiceClient()) { ListAccessibleCustomersResponse response = customerService.listAccessibleCustomers( ListAccessibleCustomersRequest.newBuilder().build()); System.out.printf("Total results: %d%n", response.getResourceNamesCount()); for (String customerResourceName : response.getResourceNamesList()) { System.out.printf("Customer resource name: %s%n", customerResourceName); } } }
C#
public void Run(GoogleAdsClient client) { // Get the CustomerService. CustomerServiceClient customerService = client.GetService(Services.V22.CustomerService); try { // Retrieve the list of customer resources. string[] customerResourceNames = customerService.ListAccessibleCustomers(); // Display the result. foreach (string customerResourceName in customerResourceNames) { Console.WriteLine( $"Found customer with resource name = '{customerResourceName}'."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
PHP
public static function runExample(GoogleAdsClient $googleAdsClient) { $customerServiceClient = $googleAdsClient->getCustomerServiceClient(); // Issues a request for listing all accessible customers. $accessibleCustomers = $customerServiceClient->listAccessibleCustomers(new ListAccessibleCustomersRequest()); print 'Total results: ' . count($accessibleCustomers->getResourceNames()) . PHP_EOL; // Iterates over all accessible customers' resource names and prints them. foreach ($accessibleCustomers->getResourceNames() as $resourceName) { /** @var string $resourceName */ printf("Customer resource name: '%s'%s", $resourceName, PHP_EOL); } }