Segmentación

La administración de la segmentación de recursos es una función central de la API de Display & Video 360. La segmentación se puede asignar a varios tipos de recursos y utiliza una serie de otros recursos y espacios de ID. En esta página, se detallan las limitaciones que debes tener en cuenta y las prácticas recomendadas que debes implementar cuando adoptes los servicios de opciones de segmentación asignadas de la API de Display & Video 360.

Utiliza la herencia de la segmentación

La segmentación asignada a algunos recursos puede heredarse de sus recursos secundarios. Las opciones de segmentación heredadas por un recurso secundario se pueden recuperar, pero no se pueden editar a nivel del recurso secundario. Esto permite que se aplique la configuración de seguridad de la marca y otros parámetros de segmentación en la totalidad de un socio o anunciante.

La ruta de herencia se puede ver en el siguiente diagrama:

Diagrama de herencia de la segmentación

Como se especifica en el diagrama, algunos niveles de segmentación solo admiten un subconjunto de tipos de segmentación. Esto significa que algunas opciones de segmentación no se pueden establecer en niveles superiores y heredarse, sino que se deben establecer en un nivel inferior.

Herencia en los recursos de YouTube y socios

La herencia de la segmentación no se refleja en los recursos de YouTube y socios en la API de Display & Video 360. La segmentación heredada por los grupos de anuncios no se podrá recuperar a nivel del objeto AdGroup, y los criterios de segmentación de YouTube asignados a los recursos superiores no se heredarán en los recursos secundarios.

Para recuperar todos los parámetros de configuración de segmentación funcionales de un grupo de anuncios, debes recuperar las opciones de segmentación asignadas para el grupo de anuncios, la línea de pedido principal y el anunciante principal.

Ten en cuenta la segmentación asignada durante la creación de la línea de pedido

A excepción de las opciones de segmentación heredadas, la mayoría de las segmentaciones solo se pueden asignar después de crear una línea de pedido. Sin embargo, hay algunos tipos de segmentación que tienen un subconjunto predeterminado de valores asignados a las líneas de pedido en el momento de su creación. Estos tipos de segmentación son los siguientes:

Si intentas crear opciones de segmentación asignadas existentes o borrar opciones no existentes, se mostrará un error, por lo que te recomendamos que conozcas el conjunto completo de opciones de segmentación que se asignan a tus líneas de pedido cuando se crean. Si necesitas recuperar la segmentación asignada a una línea de pedido en todos los tipos de segmentación, usa advertisers.lineItems.bulkListAssignedTargetingOptions.

Además, algunos parámetros de configuración se establecen de forma predeterminada cuando no se asigna ninguna opción de segmentación de ese tipo al recurso. Por ejemplo, si un recurso no tiene definida una opción de segmentación TARGETING_TYPE_AUTHORIZED_SELLER_STATUS, significa que usa el estado "Revendedores y vendedores directos autorizados".

No se puede modificar la segmentación de YouTube y socios

La segmentación específica para las campañas de YouTube y socios no se puede actualizar con la API de Display & Video 360.

La segmentación de YouTube y socios incluye toda la segmentación asignada directamente a las líneas de pedido de YouTube y socios y a los grupos de anuncios, así como cualquier segmentación de los siguientes tipos:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Esta segmentación se puede actualizar directamente en la IU de Display & Video 360 o subiendo un archivo de datos estructurados.

Asigna la segmentación por público con una sola opción

Las opciones de segmentación para la mayoría de los tipos de segmentación se asignan de forma individual. La segmentación por grupo de público no sigue esta convención modular, sino que se asigna en un solo objeto detalles de segmentación por grupo de público configurable que enumera los IDs de los públicos que se deben incluir y excluir cuando se publican anuncios. El assignedTargetingOptionId para esta opción de grupo de público, una vez asignado, siempre es "audienceGroup".

Este diseño significa que cualquier cambio en la segmentación por grupo de público debe realizarse primero borrando la opción de segmentación asignada al grupo de público existente y, luego, creando una nueva opción de segmentación por grupo de público con los cambios deseados. Esto se puede hacer en una sola solicitud con advertisers.lineItems.bulkEditAssignedTargetingOptions.

Este es un ejemplo de cómo actualizar la segmentación por público para segmentar de forma positiva públicos adicionales de Google:

Java

long advertiserId = advertiser-id;
long lineItemId = line-item-id
List<Long> addedGoogleAudienceIds =
    Arrays.asList(google-audience-id-to-add,...);

// Build Google audience targeting settings objects to add to audience
// targeting.
ArrayList<GoogleAudienceTargetingSetting> newGoogleAudienceSettings =
    new ArrayList<GoogleAudienceTargetingSetting>();

// Convert list of Google Audience IDs into list of settings.
for (Long googleAudienceId : addedGoogleAudienceIds) {
  newGoogleAudienceSettings.add(new GoogleAudienceTargetingSetting()
      .setGoogleAudienceId(googleAudienceId));
}

// Create relevant bulk edit request objects.
BulkEditLineItemAssignedTargetingOptionsRequest requestContent =
    new BulkEditLineItemAssignedTargetingOptionsRequest();
AudienceGroupAssignedTargetingOptionDetails updatedAudienceGroupDetails;
ArrayList<DeleteAssignedTargetingOptionsRequest> audienceGroupDeleteRequests =
    new ArrayList<DeleteAssignedTargetingOptionsRequest>();

try {
  // Retrieve existing audience group targeting.
  AssignedTargetingOption existingAudienceGroupTargetingOption =
      service
          .advertisers()
          .lineItems()
          .targetingTypes()
          .assignedTargetingOptions()
          .get(
              advertiserId,
              lineItemId,
              "TARGETING_TYPE_AUDIENCE_GROUP",
              "audienceGroup"
          ).execute();

  // Extract existing audience group targeting details.
  updatedAudienceGroupDetails =
      existingAudienceGroupTargetingOption.getAudienceGroupDetails();

  // Build and add delete request for existing audience group targeting.
  ArrayList<String> deleteAudienceGroupAssignedTargetingIds =
      new ArrayList<String>();
  deleteAudienceGroupAssignedTargetingIds.add("audienceGroup");

  audienceGroupDeleteRequests
      .add(new DeleteAssignedTargetingOptionsRequest()
          .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP")
          .setAssignedTargetingOptionIds(
              deleteAudienceGroupAssignedTargetingIds
          )
      );
}
catch (GoogleJsonResponseException e) {
  updatedAudienceGroupDetails =
      new AudienceGroupAssignedTargetingOptionDetails();
}

// Set delete requests in edit request.
requestContent.setDeleteRequests(audienceGroupDeleteRequests);

// Construct new group of Google Audiences to include in targeting.
GoogleAudienceGroup updatedIncludedGoogleAudienceGroup =
    updatedAudienceGroupDetails.getIncludedGoogleAudienceGroup();
if (updatedIncludedGoogleAudienceGroup != null) {
  List<GoogleAudienceTargetingSetting> updatedGoogleAudienceSettings =
      updatedIncludedGoogleAudienceGroup.getSettings();
  updatedGoogleAudienceSettings.addAll(newGoogleAudienceSettings);
  updatedIncludedGoogleAudienceGroup
      .setSettings(updatedGoogleAudienceSettings);
} else {
  updatedIncludedGoogleAudienceGroup = new GoogleAudienceGroup();
  updatedIncludedGoogleAudienceGroup.setSettings(newGoogleAudienceSettings);
}

// Add new Google Audience group to audience group targeting details.
updatedAudienceGroupDetails
    .setIncludedGoogleAudienceGroup(updatedIncludedGoogleAudienceGroup);

// Create new targeting option to assign.
AssignedTargetingOption newAudienceGroupTargeting =
    new AssignedTargetingOption();
newAudienceGroupTargeting
    .setAudienceGroupDetails(updatedAudienceGroupDetails);

// Build audience group targeting create request and add to list of create
// requests.
ArrayList<AssignedTargetingOption> createAudienceGroupAssignedTargetingOptions =
    new ArrayList<AssignedTargetingOption>();
createAudienceGroupAssignedTargetingOptions.add(newAudienceGroupTargeting);
ArrayList<CreateAssignedTargetingOptionsRequest> targetingCreateRequests =
    new ArrayList<CreateAssignedTargetingOptionsRequest>();
targetingCreateRequests.add(new CreateAssignedTargetingOptionsRequest()
    .setTargetingType("TARGETING_TYPE_AUDIENCE_GROUP")
    .setAssignedTargetingOptions(
        createAudienceGroupAssignedTargetingOptions
    )
);

// Set create requests in edit request.
requestContent.setCreateRequests(targetingCreateRequests);

// Configure and execute the bulk list request.
BulkEditLineItemAssignedTargetingOptionsResponse response =
    service.advertisers().lineItems()
        .bulkEditLineItemAssignedTargetingOptions(
            advertiserId,
            lineItemId,
            requestContent).execute();

Python

advertiser_id = advertiser-id
line_item_id = line-item-id
added_google_audiences = [google-audience-id-to-add,...]

# Build Google audience targeting settings objects to create.
new_google_audience_targeting_settings = []
for google_audience_id in added_google_audiences:
 new_google_audience_targeting_settings.append(
     {'googleAudienceId': google_audience_id}
 )

# Retrieve any existing line item audience targeting.
retrieved_audience_targeting = service.advertisers().lineItems(
).targetingTypes().assignedTargetingOptions().get(
   advertiserId=advertiser_id,
   lineItemId=line_item_id,
   targetingType="TARGETING_TYPE_AUDIENCE_GROUP",
   assignedTargetingOptionId="audienceGroup"
).execute()

updated_audience_group_details = {}

# Copy over any existing audience targeting.
if 'audienceGroupDetails' in retrieved_audience_targeting:
 updated_audience_group_details = retrieved_audience_targeting[
     'audienceGroupDetails']

# Append the new Google audience IDs to any existing positive Google
# audience targeting.
if 'includedGoogleAudienceGroup' in updated_audience_group_details:
 updated_audience_group_details[
     'includedGoogleAudienceGroup']['settings'].extend(
         new_google_audience_targeting_settings)
else:
 updated_audience_group_details['includedGoogleAudienceGroup'] = {
     'settings': new_google_audience_targeting_settings
 }

# Build bulk edit request.
bulk_edit_request = {
   'deleteRequests': [
       {
         'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
         'assignedTargetingOptionIds': [
           "audienceGroup"
         ]
       }
   ],
   'createRequests': [
       {
           'targetingType': "TARGETING_TYPE_AUDIENCE_GROUP",
           'assignedTargetingOptions': [
               {'audienceGroupDetails': updated_audience_group_details}
           ]
       }
   ]
}

# Update the audience targeting
updated_audience_targeting = service.advertisers().lineItems(
).bulkEditLineItemAssignedTargetingOptions(
   advertiserId=advertiser_id,
   lineItemId=line_item_id,
   body=bulk_edit_request
).execute()

PHP

$advertiserId = advertiser-id;
$lineItemId = line-item-id;
$addedGoogleAudienceIds = array(google-audience-id-to-add,...);

// Convert list of Google Audience IDs into list of Google audience
// settings.
$newGoogleAudienceSettings = array();
foreach ($addedGoogleAudienceIds as $googleAudienceId) {
    $newSetting =
        new Google_Service_DisplayVideo_GoogleAudienceTargetingSetting();
    $newSetting->setGoogleAudienceId($googleAudienceId);
    $newGoogleAudienceSettings[] = $newSetting;
}

// Create a bulk edit request.
$requestBody =
    new Google_Service_DisplayVideo_BulkEditLineItemAssignedTargetingOptionsRequest();

$audienceGroupDeleteRequests = array();

try {
    // Retrieve existing audience group targeting.
    $existingAudienceGroupTargetingOption = $this
        ->service
        ->advertisers_lineItems_targetingTypes_assignedTargetingOptions
        ->get(
            $advertiserId,
            $lineItemId,
            'TARGETING_TYPE_AUDIENCE_GROUP',
            'audienceGroup'
        );

    // Extract existing audience group targeting details.
    $updatedAudienceGroupDetails =
        $existingAudienceGroupTargetingOption
            ->getAudienceGroupDetails();

    // Build and add delete request for existing audience group
    // targeting.
    $deleteAudienceGroupAssignedTargetingIds = array();
    $deleteAudienceGroupAssignedTargetingIds[] = "audienceGroup";

    $audienceGroupDeleteRequest =
        new Google_Service_DisplayVideo_DeleteAssignedTargetingOptionsRequest();
    $audienceGroupDeleteRequest
        ->setTargetingType('TARGETING_TYPE_AUDIENCE_GROUP');
    $audienceGroupDeleteRequest
        ->setAssignedTargetingOptionIds(
            $deleteAudienceGroupAssignedTargetingIds
        );
    $audienceGroupDeleteRequests[] = $audienceGroupDeleteRequest;
} catch (\Exception $e) {
    $updatedAudienceGroupDetails =
        new Google_Service_DisplayVideo_AudienceGroupAssignedTargetingOptionDetails();
}

// Set delete requests in edit request.
$requestBody->setDeleteRequests($audienceGroupDeleteRequests);

// Construct new group of Google audiences to include in targeting.
$updatedIncludedGoogleAudienceGroup = $updatedAudienceGroupDetails
    ->getIncludedGoogleAudienceGroup();

if (!empty($updatedIncludedGoogleAudienceGroup)) {
    // Get existing settings.
    $updatedGoogleAudienceSettings =
    $updatedIncludedGoogleAudienceGroup->getSettings();

    // Add new Google audiences to existing list.
    $updatedGoogleAudienceSettings = array_merge(
        $updatedGoogleAudienceSettings,
        $newGoogleAudienceSettings
    );

    // Set updated Google audience list.
    $updatedIncludedGoogleAudienceGroup
        ->setSettings($updatedGoogleAudienceSettings);
} else {
    // Create new Google audience group.
    $updatedIncludedGoogleAudienceGroup =
        new Google_Service_DisplayVideo_GoogleAudienceGroup();

    // Set list of new Google audiences for targeting.
    $updatedIncludedGoogleAudienceGroup
        ->setSettings($newGoogleAudienceSettings);
}

// Add new Google Audience group to audience group targeting details.
$updatedAudienceGroupDetails
    ->setIncludedGoogleAudienceGroup(
        $updatedIncludedGoogleAudienceGroup
    );

// Create new targeting option to assign.
$newAudienceGroupTargeting =
    new Google_Service_DisplayVideo_AssignedTargetingOption();
$newAudienceGroupTargeting
    ->setAudienceGroupDetails($updatedAudienceGroupDetails);

// Build audience group targeting create request and add to list of
// create requests.
$createAudienceGroupAssignedTargetingOptions = array();
$createAudienceGroupAssignedTargetingOptions[] =
    $newAudienceGroupTargeting;
$createAudienceGroupTargetingRequest =
    new Google_Service_DisplayVideo_CreateAssignedTargetingOptionsRequest();
$createAudienceGroupTargetingRequest->setTargetingType(
    "TARGETING_TYPE_AUDIENCE_GROUP"
);
$createAudienceGroupTargetingRequest->setAssignedTargetingOptions(
    $createAudienceGroupAssignedTargetingOptions
);
$createRequests[] = $createAudienceGroupTargetingRequest;

// Set create requests in edit request.
$requestBody->setCreateRequests($createRequests);

// Call the API, editing the assigned targeting options for the
// identified line item.
$response = $this
    ->service
    ->advertisers_lineItems
    ->bulkEditLineItemAssignedTargetingOptions(
        $advertiserId,
        $lineItemId,
        $requestBody
    );

Prepárate para la baja de las opciones de segmentación

Las opciones de segmentación no son estáticas y, de vez en cuando, se pueden dejar de usar algunas. Las opciones de segmentación, una vez que se marcan como obsoletas, no afectan la publicación de anuncios de una línea de pedido. Después de la baja, estas opciones se desasignarán de los elementos de línea existentes, y las solicitudes que intenten recuperar o asignar estas opciones generarán errores.

Para evitar estos errores, te recomendamos que revises periódicamente los IDs de las opciones de segmentación almacenadas. Para conservar la cuota, te recomendamos que almacenes en caché los IDs que se usan con frecuencia. Sin embargo, almacenar IDs significa que es posible que no te des cuenta de que una opción de segmentación dejó de estar disponible. Por este motivo, debes usar targetingOptions.targetingTypes.get con regularidad para recuperar todos los IDs de opciones de segmentación almacenados y confirmar que Display & Video 360 aún los admite.

Consulta nuestra página Anuncios de bajas para obtener detalles sobre las bajas significativas anteriores y futuras.

No realices solicitudes simultáneas para actualizar el mismo concepto

Si intentas actualizar la configuración o la segmentación asignada de una sola línea de pedido con varias solicitudes simultáneas, se mostrará un error. Las solicitudes aplicables incluyen las siguientes:

Si necesitas agregar o quitar varias opciones de segmentación asignadas para un solo concepto al mismo tiempo, debes usar una sola solicitud de advertisers.lineItems.bulkEditAssignedTargetingOptions. Si deseas actualizar la configuración y la segmentación de una línea de pedido, pon en cola la solicitud patch o bulkUpdate y la solicitud de segmentación pertinente para asegurarte de que la segunda solicitud no se envíe hasta que la primera devuelva una respuesta.