Compartir a través de


Configuración del lado de compra

La configuración de un anunciante con pedidos de inserción, artículos de línea y segmentación puede parecer complicado. Esta guía está aquí para guiarle a través del proceso. Solo tienes que seguir y tendrás anunciantes y artículos de línea en funcionamiento en poco tiempo.

Requisitos previos

Antes de trabajar con la API, debe leer la sección api Introducción de esta documentación. En esta sección se proporciona información sobre entornos de prueba, restricciones de uso, semántica de API (comandos en ejecución, filtrado, ordenación, etc.) y procedimientos recomendados.

Orden de las operaciones

Al configurar los objetos de compra, el proceso será mucho más sencillo si configura esos objetos en el orden correcto. Si no vas en el orden correcto, te vas a poner en marcha a través de algo y te das cuenta de "Oops, debería haber creado <abc> primero". Siempre puede volver atrás y actualizar cualquier cosa que ya haya configurado, pero si sigue este orden de operaciones y hará las cosas mucho más fáciles por sí mismo.

Además, siguiendo el orden que hemos establecido aquí, es menos probable que se pierda la configuración importante a lo largo del camino. Por ejemplo, puede crear un elemento de línea y una campaña sin un perfil, pero rara vez es una buena idea. El perfil determina tu destino y, si activas una campaña sin un perfil, pujarás por cualquier impresión disponible, posiblemente falten todos los usuarios de tu público objetivo y agotarás tu presupuesto muy rápidamente. Si metódicamente va en orden, es mucho menos probable que olvide algo.

Este es el orden de las operaciones para configurar los objetos de compra:

Diagrama que muestra el orden de configuración de los objetos de compra junto con las explicaciones de cada paso.

  1. Anunciante

    En la parte superior del pedido está el anunciante. Crear el anunciante siempre es el primer paso. Puede tener varios anunciantes dentro de su red, y cada anunciante puede tener muchos pedidos de inserción y artículos de línea.

  2. Objetos que no son de gasto

    El siguiente paso abarca varios subescalones. Todos los pasos secundarios de este paso se pueden crear en cualquier orden. Si quieres crear un píxel de segmento antes que un creativo o un creativo antes que un píxel de segmento, depende completamente de ti. Sin embargo, y esta es la parte importante, debe crear todos los objetos del paso 2 antes de pasar al paso 3, ya que lo más probable es que use algunos de los objetos del paso 2 en el paso 3. (Tenga en cuenta que hay más opciones en este paso de las que se muestran aquí. Los objetos que creamos en este conjunto son un ejemplo de los objetos que no son de gasto que se pueden crear).

  3. Profile

    A continuación, aparece el perfil. Los perfiles definen todas las formas en que puede dirigirse a los usuarios e inventario en sus artículos de línea o campañas. Si no crea los perfiles antes de pasar a los pasos siguientes, tendrá que actualizar todo más adelante con la información del perfil.

  4. Orden de inserción

    En este paso creará los pedidos de inserción. El pedido de inserción contiene información como el presupuesto total que un anunciante asigna durante un período de tiempo, o qué verificación de terceros utiliza el anunciante. Los pedidos de inserción también permiten agrupar las líneas de pedido y las campañas. Puede crear varios pedidos de inserción en un anunciante.

  5. Elemento de línea

    En el paso 5 se crea el elemento de línea. El artículo de línea contiene información como cuánto ha presupuestado el anunciante para una oferta o qué destino necesita el anunciante. (Aquí es donde puede agregar los perfiles creados en el paso 3). Puede crear varios artículos de línea en un anunciante o pedido de inserción.

  6. Campaña

    En el paso final, creamos la campaña. La campaña es donde te vuelves más granular en la definición de cómo cumplirás los objetivos del anunciante. Puede adjuntar un perfil a una campaña.

Tutorial paso a paso

Ahora que comprende las piezas del rompecabezas de compra y cómo colocarlas en orden, vamos a recorrer la creación de su implementación de compra. Estos ejemplos le llevarán a través de una configuración muy sencilla. Hay muchos más campos y configuraciones disponibles para cada servicio que los que se muestran aquí. Consulte la sección Referencia para obtener más información sobre cada servicio.

Paso 1: Anunciante

Comenzamos, por supuesto, con el anunciante. Creamos un archivo JSON que contiene el nombre del anunciante y su estado. Hemos dejado la mayoría de los campos de anunciantes como valores predeterminados. Sin embargo, en el paso 4 vamos a crear un orden de inserción. Para incluir pedidos de inserción, debe establecer use_insertion_orders en true en su anunciante. Consulte Servicio de anunciantes para obtener más información.

Nota:

Hemos establecido el estado del anunciante en activo. Es posible que prefiera establecer inicialmente el estado de todos los objetos en inactivos para asegurarse de que no empiece a gastar antes de que el anunciante esté listo.

$ cat advertiser.json
 
{
        "advertiser": {
                "name": "Advertiser1",
                "state": "active",
        "use_insertion_orders": "true"
        }
}

Ahora hacemos una llamada POST al servicio de anunciante , pasando nuestro archivo JSON.

$ curl -b cookies -X POST -d @advertiser.json 'https://api.appnexus.com/advertiser'
{
   "response":{
      "status":"OK",
      "id":10
   }
}

Ahora hemos creado un anunciante llamado Anunciante1. El comando anterior devolverá un mensaje que muestra al nuevo anunciante, incluido el identificador del anunciante. Anote este identificador; lo usará en comandos posteriores.

Paso 2: Objetos que no son de gasto

Los objetos que creará en este paso son objetos que no son de gasto, lo que significa que no hay cantidades monetarias asociadas a ellos. Todos son independientes entre sí y se pueden usar en diferentes líneas de línea y campañas. Puede crear estos objetos en cualquier orden. Nuestro diagrama muestra cuatro tipos de objetos, pero hay muchos más, incluidos píxeles de terceros, segmentos por lotes y listas de intervalos IP. Mostraremos solo algunos ejemplos aquí.

Creativos

Este es el comando que llama al servicio creativo :

$ curl -b cookies -X POST -d @creative.json 'https://api.appnexus.com/creative?advertiser_id=10'

Observe que hemos pasado el advertiser_id en la cadena de consulta. Esto nos permite asociar el creativo con el anunciante que acabamos de crear.

El contenido del archivo creative.json depende del tipo de creatividad. Hay numerosas opciones; demasiados para ir por aquí. Consulte Creative Service para obtener más información sobre los tipos de creatividades y cómo crear un archivo JSON para crearlos.

Píxeles de conversión

El servicio de píxeles genera un identificador que se puede usar para crear píxeles de conversión. Estos píxeles se pueden colocar en las páginas del anunciante para realizar un seguimiento de las conversiones basadas en vistas y clics. Este es el proceso para crear un píxel de conversión:

$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
   }
}

Observe que, una vez más, pasamos el advertiser_id en la cadena de consulta para asociar este píxel a un anunciante determinado.

Píxeles de segmento

Use el servicio de segmento para generar un identificador para crear píxeles de segmento, que se colocan en las páginas de inventario para habilitar la segmentación de destino. La segmentación de destino ofrece la capacidad de dirigirse a los usuarios en función de los segmentos a los que pertenecen. Por lo general, los usuarios se agregan a segmentos en función de una acción, como hacer clic en una creatividad.

$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"
    }
}

Asegúrese de anotar el identificador que se devuelve, deberá agregar este identificador en el paso siguiente al crear un perfil.

Nota:

Si olvida realizar un seguimiento de su identificador, siempre puede realizar otra llamada al servicio de segmento para buscarlo. Tenga en cuenta, sin embargo, que tiene límites de velocidad, por lo que querrá asegurarse de que está siendo eficaz en las llamadas API.

Listas de dominios

Las listas de dominios permiten crear listas de permitidos o listas de bloqueo. Las listas de permitidos contienen dominios que quieres incluir en la segmentación de la campaña y las listas de bloqueados contienen dominios que quieres excluir.

$ 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
    }
}

Observe que la lista de dominios se crea mediante la matriz domains . Si necesita actualizar una lista de dominios, recuerde usar la marca append con el comando PUT. Por ejemplo, supongamos que desea agregar domain-d.com y domain-e.com a la lista que acabamos de crear. Crearía un nuevo archivo JSON como este:

$cat updated-domain-list.json
{
    "domain-list": {
        "id": 9
        "domains": ["domain-d.com", "domain-e.com"]
    }
}

Para agregar estos campos a la lista existente, ejecute este comando:

$ curl -b cookies -X PUT -d @update-domain-list.json 'https://api.appnexus.com/domain-list?id=9&append=true'

Esto anexará los nuevos dominios y la lista tendrá ahora el siguiente aspecto:

"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 deja fuera la marca append=true en la cadena de consulta, la lista actual se reemplazará por la lista de la actualización. Por ejemplo, el mismo comando PUT que acabamos de ejecutar sin append=true generaría esta lista de dominios:

"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

Nota:

Por lo general, los dominios que cargue deben ajustarse a la especificación de URI que aceptará nuestra API. En términos prácticos, probablemente no tenga que preocuparse por este requisito a menos que intente cargar nombres de dominio internacionalizados, en cuyo caso debe asegurarse de que cualquier dominio que incluya caracteres no ASCII se codifica con Punycode antes de la carga.

Paso 3: Perfil

Después de crear los objetos que no son de gasto, el siguiente paso es crear un perfil. El perfil también es un objeto que no es de gasto, pero este debe crearse después de los objetos del paso 2 porque puede usar algunos de esos objetos en el perfil. Un perfil es un conjunto de parámetros de destino, como el sexo, la edad, la geografía y la frecuencia. Se puede crear con varios objetos en el sistema, incluidos los píxeles de segmento.

$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,
        ...
    }
}

En nuestro ejemplo, hemos usado el píxel de segmento (píxel de segmento 1) que creamos en el paso 2. Este perfil se dirigirá a los usuarios en función de ese segmento y también a los dominios de destino que no están en la lista de dominios excluidos especificados aquí (competitorURL.com y badURL.com). También podríamos haber usado la lista de dominios que creamos en el paso 2 mediante los campos domain_list_action y domain_list_targets.

Asociaremos este perfil a un elemento de línea en Paso 5: Elementos de línea. Por lo tanto, de nuevo, realice un seguimiento del identificador devuelto.

Paso 4: Pedidos de inserción

Ahora es el momento de crear un orden de inserción. Este es el primero de los objetos de "gasto". Estos son los objetos que determinan cuánto dinero se gastará durante el período de tiempo y en qué campañas publicitarias. Hay dos tipos de pedidos de inserción: sin conexión y sin conexión. Consulte Servicio de pedido de inserción para obtener una descripción detallada de la diferencia. Dado que los pedidos de inserción sin problemas son el modelo preferido, eso es lo que vamos a crear aquí.

$ 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
            }
        ]
    }
}

En el siguiente paso vamos a crear un elemento de línea que asociaremos a este orden de inserción, por lo que, una vez más, realizaremos un seguimiento del identificador del orden de inserción que acabamos de crear. También tendrá que realizar un seguimiento de los identificadores de intervalo presupuestado. Usará estos identificadores para asociar la información del intervalo presupuestado con el elemento de línea.

Paso 5: Elementos de línea

Al igual que con los pedidos de inserción, los elementos de línea pueden ser sin problemas o sin problemas. Consulte Servicio de elementos de línea para obtener más información. No se puede combinar sin problemas y sin problemas, por lo que vamos a crear un elemento de línea de conexión directa para seguir nuestro orden de inserción sin problemas desde el paso 4. Puede crear varios elementos de línea en un único orden de inserción. También adjuntaremos el perfil que creamos en el paso 3 a este elemento de línea mediante la asignación del identificador de perfil al profile_id campo.

$ 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
    }
  }
}

Anote el identificador del nuevo elemento de línea y continuaremos con el paso siguiente.

Paso 6: Campañas

Por último, pero no menos importante, es el momento de crear la campaña. Puede asociar un perfil a una campaña en lugar de a un elemento de línea. Puede crear varias campañas para cada elemento de línea.

$ 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": {
      ...
    }
  }
}

Y eso es todo.

Hay muchas más opciones en cada uno de estos servicios. Le hemos mostrado una configuración muy básica en este tutorial; es probable que quiera agregar mucha más información a medida que cree los objetos. Pero esperamos que este tutorial le haya dado un buen punto de partida.

Resumen

Seguir el orden de las operaciones

  • Todo está asociado a un anunciante, por lo que, si no ha creado el anunciante, hágalo primero.
  • Create los objetos que no son de gasto (creativos, segmentos, etc.) en cualquier orden...
  • ... excepto los perfiles. Un perfil es un objeto que no es de gasto, pero debe ser el último objeto que no sea de gasto creado. Puede depender de algunos de los otros objetos que no son de gasto, como los segmentos.
  • Create objetos de gasto en orden: orden de inserción, artículo de línea, campaña (si es necesario).

Siga estas instrucciones generales.

  • Incluya un presupuesto y fechas de vuelo en los objetos de gasto. Si un objeto superior en el orden ya los tiene, los objetos inferiores los heredarán a menos que se cambien explícitamente. Las fechas presupuestadas y piloto de objetos inferiores deben estar dentro de presupuestos y fechas de vuelo para objetos superiores. (Es decir, si el pedido de inserción tiene un intervalo presupuestado que comienza el 2 de abril de 2017 y finaliza el 30 de abril de 2017, no se puede crear una línea de pedido en ese orden de inserción con un intervalo presupuestado del 20 de abril de 2017 al 5 de mayo de 2017).

  • Adjunte un perfil a su línea de pedido (o campaña). Si no adjunta un perfil, podría tener problemas graves de destino y gasto.

  • Establezca el campo de estado en todos los objetos de gasto en activo cuando esté listo para empezar a gastar en las fechas de inicio especificadas. (Si no desea que los objetos empiecen a gastar en sus fechas de inicio, establezca el estado en inactivo).