Objeto de compra
Este artículo explica los distintos componentes de un objeto de compra, cómo utilizarlo correctamente, las mejores prácticas y ejemplos en los que inspirarse.

El evento de compra heredado está entrando en modo de mantenimiento. Los clientes existentes de Braze pueden seguir utilizando los eventos de compra heredados. Seguirán funcionando como se espera, pero las nuevas funcionalidades se desarrollarán sobre los eventos recomendados de comercio electrónico en adelante. Braze proporcionará un aviso previo con suficiente antelación antes de que se establezca cualquier fecha de fin de vida. Los nuevos clientes de Braze deben utilizar los eventos recomendados de comercio electrónico, ya que los eventos de compra heredados no estarán disponibles.
¿Qué es un objeto de compra?
Un objeto de compra es un objeto que se pasa a través de la API cuando se ha realizado una compra. Cada objeto de compra se encuentra dentro de una matriz de compras, y cada objeto representa una única compra realizada por un usuario concreto en un momento concreto. El objeto de compra tiene muchos campos diferentes que permiten al backend de Braze almacenar y utilizar esta información para la personalización y la recopilación de datos.
Cuerpo del objeto
{
// One of "external_id" or "user_alias" or "braze_id" or "email" or "phone" is required.
"external_id" : (optional, string) External user ID,
"user_alias" : (optional, User Alias Object) User alias object,
"braze_id" : (optional, string) Braze user identifier,
"email": (optional, string) User email address,
"phone": (optional, string) User phone number,
"app_id" : (optional, string) see App Identifier,
// See the following product_id naming conventions for clarification.
"product_id" : (required, string) identifier for the purchase, for example, Product Name or Product Category,
"currency" : (required, string) ISO 4217 Alphabetic Currency Code,
//Revenue from a purchase object is calculated as the product of quantity and price.
"price" : (required, float) value in the base currency unit (for example, Dollars for USD, Yen for JPY),
"quantity" : (optional, integer) the quantity purchased (defaults to 1, must be <= 100 -- currently, Braze treats a quantity _X_ as _X_ separate purchases with quantity 1),
"time" : (required, datetime as string in ISO 8601) Time of purchase,
// See the following purchase object explanation for clarification.
"properties" : (optional, Properties Object) properties of the event,
// Setting this flag to true puts the API in "Update Only" mode.
// When using a "user_alias", "Update Only" mode is always true.
"_update_existing_only" : (optional, boolean)
}

Las compras con marcas de tiempo en el futuro toman de forma predeterminada la hora actual. Así se garantiza que los eventos de compra se registren con una hora precisa.
- ID de usuario externo
- Identificador de aplicación
- Wiki del código de moneda ISO 4217
- Wiki del código de tiempo ISO 8601

Algunos pares de identificadores no se pueden utilizar juntos, y email tiene prioridad sobre phone cuando se proporcionan ambos. Para más información, consulta Resolución de identificadores.
ID de producto de compra
Dentro del objeto de compra, el product_id es un identificador de la compra (como Product Name o Product Category):
- Braze te permite almacenar hasta 5000
product_iden el panel. - El
product_idpuede tener hasta 255 caracteres.
Convenciones de nomenclatura
En Braze, ofrecemos algunas convenciones generales de nomenclatura para el product_id del objeto de compra. Al elegir el product_id, Braze sugiere utilizar nombres sencillos, como el nombre o la categoría del producto (en lugar de SKU), con la intención de agrupar todos los artículos registrados según este product_id.
Esto ayuda a que los productos sean más fáciles de identificar para la segmentación y la activación de desencadenantes.
Registrar compras a nivel de pedido
Si quieres registrar las compras a nivel de pedido en lugar de a nivel de producto, puedes utilizar el nombre o la categoría del pedido como product_id (como Online Order o Completed Order).
Por ejemplo, para registrar compras a nivel de pedido en el SDK Web:
POST https://YOUR_REST_API_URL/users/track
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"purchases" : [
{
"external_id" : "user1",
"app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
"product_id" : "Completed Order",
"currency" : "USD",
"price" : 219.98,
"time" : "2013-07-16T19:20:30+01:00",
"properties" : {
"products" : [ { "name": "Monitor", "category": "Gaming", "product_amount": 19.99, },
{ "name": "Gaming Keyboard", "category": "Gaming ", "product_amount": 199.99, }
]
}
}
]
}
Objeto de propiedades de compra
Las propiedades de la compra están diseñadas para filtrar y personalizar con Liquid los mensajes desencadenados por sus eventos de compra principales. De forma predeterminada, no se guardan en el perfil de usuario de Braze. Para usar los valores de las propiedades de la compra en la segmentación, consulta Segmentación por propiedades del evento, que almacena los valores en el perfil de usuario durante un periodo retroactivo de hasta 30 días.
The properties values must be an object up to 50 KB where the keys are the property names and the values are the property values. Property names must be strings, 255 characters or fewer, with no leading dollar signs ($).
Property values can be any of the following data types:
| Data type | Description |
|---|---|
| Number | Integer or float |
| Boolean | Value true or false |
| Datetime | String in ISO 8601 or yyyy-MM-dd'T'HH:mm:ss:SSSZ format. Not supported within arrays. |
| String | 255 characters or fewer |
| Array | Supported; datetimes are not supported within arrays. |
| Object | Ingested as strings (not nested objects). For nested data, use a string value (for example, JSON serialized). |
The following keys are reserved and cannot be used as property names: time, product_id, quantity, event_name, price, and currency. Using a reserved key in the properties object returns the error “Invalid ‘properties’ field”.
Para una referencia consolidada de los tipos de datos en atributos personalizados, propiedades del evento y catálogos, consulta Tipos de datos.
Propiedades de la compra
Las propiedades de la compra pueden usarse para desencadenar mensajes y para la personalización mediante Liquid, y también te permiten segmentar en función de estas propiedades.

When you view segmentable purchase properties in Data Settings > Products, the list displays property keys (names such as “color” or “brand”), not the actual property values (such as “red” or “Nike”).
Convenciones de denominación
Es importante tener en cuenta que esta característica se activa por producto, no por compra. Por ejemplo, si tienes un gran volumen de productos distintos, pero todos tienen las mismas propiedades, la segmentación puede resultar innecesaria.
En este caso, te recomendamos usar nombres de productos a «nivel de grupo» en lugar de identificadores a nivel de transacción al configurar las estructuras de datos. Por ejemplo, una empresa de billetes de tren debería tener productos para «viaje de ida», «viaje de ida y vuelta» o «multiciudad», y no transacciones específicas como «transacción 123» o «transacción 046». Como otro ejemplo, con el evento de compra «comida», lo mejor sería establecer las propiedades como «pastel» y «sándwich».

Ten en cuenta que los productos se pueden añadir a través de la REST API de Braze. Por ejemplo, si envías una llamada al endpoint /users/track e incluyes un nuevo ID de compra, Braze crea automáticamente un producto en la sección Configuración de datos > Productos del panel.
Ejemplo de objeto de compra
POST https://YOUR_REST_API_URL/users/track
Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
"purchases" : [
{
"external_id" : "user1",
"app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
"product_id" : "backpack",
"currency" : "USD",
"price" : 40.00,
"time" : "2013-07-16T19:20:30+01:00",
"properties" : {
"color" : "red",
"monogram" : "ABC",
"checkout_duration" : 180,
"size" : "Large",
"brand" : "Backpack Locker"
}
},
{
"external_id" : "user1",
"app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
"product_id" : "pencil",
"currency" : "USD",
"price" : 2.00,
"time" : "2013-07-17T19:20:20+01:00",
"properties" : {
"number" : 2,
"sharpened" : true
}
},
{
"user_alias" : { "alias_name" : "device123", "alias_label" : "my_device_identifier"},
"app_id" : "11ae5b4b-2445-4440-a04f-bf537764c9ad",
"product_id" : "pen",
"currency" : "USD",
"price" : 2.50,
"time" : "2013-07-17T19:20:20+01:00",
"properties" : {
"color" : "blue",
}
}
]
}
Objetos de compra, objetos de evento y webhooks
Con el ejemplo proporcionado, podemos ver que alguien compró una mochila con las propiedades: color, monograma, duración de la compra, tamaño y marca. A continuación, podemos crear Segments con estas propiedades usando las propiedades del evento de compra o enviar mensajes personalizados a través de un canal usando Liquid. Por ejemplo: «Hola, Ann F., gracias por comprar esa mochila roja mediana por 40,00 $. ¡Gracias por comprar en Backpack Locker!».
Si quieres guardar, almacenar y hacer un seguimiento de las propiedades para segmentar, tienes que configurarlas como atributos personalizados. Puedes hacerlo con extensiones de segmento, que te permiten dirigirte a los usuarios en función de un evento personalizado o del comportamiento de compra almacenado durante toda la vida de ese perfil de usuario.