Resumen: Envía datos de pedidos a nivel de artículo a AppsFlyer
con el parámetro af_order_info. Es compatible con dos formatos coherentes para compras de uno o varios artículos. AppsFlyer lo asigna automáticamente a la estructura que requiere cada ad network.
Por qué son importantes los datos a nivel de artículo
af_order_info es un parámetro de evento que informa sobre los artículos individuales de un pedido, tanto si el pedido tiene un artículo como varios. Sustituye los campos antiguos af_content y af_content_list por un único formato más completo para el mismo fin. Admite dos formatos de array coherentes tanto para pedidos de un solo artículo como de varios artículos y funciona en seis ad network (Google Ads, DV360, Meta, TikTok, Snapchat y Pinterest), en lugar de requerir una estructura independiente para cada una.
Enviar este nivel de detalle es importante porque estas redes ahora optimizan las campañas usando algo más que el valor total de un pedido. Meta, Google, TikTok, Snapchat y Pinterest admiten algoritmos de optimización que funcionan a nivel de producto y usan detalles como el ID del artículo, el precio, la cantidad, la categoría y la marca para mejorar el targeting y las pujas. Cuanto más completo sea el desglose de artículos que envías, más podrán usar estas redes para afinar esas campañas.
Estructura de parámetros
Cada artículo de un pedido se puede describir con hasta 7 campos. AppsFlyer admite dos formas de estructurar estos campos en af_order_info, que se describen a continuación.
Se envía como parte del event_value de tu evento (o de custom_data) y funciona igual tanto si el pedido tiene un artículo como varios, así que puedes estandarizarlo en lugar de mantener varios formatos de datos de pedidos.
Estos siete campos son:
| Campo | Description | Compatible con |
|---|---|---|
sku |
ID del artículo o unidad de mantenimiento de existencias (SKU) | Google, DV360, Meta, Snapchat, Pinterest, TikTok |
revenue |
Precio del artículo | Google, DV360, Meta, Snapchat, Pinterest, TikTok |
qty |
Cantidad comprada | Google, DV360, Meta, Snapchat, Pinterest, TikTok |
content_name |
Nombre del artículo o producto | TikTok |
content_type |
Tipo de artículo. Los únicos valores compatibles son product (cuando el SKU es un SKU específico) y product_group (cuando el SKU es un item_group_id) |
TikTok |
content_category |
Categoría del artículo | TikTok, Snapchat |
brand |
Marca del artículo | TikTok, Snapchat |
No es necesario completar los siete campos para cada artículo. Envía lo que sea relevante para tu negocio y para las redes en las que ejecutas campañas. Los campos que omitas simplemente no se incluirán en el postback a las redes que, de otro modo, los recibirían. Los campos más importantes y habituales que debes enviar son sku, ingresos y qty.
AppsFlyer admite dos formas de estructurar af_order_info, ambas anidadas dentro de event_value:
-
Un campo para todos los artículos (recomendado): cada campo, como
sku,revenueyqty, se envía una sola vez, como un array que abarca todos los artículos del pedido. Así, el payload es más corto. - Un objeto por artículo: cada artículo del pedido se envía como su propio objeto, con todos los campos relevantes anidados dentro.
El siguiente ejemplo muestra el formato recomendado, con un campo para todos los artículos:
{
"af_order_info": {
"sku": ["SKU-001", "SKU-002", "SKU-003"],
"revenue": [50.00, 75.00, 25.00],
"qty": [1, 1, 2],
"content_name": ["Wireless Mouse", "Bluetooth Headphones", "USB-C Cable"],
"content_type": ["product", "product", "product"],
"content_category": ["accessories", "audio", "cables"],
"brand": ["Logitech", "Sony", "Anker"]
}
}El siguiente ejemplo muestra el formato alternativo, con un objeto por elemento:
{
"af_order_info": [
{
"sku": "SKU-001",
"revenue": 50.00,
"qty": 1,
"content_name": "Wireless Mouse",
"content_type": "product",
"content_category": "accessories",
"brand": "Logitech"
},
{
"sku": "SKU-002",
"revenue": 75.00,
"qty": 1,
"content_name": "Bluetooth Headphones",
"content_type": "product",
"content_category": "audio",
"brand": "Sony"
},
{
"sku": "SKU-003",
"revenue": 25.00,
"qty": 2,
"content_name": "USB-C Cable",
"content_type": "product",
"content_category": "cables",
"brand": "Anker"
}
]
}Asignación por red
AppsFlyer lee el array af_order_info y lo reestructura automáticamente en el formato que espera la API de cada red. La compatibilidad de los campos varía según la red, por lo que no todos los campos que envías llegan a todas las redes. La siguiente tabla muestra los campos que admite actualmente cada red:
| Red | Campos admitidos |
|---|---|
| Google Ads / DV360 |
sku, qty, ingresos
|
| Meta (Facebook) |
sku, qty, ingresos
|
| TikTok |
sku, qty, ingresos, content_name, content_type, content_category, marca (los siete campos) |
| Snapchat |
sku, ingresos, marca, content_category. AppsFlyer envía la cantidad solo como recuento total de artículos, no por artículo |
sku, ingresos, qty
|
Google Ads y DV360
AppsFlyer asigna los campos al array items dentro de app_event_data:
"app_event_data": {
"items": [
{"item_id": "SKU-001", "quantity": "1", "price": "50.0"},
{"item_id": "SKU-002", "quantity": "1", "price": "75.0"},
{"item_id": "SKU-003", "quantity": "2", "price": "25.0"}
]
}
Meta (Facebook)
AppsFlyer asigna los campos a fb_contents:
"fb_contents": [
{"id": "SKU-001", "quantity": 1, "item_price": 50.00},
{"id": "SKU-002", "quantity": 1, "item_price": 75.00},
{"id": "SKU-003", "quantity": 2, "item_price": 25.00}
]
TikTok
AppsFlyer asigna los campos a properties.contents. TikTok es la única red de las cinco que acepta los siete campos:
"properties": {
"contents": [
{
"content_type": "product",
"content_category": "accessories",
"content_name": "Wireless Mouse",
"quantity": 1,
"brand": "Logitech",
"content_id": "SKU-001",
"price": 50.00
}
],
"currency": "USD",
"value": 175.00
}
Snapchat
AppsFlyer asigna los campos a parámetros de consulta de URL. Snapchat no recibe la cantidad por artículo. En su lugar, number_items refleja la cantidad total de todos los artículos del pedido:
&item_ids=SKU-001,SKU-002,SKU-003&number_items=5&price=50.00,75.00,25.00&brands=Logitech,Sony,Anker&category=accessories,audio,cables
AppsFlyer asigna los campos a contents:
"contents": [
{"id": "SKU-001", "item_price": "50.00", "quantity": 1},
{"id": "SKU-002", "item_price": "75.00", "quantity": 1},
{"id": "SKU-003", "item_price": "25.00", "quantity": 2}
]
Compatibilidad con versiones anteriores
Los formatos existentes también siguen funcionando, incluidos los campos af_content_id, af_quantity y af_price basados en matrices, así como los campos af_content y af_content_list. No necesitas migrar las implementaciones existentes. A partir de ahora, af_order_info estará disponible en un único formato más completo. Resulta especialmente útil si quieres pasar detalles de artículos más enriquecidos, como el nombre, la categoría y la marca, que los formatos anteriores no soportan.
Importante:
Como af_order_info solo es compatible con las redes que se indican en este artículo, sigue enviando esta información en los campos existentes, como af_content_id, af_content_list, af_content_type y af_quantity, si ejecutas campañas con otras redes que la necesiten.
Si antes enviabas esta información en el formato que espera Meta (en af_content, que AppsFlyer asignaba a fb_contents), ahora puedes eliminar ese campo del payload. La nueva solución también soporta Meta en fb_contents de forma nativa.
Características y limitaciones
| Rasgo | Descripción |
|---|---|
| Redes compatibles | AppsFlyer solo es compatible con af_order_info para las redes que se indican en este artículo. Es posible que otras redes sigan siendo compatibles con el formato anterior. |
| Plataformas admitidas | Actualmente, esta solución solo es compatible con las compras in-app en aplicaciones móviles. AppsFlyer tiene previsto añadir soporte para otras plataformas, como sitios web, en una fase posterior. |
| Longitud del valor del evento | La longitud total del campo event_value, incluido af_order_info, no puede superar los 3.000 caracteres. |