Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La configuration d’un annonceur avec des ordres d’insertion, des articles de ligne et un ciblage peut sembler compliqué. Ce guide est là pour vous guider tout au long du processus. Suivez simplement et vous aurez des annonceurs et des articles en ligne en un rien de temps.
Configuration requise
Avant de travailler avec l’API, vous devez lire la section api Prise en main de cette documentation. Cette section fournit des informations sur les environnements de test, les contraintes d’utilisation, la sémantique d’API (exécution de commandes, filtrage, tri, etc.) et les bonnes pratiques.
Ordre des opérations
Lorsque vous configurez vos objets côté achat, le processus est beaucoup plus simple si vous configurez ces objets dans l’ordre correct. Si vous n’allez pas dans l’ordre correct, vous obtiendrez une partie à travers quelque chose et réaliserez « Oops, j’aurais dû créer <abc> d’abord ». Vous pouvez toujours revenir en arrière et mettre à jour tout ce que vous avez déjà configuré, mais si vous suivez cet ordre d’opérations et que vous allez rendre les choses beaucoup plus faciles pour vous-même.
En outre, en suivant l’ordre que nous avons défini ici, vous êtes moins susceptible de manquer des paramètres importants en cours de route. Par exemple, vous pouvez créer un élément de ligne et une campagne sans profil, mais c’est rarement, voire jamais, une bonne idée. Le profil détermine votre ciblage, et si vous activez une campagne sans profil, vous allez enchérir sur n’importe quelle impression disponible, éventuellement manquer tout le monde dans votre public cible et épuiser votre budget très rapidement. Si vous allez méthodiquement dans l’ordre, vous êtes beaucoup moins susceptible d’oublier quelque chose.
Voici l’ordre des opérations pour la configuration de vos objets buy-side :
Annonceur
En haut de la commande se trouve l’annonceur. La création de l’annonceur est toujours la première étape. Vous pouvez avoir plusieurs annonceurs au sein de votre réseau, et chaque annonceur peut avoir de nombreux ordres d’insertion et articles de ligne.
Objets non dépensés
L’étape suivante comprend plusieurs sous-étapes. Toutes les sous-étapes de cette étape peuvent être créées dans n’importe quel ordre. Si vous souhaitez créer un pixel de segment avant un créatif ou un créatif avant un pixel de segment, cela vous appartient entièrement. Toutefois, et voici la partie importante, vous devez créer tous les objets de l’étape 2 avant de passer à l’étape 3, car vous utiliserez probablement certains des objets étape 2 de l’étape 3. (Notez qu’il existe plus d’options dans cette étape que celles présentées ici. Les objets que nous créons dans cet ensemble sont un exemple des objets sans dépense que vous pouvez créer.)
Profil
Vient ensuite le profil. Les profils définissent toutes les façons dont vous pouvez cibler les utilisateurs et l’inventaire dans vos éléments de ligne ou campagnes. Si vous ne créez pas vos profils avant de passer aux étapes suivantes, vous devrez tout mettre à jour ultérieurement avec les informations de profil.
Ordre d’insertion
Dans cette étape, vous créez vos ordres d’insertion. L’ordre d’insertion contient des informations telles que le budget total qu’un annonceur alloue pour une période donnée, ou la vérification tierce utilisée par l’annonceur. Les ordres d’insertion vous permettent également de regrouper des éléments de ligne et des campagnes. Vous pouvez créer plusieurs ordres d’insertion sous un annonceur.
Élément de ligne
À l’étape 5, nous créons l’élément de ligne. L’élément de ligne contient des informations telles que le montant que l’annonceur a budgété pour une offre, ou le ciblage requis par l’annonceur. (C’est là que vous pouvez ajouter les profils créés à l’étape 3.) Vous pouvez créer plusieurs éléments de ligne sous un annonceur ou un ordre d’insertion.
Campagne
Dans la dernière étape, nous créons la campagne. La campagne est l’endroit où vous obtenez plus précise dans la définition de la façon dont vous allez atteindre les objectifs de l’annonceur. Vous pouvez attacher un profil à une campagne.
Procédure pas à pas
Maintenant que vous comprenez les pièces du puzzle buy-side et comment les placer dans l’ordre, passons en revue la création de votre implémentation côté achat. Ces exemples vous guident dans une configuration très simple. Il y a beaucoup plus de champs et de paramètres disponibles pour chaque service que ce qui est illustré ici. Pour plus d’informations sur chaque service, consultez la section Référence .
Étape 1 : Annonceur
Nous commençons, bien sûr, avec l’annonceur. Nous créons un fichier JSON contenant le nom de l’annonceur et son status. Nous avons laissé la plupart des champs annonceurs comme valeurs par défaut. Toutefois, à l’étape 4, nous allons créer un ordre d’insertion. Pour inclure les ordres d’insertion, vous devez définir use_insertion_orders sur true sur votre annonceur. Pour plus d’informations, consultez Service annonceur .
Remarque
Nous avons défini l’état de l’annonceur sur actif. Vous préférerez peut-être définir initialement l’état de tous les objets sur inactif pour vous assurer que vous ne commencez pas à dépenser avant que votre annonceur ne soit prêt.
$ cat advertiser.json
{
"advertiser": {
"name": "Advertiser1",
"state": "active",
"use_insertion_orders": "true"
}
}
Maintenant, nous effectuons un appel POST au service annonceur , en lui transmettant notre fichier JSON.
$ curl -b cookies -X POST -d @advertiser.json 'https://api.appnexus.com/advertiser'
{
"response":{
"status":"OK",
"id":10
}
}
Nous avons maintenant créé un annonceur nommé Advertiser1. La commande précédente retourne un message montrant votre nouvel annonceur, y compris l’ID de l’annonceur. Notez cet ID ; vous l’utiliserez dans les commandes suivantes.
Étape 2 : Objets non dépensés
Les objets que vous allez créer dans cette étape sont des objets « sans dépense », ce qui signifie qu’aucun montant monétaire ne leur est associé. Ils sont tous indépendants les uns des autres et peuvent être utilisés sur différents éléments de ligne et campagnes. Vous pouvez créer ces objets dans n’importe quel ordre. Notre diagramme montre quatre types d’objets, mais il en existe bien d’autres, notamment des pixels tiers, des segments de lots et des listes de plages d’adresses IP. Nous allons vous montrer quelques exemples ici.
Créatifs
Voici la commande qui appelle le service créatif :
$ curl -b cookies -X POST -d @creative.json 'https://api.appnexus.com/creative?advertiser_id=10'
Notez que nous avons passé la advertiser_id dans notre chaîne de requête. Cela nous permet d’associer le créatif à l’annonceur que nous venons de créer.
Le contenu du fichier creative.json dépend du type de création. Il existe de nombreuses options ; trop pour aller ici. Consultez Creative Service pour en savoir plus sur les types de créations et sur la façon de créer un fichier JSON pour les créer.
Pixels de conversion
Le service de pixels génère un ID qui peut être utilisé pour créer des pixels de conversion. Ces pixels peuvent être placés sur les pages de l’annonceur pour suivre les conversions basées sur les vues et les clics. Voici le processus de création d’un pixel de conversion :
$cat conversionpixel.json
{
"pixel": {
"name": "Conversion Pixel 1",
"state": "active",
"trigger_type": "hybrid",
"post_click_value": 8,
"post_view_value": 8
}
}
$ curl -b cookies -X POST -d @conversionpixel.json 'https://api.appnexus.com/pixel?advertiser_id=10'
{
"response":{
"status":"OK",
"id":15
}
}
Notez que nous transmettons à nouveau le advertiser_id dans la chaîne de requête pour associer ce pixel à un annonceur particulier.
Segmenter les pixels
Utilisez le service de segment pour générer un ID afin de créer des pixels de segment, qui sont placés sur les pages d’inventaire afin d’activer le ciblage de segment. Le ciblage de segment vous permet de cibler des utilisateurs en fonction des segments auxquels ils appartiennent. Les utilisateurs sont généralement ajoutés aux segments en fonction d’une action, comme cliquer sur un élément créatif.
$cat segmentpixel.json
{
"segment": {
"state": "active",
"short_name": "Segment Pixel 1"
}
}
$ curl -b cookies -X POST -d @segmentpixel.json 'https://api.appnexus.com/segment?advertiser_id=10'
{
"response": {
"status": "OK",
"id": "500"
}
}
Veillez à noter l’ID retourné. Vous devrez ajouter cet ID à l’étape suivante lorsque vous créerez un profil.
Remarque
Si vous oubliez de suivre votre ID, vous pouvez toujours effectuer un autre appel au service segment pour le rechercher. Toutefois, gardez à l’esprit que vous avez des limites de débit. Vous devez donc être sûr d’être efficace dans vos appels d’API.
Listes de domaines
Les listes de domaines vous permettent de créer des listes d’autorisation ou des listes de blocage. Les listes d’autorisation contiennent des domaines que vous souhaitez inclure dans le ciblage de votre campagne, et les listes de blocage contiennent des domaines que vous souhaitez exclure.
$ cat domain-list.json
{
"domain-list":{
"name":"Domains to target",
"type":"white",
"domains":["domain-a.com", "domain-b.net", "domain-c.org"]
}
}
$ curl -b cookies -X POST -d @domain-list.json 'https://api.appnexus.com/domain-list'
{
"response":{
"status":"OK",
"id":9
}
}
Notez que la liste de domaines est créée à l’aide du tableau de domaines . Si vous devez mettre à jour une liste de domaines, n’oubliez pas d’utiliser l’indicateur append avec votre commande PUT. Par exemple, supposons que vous souhaitiez ajouter domain-d.com et domain-e.com à la liste que nous venons de créer. Vous devez créer un fichier JSON comme suit :
$cat updated-domain-list.json
{
"domain-list": {
"id": 9
"domains": ["domain-d.com", "domain-e.com"]
}
}
Pour ajouter ces champs à la liste existante, exécutez la commande suivante :
$ curl -b cookies -X PUT -d @update-domain-list.json 'https://api.appnexus.com/domain-list?id=9&append=true'
Cette opération ajoute les nouveaux domaines et votre liste se présente désormais comme suit :
"domain-list": {
"id": 9,
"name": "Domains to Target",
"description": null,
"type": "white",
"last_modified": "2016-12-01 22:36:41",
"domains": [
"domain-a.com",
"domain-b.net",
"domain-c.org",
"domain-d.com",
"domain-e.com"
],
"num_domains": 5
Si vous laissez l’indicateur append=true dans votre chaîne de requête, votre liste actuelle est remplacée par la liste dans votre mise à jour. Par exemple, la même commande PUT que nous venons d’exécuter sans append=true produit cette liste de domaines :
"domain-list": {
"id": 9,
"name": "Domains to Target",
"description": null,
"type": "white",
"last_modified": "2016-12-01 22:36:41",
"domains": [
"domain-d.com",
"domain-e.com"
],
"num_domains": 2
Remarque
Les domaines que vous chargez doivent généralement être conformes aux spécifications d’URI pour être acceptés par notre API. En pratique, vous n’avez probablement pas à vous soucier de cette exigence, sauf si vous essayez de charger des noms de domaine internationalisés, auquel cas vous devez vous assurer que tous les domaines qui incluent des caractères non ASCII sont encodés avec Punycode avant le chargement.
Étape 3 : Profil
Après avoir créé les objets sans dépense, l’étape suivante consiste à créer un profil. Le profil est également un objet sans dépense, mais celui-ci doit être créé après les objets de l’étape 2, car vous pouvez utiliser certains de ces objets dans votre profil. Un profil est un ensemble de paramètres de ciblage, tels que le sexe, l’âge, la zone géographique et la fréquence. Il peut être créé avec plusieurs objets dans le système, y compris des pixels de segment.
$cat profile.json
{
"profile": {
"segment_group_targets": [
{
"segments": [
{
"id": 500,
"action": "include",
"name": "Segment Pixel 1"
}
]
}
],
"domain_action": "exclude",
"domain_targets": [
{
"domain": "competitorURL.com"
},
{
"domain": "badURL.com"
}
]
}
}
$ curl -b cookies -X POST -d @profile.json 'https://api.appnexus.com/profile?advertiser_id=10'
{
"response": {
"status": "OK",
"count": 1,
"id": 200,
...
}
}
Dans notre exemple, nous avons utilisé le pixel de segment (pixel de segment 1) que nous avons créé à l’étape 2. Ce profil cible les utilisateurs en fonction de ce segment, ainsi que les domaines qui ne figurent pas dans la liste des domaines exclus spécifiés ici (competitorURL.com et badURL.com). Nous aurions également pu utiliser notre liste de domaines que nous avons créée à l’étape 2 en utilisant les champs domain_list_action et domain_list_targets.
Nous allons associer ce profil à un élément de ligne à l’étape 5 : Éléments de ligne. Donc, là encore, effectuez le suivi de l’ID retourné.
Étape 4 : Ordres d’insertion
Il est maintenant temps de créer un ordre d’insertion. Il s’agit du premier des objets « dépenses ». Ce sont les objets qui déterminent combien d’argent sera dépensé sur quelle période de temps et sur quelles campagnes publicitaires. Il existe deux types d’ordres d’insertion : transparent et non transparent. Consultez Insertion Order Service pour obtenir une description détaillée de la différence. Étant donné que les ordres d’insertion transparents sont le modèle préféré, c’est ce que nous allons créer ici.
$ cat insertion-order.json
{
"insertion-order": {
"name": "Insertion Order 1",
"budget_intervals": [
{
"start_date": "2017-10-10 00:00:00",
"end_date": "2017-11-12 00:00:00",
"daily_budget": null,
"daily_budget_imps": 100,
"enable_pacing": true,
"lifetime_budget": null,
"lifetime_budget_imps": 2000,
"lifetime_pacing": false
},
{
"start_date": "2017-11-13 00:00:00",
"end_date": "2017-11-18 00:00:00",
"daily_budget": null,
"daily_budget_imps": 60,
"enable_pacing": true,
"lifetime_budget": null,
"lifetime_budget_imps": 300,
"lifetime_pacing": false
}
]
}
}
$ curl -b cookies -X POST -d @insertion-order.json "https://api.appnexus.com/insertion-order?advertiser_id=10'
{
"response": {
"status": "OK",
"count": 1,
"start_element": 0,
"num_elements": 100,
"insertion-orders": [
{
"id": 450450,
"name": "Insertion Order 1",
"code": null,
"state": "active",
"advertiser_id": 10,
"start_date": null,
"end_date": null,
"last_modified": "2016-11-1718: 41: 57",
"timezone": "EST5EDT",
"currency": "USD",
"comments": null,
"billing_code": null,
"line_items": null,
"labels": null,
"broker_fees": null,
"budget_intervals": [
{
"id": 111,
"start_date": "2017-10-1000: 00: 00",
"end_date": "2017-11-1200: 00: 00",
"parent_interval_id": null,
"lifetime_budget": null,
"lifetime_budget_imps": 2000,
"lifetime_pacing": false,
"enable_pacing": false,
"daily_budget_imps": 100,
"daily_budget": null
},
{
"id": 112,
"start_date": "2017-11-1300: 00: 00",
"end_date": "2017-11-1800: 00: 00",
"parent_interval_id": null,
"lifetime_budget": null,
"lifetime_budget_imps": 300,
"lifetime_pacing": false,
"enable_pacing": false,
"daily_budget_imps": 60,
"daily_budget": null
}
],
"lifetime_pacing": null,
"lifetime_budget": null,
"lifetime_budget_imps": null,
"enable_pacing": null,
"lifetime_pacing_span": null,
"allow_safety_pacing": null,
"daily_budget": null,
"daily_budget_imps": null
}
]
}
}
À l’étape suivante, nous allons créer un élément de ligne que nous allons associer à cet ordre d’insertion. Une fois de plus, suivez l’ID de l’ordre d’insertion que nous venons de créer. Vous devez également effectuer le suivi des ID d’intervalle budgétaire. Vous allez utiliser ces ID pour associer les informations d’intervalle budgétaire à l’élément de ligne.
Étape 5 : Éléments de ligne
Comme pour les commandes d’insertion, les éléments de ligne peuvent être transparents ou non. Pour plus d’informations, consultez Service d’élément de ligne. Vous ne pouvez pas combiner transparent et non transparent. Nous allons donc créer un élément de ligne transparent à utiliser avec notre ordre d’insertion transparent à partir de l’étape 4. Vous pouvez créer plusieurs éléments de ligne dans un même ordre d’insertion. Nous allons également attacher le profil que nous avons créé à l’étape 3 à cet élément de ligne en affectant l’ID de profil au profile_id champ.
$ cat line-item.json
{
"line-item": {
"name": "Line Item 1",
"state": "active",
"insertion_orders": [
{
"id": 450450
}
],
"budget_intervals": [
{
"parent_interval_id": 111
},
{
"parent_interval_id": 112
}
],
"profile_id": 200
}
}
$ curl -b cookies -X POST -d @line-item.json "https://api.appnexus.com/line-item?advertiser_id=10"
{
"response": {
"status": "OK",
"count": 1,
"id": 230230,
"start_element": 0,
"num_elements": 100,
"line-item": {
"id": 230230,
"code": null,
"name": "Line Item 1",
"advertiser_id": 10,
"state": "active",
"start_date": null,
"end_date": null,
"timezone": "EST5EDT",
"discrepancy_pct": 0,
"publishers_allowed": "all",
"revenue_value": 0,
"revenue_type": "cpm",
"goal_type": "none",
"goal_value": null,
"last_modified": "2016-11-17 14:17:50",
"click_url": null,
"currency": "USD",
"require_cookie_for_tracking": true,
"profile_id": null,
"member_id": 1234,
"comments": null,
"remaining_days": null,
"total_days": null,
"manage_creative": false,
"advertiser": {
"id": 10,
"name": "AdvertiserA"
},
"flat_fee": null,
"delivery_goal": null,
"labels": null,
"broker_fees": null,
"pixels": null,
"insertion_orders": [
{
"id": 450450,
"state": "active",
"code": null,
"name": "Insertion Order 1",
"advertiser_id": 10,
"start_date": null,
"end_date": null,
"timezone": "EST5EDT",
"last_modified": "2016-11-17 13:56:56",
"currency": "USD",
"budget_intervals": [
{
"id": 111,
"object_id": 450450,
"object_type": "insertion_order",
"start_date": "2017-10-1000: 00: 00",
"end_date": "2017-11-1200: 00: 00",
"timezone": "EST5EDT",
"lifetime_budget": 1000,
"lifetime_budget_imps": null,
"lifetime_pacing": false,
"enable_pacing": false,
"daily_budget_imps": null,
"daily_budget": null
},
{
"id": 112,
"object_id": 450450,
"object_type": "insertion_order",
"start_date": "2017-11-1300: 00: 00",
"end_date": "2017-11-1800: 00: 00",
"timezone": "EST5EDT",
"lifetime_budget": 1000,
"lifetime_budget_imps": null,
"lifetime_pacing": false,
"enable_pacing": false,
"daily_budget_imps": null,
"daily_budget": null
}
]
}
],
"goal_pixels": null,
"imptrackers": null,
"clicktrackers": null,
"campaigns": null,
"valuation": {
"performance_mkt_managed": false,
},
"creatives": null,
"budget_intervals": [
{
"id": 1379,
"object_id": 2304000,
"object_type": "campaign_group",
"start_date": "2017-10-1000: 00: 00",
"end_date": "2017-11-1200: 00: 00",
"timezone": "EST5EDT",
"parent_interval_id": 111,
"budget_allocation": null
},
{
"id": 1380,
"object_id": 2304001,
"object_type": "campaign_group",
"start_date": "2017-11-1300: 00: 00",
"end_date": "2017-11-1800: 00: 00",
"timezone": "EST5EDT",
"parent_interval_id": 112,
"budget_allocation": null
}
],
"click_model": null,
"lifetime_budget": null,
"lifetime_budget_imps": null,
"daily_budget": null,
"daily_budget_imps": null,
"enable_pacing": null,
"allow_safety_pacing": null,
"lifetime_pacing": null,
"lifetime_pacing_span": null,
"lifetime_pacing_pct": null,
"payout_margin": null
}
}
}
Notez l’ID de votre nouvel élément de ligne et nous passerons à l’étape suivante.
Étape 6 : Campagnes
Enfin, il est temps de créer la campagne. Vous pouvez associer un profil à une campagne plutôt qu’à un élément de ligne. Vous pouvez créer plusieurs campagnes pour chaque élément de ligne.
$ cat campaign.json
{
"campaign": {
"state": "inactive",
"name": "Campaign 1",
"advertiser_id": 10,
"line_item_id": 230230,
"inventory_type": "direct"
}
}
$ curl -b cookies -X POST -d @campaign.json 'https://api.appnexus.com/campaign?advertiser_id=10'
{
"response": {
"status": "OK",
"id": 123456,
"dbg_info": {
...
}
}
}
Et c’est tout.
Il existe de nombreuses autres options sur chacun de ces services. Nous vous avons montré une configuration très basique dans cette procédure pas à pas . vous souhaiterez probablement ajouter beaucoup plus d’informations au fur et à mesure que vous créez vos objets. Mais espérons que cette procédure pas à pas vous a donné un bon point de départ.
Résumé
Suivre l’ordre des opérations
- Tout est associé à un annonceur, donc si vous n’avez pas créé l’annonceur, faites-le d’abord.
- Create vos objets non dépensés (créatifs, segments, etc.) dans n’importe quel ordre ...
- ... sauf les profils. Un profil est un objet qui ne dépense pas, mais il doit être le dernier objet sans dépense créé. Il peut dépendre de certains des autres objets sans dépense, tels que les segments.
- Create objets de dépense dans l’ordre : ordre d’insertion, élément de ligne, campagne (si nécessaire).
Suivez ces instructions générales
Incluez un budget et des dates de vol sur vos objets de dépense. Si un objet supérieur dans l’ordre les contient déjà, les objets inférieurs les héritent, sauf modification explicite. Les dates de budget et de vol des objets inférieurs doivent être comprises dans les budgets et les dates de vol pour les objets plus élevés. (En d’autres termes, si votre ordre d’insertion a un intervalle budgétaire entre le 2 avril 2017 et le 30 avril 2017, vous ne pouvez pas créer un élément de ligne sous cet ordre d’insertion avec un intervalle budgétaire du 20 avril 2017 au 5 mai 2017.)
Joignez un profil à votre élément de ligne (ou campagne). Vous pouvez rencontrer de graves problèmes de ciblage et de dépense si vous n’attachez pas de profil.
Définissez le champ d’état sur tous les objets de dépense sur actif lorsque vous êtes prêt à commencer à dépenser aux dates de début spécifiées. (Si vous ne souhaitez pas que vos objets commencent à dépenser à leurs dates de début, définissez l’état sur inactif.)