Optimiser le ciblage publicitaire

Ce document décrit les recommandations pour la génération d'annonces de produits dans les emplacements de recherche, de catégorie et d'affichage large (accueil, passage en caisse, promotions, etc.). La mise en œuvre de ces stratégies rend vos annonces plus pertinentes et plus ciblées, ce qui améliore l'engagement et la satisfaction des utilisateurs. Les améliorations comprennent la pagination, les recherches filtrées et le filtrage basé sur la localisation pour une approche publicitaire personnalisée.

Pour générer des annonces de produits à l'aide de recherches et d'emplacements de catégories, consultez les rubriques suivantes :

Paginer les requêtes

La pagination est une technique utilisée pour gérer de grands ensembles de données en les divisant en pages ou segments distincts. Dans le contexte de la création d'annonces de produits, la pagination permet de s'assurer que les utilisateurs ne sont pas submergés par un trop grand nombre d'annonces à la fois et que les annonces déjà consultées ne sont pas diffusées de manière redondante.

Lorsque vous générez des annonces pour des produits, la réponse inclut un memoryToken. Ce jeton permet de savoir quelles annonces ont déjà été diffusées. En incluant ce paramètre memoryToken dans les requêtes d'annonces suivantes, vous pouvez garantir que les annonces diffusées précédemment sont exclues de la nouvelle réponse d'annonces, améliorant ainsi l'expérience utilisateur en présentant des annonces nouvelles et pertinentes.

  • Demande initiale : générez des annonces pour vos produits et recevez un memoryToken dans la réponse.
  • Demandes suivantes : incluez le memoryToken dans les demandes d'annonces suivantes afin d'exclure les annonces déjà diffusées de la réponse.

Pour plus d'informations, consultez la rubrique Pagination.

Paramètres de la requête

Le corps de la requête doit être un objet JSON contenant les champs suivants :

objettypeDescription
customerIdchaîne, obligatoireL’identifiant unique du client (il est fourni par votre détaillant).
sessionIdchaîne, obligatoireL’identifiant unique de la session. Cette information est nécessaire pour l’attribution (elle est fournie par le détaillant).
Emplacementchaîne, obligatoireContexte dans lequel l’annonce est affichée (par exemple, « recherche »).
ID du cataloguechaîne, obligatoireL’identifiant unique du catalogue de produits à partir duquel les produits sont filtrés. Vous pouvez l'obtenir à partir de l’interface utilisateur Retail Media d’Epsilon ou auprès du détaillant.
maxNumberOfAdsnombre entier, obligatoireNombre maximum d’annonces à afficher
Terme de recherchechaîne, obligatoire pour les emplacements de rechercheTerme à rechercher dans le catalogue
jeton de mémoirechaîne, obligatoireJeton pour exclure les annonces précédemment diffusées.
optionsobjet, facultatifOptions supplémentaires telles que les modes de filtrage AndOrSi elle est précisée, le système utilisera les conditions « ET » et « OU » pour affiner les résultats de la recherche.

Exemple de requête

Dans l'exemple suivant, la requête d'annonce initiale concerne un emplacement de recherche avec le terme « chocolat ». Le memoryToken est inclus pour s'assurer que les annonces précédemment diffusées pour le même terme de recherche et le même contexte sont exclues de la réponse. L'objet options précise le mode de filtrage, et maxNumberOfAds fixe la limite du nombre de publicités à générer dans la réponse.

En exploitant la pagination et les jetons de mémoire, vous pouvez offrir à vos utilisateurs une expérience publicitaire plus dynamique et engageante, en évitant la redondance et en améliorant la pertinence.

POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9", 
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "memoryToken":"85ykKVv-luDHMWLZx2d6xcPq6sF7CgkJCSJDb3VudGVyIjogIjIiLAoJCQkiQWRzIjogWwoJCQkJImRpc3BsYXlfV05VV0NwQkRKMUpKNm5wdVZSVExvOU40TUxzNE1UWTBOemt5TWc9PSIsCgkJCQkiZGlzcGxheV9MME5NUHRxNmdCcVFvREJOd3J0dE9UTGJoWk0xTVRFeU9UYzRPUT09IiwKCQkJCSJkaXNwbGF5XzlCcEpmdUpaWk9VXzgyaWpFM3VCczgxd3VVczRNekkwTnpVeE5nPT0iLAoJCQkJImRpc3BsYXlfcW1VU1p4TkpMQ0lqeWQwdTFJRDk0RmxVZ0pnNE16STBOelV4Tnc9PSIsCgkJCQkiZGlzcGxheV9oeHlFZktCUnRrNWlxMThMQzE1SDJHcEN3QjgxTVRFeU9UYzVNQT09IiwKCQkJCSJkaXNwbGF5X1NkcjFEcU5aUEFtcGh0Q1FIUndoYUxFT1B0RXhNamsxT1RJNE5BPT0iLAoJCQkJImRpc3BsYXlfeVlSai1qV2Ntc2ozNzhrel9PMm0yOVlwTjhJeE5EazNPRE00TXc9PSIsCgkJCQkiZGlzcGxheV9Xbm9NZGZuLTRTVmhxcF9xQzVvLWxoT0paNm8xTkRJeE1UUTROdz09IgoJCQldLAoJCQkiVFRMIjogMTYyODk4NTYwMAoJCX0=",
    "options": {
                         "filterMode": "AndOr"
                             },
    "maxNumberOfAds": 3    
}

Exemple de réponse

Toutes les réponses d'annonces de produits suivent un format JSON standard. Les annonces de produits sont renvoyées dans le tableau « annonces ».

  • id : ID de l'annonce utilisé dans les rapports d'impressions et de clics.
  • gtin : code article international (GTIN) pour le produit.
  • réduction : informations sur les éventuelles remises applicables à l'annonce.
    • montant : montant de la remise.
    • minPrix : prix minimum du produit pour la remise.
    • maxParClient : nombre maximum d'articles qu'un client peut acheter avec la réduction.
  • expiration : date et heure d'expiration de l'annonce.
  • position : position de l'annonce dans la réponse. Lisez et respectez toujours le champ position pour vous assurer que les emplacements de location fixe s'affichent correctement.
{
    "ads": [
        {
            "id": "display_QqHaKRrKlFm1Wxr9c_DXJN4HSE3NzMzNjM2",
            "gtin": "7733636",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400902957Z",
            "position": 1
        },
        {
            "id": "display_NzsHqP0_iQedlo9VnrO2vqkwi_k3NzMzNjI4",
            "gtin": "7733628",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400908257Z",
            "position": 2
        },
        {
            "id": "display_xNeShqidaMuEqiJ0zNdt-Gzygjs3NzE0MTA3",
            "gtin": "7714107",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400912929Z",
            "position": 3
        },
        {
            "id": "display_3rGiryPskhQusmsf43nghbQwnqo3NzMzNjU3",
            "gtin": "7733657",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400917769Z",
            "position": 4
        }
    ],
    "banners": [],
    "products": [],
    "memoryToken":"85ykKVv-luDHMWLZx2d6xcPq6sF7CgkJCSJDb3VudGVyIjogIjIiLAoJCQkiQWRzIjogWwoJCQkJImRpc3BsYXlfV05VV0NwQkRKMUpKNm5wdVZSVExvOU40TUxzNE1UWTBOemt5TWc9PSIsCgkJCQkiZGlzcGxheV9MME5NUHRxNmdCcVFvREJOd3J0dE9UTGJoWk0xTVRFeU9UYzRPUT09IiwKCQkJCSJkaXNwbGF5XzlCcEpmdUpaWk9VXzgyaWpFM3VCczgxd3VVczRNekkwTnpVeE5nPT0iLAoJCQkJImRpc3BsYXlfcW1VU1p4TkpMQ0lqeWQwdTFJRDk0RmxVZ0pnNE16STBOelV4Tnc9PSIsCgkJCQkiZGlzcGxheV9oeHlFZktCUnRrNWlxMThMQzE1SDJHcEN3QjgxTVRFeU9UYzVNQT09IiwKCQkJCSJkaXNwbGF5X1NkcjFEcU5aUEFtcGh0Q1FIUndoYUxFT1B0RXhNamsxT1RJNE5BPT0iLAoJCQkJImRpc3BsYXlfeVlSai1qV2Ntc2ozNzhrel9PMm0yOVlwTjhJeE5EazNPRE00TXc9PSIsCgkJCQkiZGlzcGxheV9Xbm9NZGZuLTRTVmhxcF9xQzVvLWxoT0paNm8xTkRJeE1UUTROdz09IgoJCQldLAoJCQkiVFRMIjogMTYyODk4NTYwMAoJCX0="
}

Lors de l'onboarding de vendeurs Marketplace, un champ sellerId supplémentaire peut apparaître dans la réponse à l'annonce. Ce champ n'est inclus que si l'équipe propriétaire de la campagne a configuré un ID de vendeur dans l'interface utilisateur d'Epsilon Retail Media.

Exemple avec l'ID du vendeur

{
    "ads": [
        {
            "id": "display_QqHaKRrKlFm1Wxr9c_DXJN4HSE3NzMzNjM2",
            "gtin": "7733636",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400902957Z",
            "position": 1
        },
        {
            "id": "display_NzsHqP0_iQedlo9VnrO2vqkwi_k3NzMzNjI4",
            "gtin": "7733628",
            "sellerId": "2834-ascre-2wcr4",
            "discount": {
                "amount": 0,
                "minPrice": 0,
                "maxPerCustomer": 0
            },
            "expiry": "2021-05-12T04:17:50.400908257Z",
            "position": 2
        }
    ],
    "banners": [],
    "products": [],
    "memoryToken":"85ykKVv-luDHMWLZx2d6xcPq6sF7CgkJCSJDb3VudGVyIjogIjIiLAoJCQkiQWRzIjogWwoJCQkJImRpc3BsYXlfV05VV0NwQkRKMUpKNm5wdVZSVExvOU40TUxzNE1UWTBOemt5TWc9PSIsCgkJCQkiZGlzcGxheV9MME5NUHRxNmdCcVFvREJOd3J0dE9UTGJoWk0xTVRFeU9UYzRPUT09IiwKCQkJCSJkaXNwbGF5XzlCcEpmdUpaWk9VXzgyaWpFM3VCczgxd3VVczRNekkwTnpVeE5nPT0iLAoJCQkJImRpc3BsYXlfcW1VU1p4TkpMQ0lqeWQwdTFJRDk0RmxVZ0pnNE16STBOelV4Tnc9PSIsCgkJCQkiZGlzcGxheV9oeHlFZktCUnRrNWlxMThMQzE1SDJHcEN3QjgxTVRFeU9UYzVNQT09IiwKCQkJCSJkaXNwbGF5X1NkcjFEcU5aUEFtcGh0Q1FIUndoYUxFT1B0RXhNamsxT1RJNE5BPT0iLAoJCQkJImRpc3BsYXlfeVlSai1qV2Ntc2ozNzhrel9PMm0yOVlwTjhJeE5EazNPRE00TXc9PSIsCgkJCQkiZGlzcGxheV9Xbm9NZGZuLTRTVmhxcF9xQzVvLWxoT0paNm8xTkRJeE1UUTROdz09IgoJCQldLAoJCQkiVFRMIjogMTYyODk4NTYwMAoJCX0="
}

Recherches filtrées

Lorsqu'un client applique des filtres à sa recherche, vous pouvez améliorer le contexte de sa requête en utilisant les options suivantes productFilters. Cela vous permet de cibler plus précisément les annonces en fonction de catégories ou d'attributs spécifiques. Ci-dessous, nous vous donnons un exemple de filtrage selon la catégorie « Placard » et la restriction alimentaire « Sans gluten ». Cette méthodologie peut être adaptée à n'importe quelle catégorie ou emplacement de requête large.

Paramètres de la requête

Le corps de la requête doit être un objet JSON contenant les champs suivants :

objettypeDescription
customerIdchaîne, obligatoireL’identifiant unique du client (il est fourni par votre détaillant).
sessionIdchaîne, obligatoireL’identifiant unique de la session. Cette information est nécessaire pour l’attribution (elle est fournie par le détaillant).
Emplacementchaîne, obligatoireContexte dans lequel l’annonce est affichée (par exemple, « recherche »).
ID du cataloguechaîne, obligatoireL’identifiant unique du catalogue de produits à partir duquel les produits sont filtrés. Vous pouvez l'obtenir à partir de l’interface utilisateur Retail Media d’Epsilon ou auprès du détaillant.
maxNumberOfAdsnombre entier, obligatoireNombre maximum d’annonces à afficher
Terme de recherchechaîne, obligatoire pour les emplacements de rechercheTerme à rechercher dans le catalogue
productFilterstableau, obligatoireUn tableau contenant les filtres de catégorie.
optionsobjet, facultatifOptions supplémentaires telles que les modes de filtrage AndOrSi elle est précisée, le système utilisera les conditions « ET » et « OU » pour affiner les résultats de la recherche.

Exemple de requête

La requête de l'exemple utilise la méthode HTTP POST pour envoyer un objet JSON au point de terminaison précisé. Le tableau productFilters précise que la recherche doit être filtrée par la catégorie « Placard » et la restriction alimentaire « Sans gluten ». L'objet Options définit le filterMode à AndOr, permettant une combinaison flexible de filtres. Le maxNumberOfAds champ limite le nombre de publicités affichées à trois.

En suivant cette structure, vous pouvez créer des campagnes publicitaires ciblées qui sont plus pertinentes par rapport aux critères de recherche du client, améliorant ainsi l'expérience globale de l'utilisateur.

POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9", 
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "productFilters": [
     	 ["category:Cupboard"],["dietary:Gluten-free"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "maxNumberOfAds": 3
}

Filtrer par emplacement

Si vous synchronisez les filtres d'emplacement dans votre catalogue, vous pouvez élargir votre contexte afin de proposer l'emplacement de la boutique du client dans les productFilters. Cette fonctionnalité vous permet de cibler les annonces en fonction de l'emplacement spécifique du magasin, augmentant ainsi la pertinence des annonces affichées au client.

Paramètres de la requête

Le corps de la requête doit être un objet JSON contenant les champs suivants :

objettypeDescription
customerIdchaîne, obligatoireL’identifiant unique du client (il est fourni par votre détaillant).
sessionIdchaîne, obligatoireL’identifiant unique de la session. Cette information est nécessaire pour l’attribution (elle est fournie par le détaillant).
Emplacementchaîne, obligatoireContexte dans lequel l’annonce est affichée (par exemple, « recherche »).
ID du cataloguechaîne, obligatoireL’identifiant unique du catalogue de produits à partir duquel les produits sont filtrés. Vous pouvez l'obtenir à partir de l’interface utilisateur Retail Media d’Epsilon ou auprès du détaillant.
maxNumberOfAdsnombre entier, obligatoireNombre maximum d’annonces à afficher
Terme de recherchechaîne, obligatoire pour les emplacements de rechercheTerme à rechercher dans le catalogue
productFilterstableau, obligatoireUn tableau contenant les filtres de catégorie.
optionsobjet, facultatifOptions supplémentaires telles que les modes de filtrage AndOrSi elle est précisée, le système utilisera les conditions « ET » et « OU » pour affiner les résultats de la recherche.

Exemple de requête

La requête de l'exemple utilise la méthode HTTP POST pour envoyer un objet JSON au point de terminaison précisé.

  • L'AD_ID productFilters tableau indique que la recherche doit être filtrée par :
    • Catégorie : « Placard »
    • Restriction alimentaire : « Sans gluten »
    • Lieu : « Westenbury »
  • L'objet Options définit le filterMode à AndOr, permettant une combinaison flexible de filtres.
  • L'AD_ID maxNumberOfAds champ limite le nombre de publicités affichées à trois.

En suivant cette structure, vous pouvez créer des campagnes publicitaires ciblées qui sont plus pertinentes par rapport aux critères de recherche du client, améliorant ainsi l'expérience globale de l'utilisateur.

POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9", 
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "productFilters": [
     	 ["category:Cupboard"],["dietary:Gluten-free"],["location:Westenbury"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "maxNumberOfAds": 3
}