Segmentación

La administración de la segmentación de recursos es una función central de la API de Display & Video 360. La orientació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 para implementar en la adopción de los servicios de opciones de segmentación asignada de la API de Display & Video 360.

Usa la herencia de segmentación

La segmentación asignada a algunos recursos puede ser heredada por sus recursos secundarios. Las opciones de segmentación heredadas por un recurso secundario se recuperan, pero no se pueden editar a nivel de ese recurso. Esto permite que la configuración de seguridad de la marca y otras segmentaciones se apliquen a todo el socio o anunciante.

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

Diagrama de herencia de 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 configurar en niveles superiores ni heredadas, sino que se deben configurar en un nivel inferior.

Herencia en YouTube y recursos de Partners

La herencia de segmentación no se refleja para los recursos de YouTube y Partners en la API de Display & Video 360. La segmentación heredada por los grupos de anuncios no se recuperará en el nivel de AdGroup, y los recursos secundarios no heredarán la segmentación de YouTube asignada a los recursos superiores.

Para recuperar toda la configuración de segmentación funcional de un grupo de anuncios, debes recuperar las opciones de segmentación asignadas para el grupo de anuncios, la línea de pedido superior y el anunciante superior.

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

Aparte de las opciones de segmentación heredadas, la mayoría de la segmentación solo se puede 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 durante su creación. Esos tipos de segmentación son los siguientes:

Si intentas crear o borrar opciones de segmentación asignadas que no existen, se mostrará un error, por lo que te recomendamos que conozcas el paquete de segmentación completo que se asigna a tus líneas de pedido en el momento de su creación. 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, algunas opciones se establecen de forma predeterminada cuando no se asigna ninguna opción de orientació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 "Vendedores directos autorizados y revendedores".

No esperes la "segmentación predeterminada" automática

En Display & Video 360, la segmentación establecida a nivel de la campaña o del pedido de inserción no se pasa de inmediato a las líneas de pedido secundarias. Esta segmentación se conoce como “segmentación predeterminada” y se usa como plantilla de segmentación que se aplica a las líneas de pedido que se crearán posteriormente en la IU.

En la API de Display & Video 360, la segmentación predeterminada no se aplica automáticamente a las líneas de pedido recién creadas. La creación básica de líneas de pedido no copia ninguna segmentación a nivel de campaña o pedido de inserción. En este caso, la segmentación deseada debe aplicarse a las líneas de pedido por separado mediante los métodos de creación o edición masiva de la opción de segmentación asignada.

Los métodos especiales pueden ser una excepción. Por ejemplo, las líneas de pedido creadas con advertisers.lineItems.generateDefault copian la configuración de su pedido de inserción superior, incluida la segmentación asignada. Del mismo modo, a las líneas de pedido creadas mediante la duplicación se les asignará la misma segmentación que la línea de pedido original.

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

No se puede actualizar la segmentación específica de las campañas de YouTube & Partners con la API de Display & Video 360.

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

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

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

Cómo asignar 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 individualmente. La segmentación de grupos de público no sigue esta convención modular, sino que se asigna en un único objeto de detalles de segmentación del grupo de públicos configurable que enumera los ID de los públicos que se incluirán y excluirán cuando se publiquen anuncios. El assignedTargetingOptionId de 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 de los grupos de público se debe realizar primero. Para ello, primero debes borrar la opción de segmentación asignada al grupo de público existente y, luego, crear una nueva con los cambios deseados. Esto se puede hacer en una sola solicitud mediante advertisers.lineItems.bulkEditAssignedTargetingOptions.

A continuación, se incluye un ejemplo de cómo actualizar la segmentación por público a fin de segmentar positivamente otros públicos 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 que las opciones de segmentación dejen de estar disponibles

Las opciones de segmentación no son estáticas, y es posible que algunas pocas dejen de estar disponibles ocasionalmente. Una vez obsoletas, las opciones de segmentación no afectan la publicación de anuncios de una línea de pedido. Después de la baja, estas opciones se quitarán de los elementos de una sola 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 opción de segmentación almacenados. Para conservar la cuota, recomendamos que almacenes en caché los ID que se usan con regularidad. Sin embargo, almacenar los IDs implica 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 con regularidad targetingOptions.targetingTypes.get para recuperar todos los IDs de opción de segmentación almacenados y confirmar que todavía son compatibles con Display & Video 360.

Consulta nuestra página Bajas anunciadas para obtener detalles sobre las bajas importantes anteriores y próximas.

No realice solicitudes simultáneas que actualicen la misma línea de pedido

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

Si necesitas agregar o quitar varias opciones de segmentación asignadas para una sola línea de pedido al mismo tiempo, debes usar una sola solicitud 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 relevante para asegurarte de que no se envíe la segunda solicitud hasta que la primera muestre una respuesta.