Ciblage

La gestion du ciblage des ressources est une fonctionnalité centrale de l'API Display & Video 360. Le ciblage peut être attribué à plusieurs types de ressources et utilise un certain nombre d'autres ressources et espaces d'ID. Cette page présente les limites à prendre en compte et les bonnes pratiques à suivre pour adopter les services d'options de ciblage attribuées de l'API Display & Video 360.

Utiliser l'héritage du ciblage

Le ciblage attribué à certaines ressources peut être hérité par leurs ressources enfants. Les options de ciblage héritées par une ressource enfant peuvent être récupérées, mais pas modifiables au niveau de la ressource enfant. Cela permet d'appliquer des paramètres de brand safety et d'autres critères de ciblage à l'ensemble d'un partenaire ou d'un annonceur.

Le schéma ci-dessous illustre le chemin d'héritage:

Diagramme de l'héritage du ciblage

Comme indiqué dans le schéma, certains niveaux de ciblage n'acceptent qu'un sous-ensemble de types de ciblage. Cela signifie que certaines options de ciblage ne peuvent pas être définies à des niveaux supérieurs ni héritées, mais doivent être définies à un niveau inférieur.

Héritage dans les ressources YouTube et partenaires

L'héritage du ciblage n'est pas reflété pour les ressources YouTube et partenaires dans l'API Display & Video 360. Le ciblage hérité par des groupes d'annonces ne pourra pas être récupéré au niveau de la AdGroup, et le ciblage YouTube attribué aux ressources parentes ne sera pas hérité par les ressources enfants.

Pour récupérer tous les paramètres de ciblage fonctionnels d'un groupe d'annonces, vous devez récupérer les options de ciblage attribuées au groupe d'annonces, à l'élément de campagne parent et à l'annonceur parent.

Tenir compte du ciblage attribué lors de la création de l'élément de campagne

À l'exception des options de ciblage héritées, la plupart des critères de ciblage ne peuvent être attribués qu'après la création d'un élément de campagne. Toutefois, pour certains types de ciblage, un sous-ensemble de valeurs par défaut est attribué aux éléments de campagne lors de leur création. Ces types de ciblage sont les suivants:

Si vous essayez de créer ou de supprimer des options de ciblage attribuées non existantes, cela génère une erreur. Nous vous recommandons donc de connaître l'ensemble de la suite de ciblage attribuée à vos éléments de campagne lors de leur création. Pour récupérer le ciblage attribué à un élément de campagne sur différents types de ciblage, utilisez advertisers.lineItems.bulkListAssignedTargetingOptions.

De plus, certains paramètres sont définis par défaut lorsqu'aucune option de ciblage de ce type n'est attribuée à la ressource. Par exemple, si aucune option de ciblage TARGETING_TYPE_AUTHORIZED_SELLER_STATUS n'est définie pour une ressource, cela signifie qu'elle utilise l'état "Vendeurs directs et revendeurs autorisés".

Ne vous attendez pas à ce que le "ciblage par défaut" soit automatique

Dans Display & Video 360, le ciblage défini au niveau de la campagne ou de l'ordre d'insertion n'est pas immédiatement transmis aux éléments de campagne enfants. Ce ciblage, appelé ciblage par défaut, est utilisé comme modèle de ciblage appliqué aux éléments de campagne créés par la suite dans l'interface utilisateur.

Dans l'API Display & Video 360, le ciblage par défaut n'est pas automatiquement appliqué aux nouveaux éléments de campagne. La création d'un élément de campagne de base ne copie aucun ciblage au niveau de la campagne ou de l'ordre d'insertion. Dans ce cas, le ciblage souhaité doit être appliqué séparément aux éléments de campagne via les méthodes d'option de ciblage create (création) ou modification groupée.

Des méthodes spéciales peuvent être une exception. Par exemple, les éléments de campagne créés via advertisers.lineItems.generateDefault copient les paramètres de leur ordre d'insertion parent, y compris le ciblage attribué. De même, les éléments de campagne créés par duplication se voient attribuer le même ciblage que l'élément de campagne d'origine.

Impossible de modifier le ciblage YouTube et partenaires

Le ciblage spécifique aux campagnes YouTube et partenaires ne peut pas être modifié à l'aide de l'API Display & Video 360.

Le ciblage YouTube et partenaires comprend tous les ciblages directement attribués aux éléments de campagne et aux groupes d'annonces YouTube et partenaires, ainsi qu'aux types de ciblage suivants:

  • TARGETING_TYPE_SESSION_POSITION
  • TARGETING_TYPE_YOUTUBE_CHANNEL
  • TARGETING_TYPE_YOUTUBE_VIDEO

Vous pouvez mettre à jour ce ciblage directement dans l'interface utilisateur de Display & Video 360 ou en important un fichier de données structurées.

Attribuer un ciblage d'audience avec une seule option

Les options de ciblage de la plupart des types de ciblage sont attribuées individuellement. Le ciblage des groupes d'audience ne respecte pas cette convention modulaire, mais il est attribué dans un seul objet Informations sur le ciblage des groupes d'audience configurable. Celui-ci répertorie les ID des audiences à inclure et à exclure lors de la diffusion d'annonces. L'élément assignedTargetingOptionId de cette option de groupe d'audience, une fois attribué, correspond toujours à "audienceGroup".

Cela signifie que toute modification du ciblage d'un groupe d'audience doit d'abord être effectuée en supprimant l'option de ciblage existante à laquelle le groupe d'audience a été attribué, puis en créant une nouvelle option de ciblage avec les modifications souhaitées. Pour ce faire, utilisez advertisers.lineItems.bulkEditAssignedTargetingOptions dans une seule requête.

Voici un exemple de mise à jour du ciblage d'audience afin de cibler positivement des audiences Google supplémentaires:

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
    );

Préparez-vous à l'abandon des options de ciblage

Les options de ciblage ne sont pas statiques, et certaines d'entre elles peuvent parfois être abandonnées. Une fois obsolètes, les options de ciblage n'affectent pas la diffusion des annonces d'un élément de campagne. Après l'abandon, ces options ne seront plus attribuées aux éléments de campagne existants, et les requêtes qui tentent de les récupérer ou de les attribuer entraîneront des erreurs.

Pour éviter ces erreurs, nous vous recommandons de vérifier régulièrement les ID d'option de ciblage stockés. Afin de conserver votre quota, nous vous recommandons de mettre en cache les ID utilisés régulièrement. Toutefois, en stockant des ID, vous ne réalisez peut-être pas qu'une option de ciblage est obsolète. C'est pourquoi vous devez régulièrement utiliser targetingOptions.targetingTypes.get pour récupérer tous les ID d'option de ciblage stockés afin de vérifier qu'ils sont toujours compatibles avec Display & Video 360.

Consultez la page Annonce des abandons pour en savoir plus sur les abandons importants, précédents et à venir.

Ne pas effectuer de demandes simultanées mettant à jour le même élément de campagne

Si vous tentez de mettre à jour les paramètres ou le ciblage attribué pour un seul élément de campagne à l'aide de plusieurs requêtes simultanées, une erreur est renvoyée. Les requêtes applicables incluent les suivantes:

Si vous devez ajouter ou supprimer plusieurs options de ciblage attribuées à un même élément de campagne à la fois, utilisez une seule requête advertisers.lineItems.bulkEditAssignedTargetingOptions. Si vous souhaitez mettre à jour les paramètres et le ciblage d'un élément de campagne, mettez en file d'attente la demande patch ou bulkUpdate et la demande de ciblage pertinente pour vous assurer que la seconde demande n'est pas envoyée tant que la première n'a pas renvoyé une réponse.