Sincronización de productos de Shopify
Puedes sincronizar todos los productos de tu tienda Shopify con un catálogo de Braze para una personalización más profunda de la mensajería.
Los catálogos de Shopify se actualizarán casi en tiempo real a medida que realices ediciones y cambios en los productos de tu tienda Shopify. Puedes enriquecer tu carrito abandonado, la confirmación del pedido y mucho más con los detalles y la información más actualizados sobre los productos.
Además de admitir los datos principales de productos de Shopify, puedes sincronizar colecciones de Shopify, etiquetas de productos y metacampos de productos con tu catálogo de Braze. Estos campos adicionales desbloquean una personalización más rica, selecciones de catálogo más precisas y una segmentación más potente a través de las extensiones de segmento.
Configura tu sincronización de productos de Shopify
Si ya has instalado tu tienda Shopify, puedes sincronizar tus productos siguiendo las instrucciones de esta sección.
Paso 1: Activa la sincronización
Puedes sincronizar tus productos con un catálogo de Braze a través del flujo de instalación de Shopify o en la página del partner de Shopify.

Paso 2: Selecciona el identificador de tu producto
Selecciona el identificador de producto principal que se usará como ID del catálogo de Braze:
- Shopify Variant ID es una buena opción predeterminada cuando tus SKU faltan, están duplicados entre variantes o pueden contener caracteres como barras, puntos, espacios o ampersands. Los Variant ID son numéricos y siempre cumplen estos requisitos.
- SKU funciona bien cuando cada variante tiene un SKU único que sigue las mismas reglas de caracteres que Shopify Variant ID, y quieres que la mensajería o los análisis usen los SKU de comercio minorista como clave del catálogo.
- Puedes usar SKU de texto libre que contengan caracteres no permitidos utilizando Shopify Variant ID en lugar de SKU.
El valor que selecciones se convierte en el item_id del catálogo y solo puede contener letras, números, guiones y guiones bajos.

Si usas SKU como ID del catálogo, asegúrate de que todos los productos y variantes de tu tienda tengan un SKU establecido y que sean únicos.
- Si a un artículo le falta un SKU, Braze no puede sincronizar ese producto en el catálogo.
- Si tienes más de un producto con el mismo SKU, esto puede provocar un comportamiento inesperado o que la información del producto sea anulada involuntariamente.
Paso 3: Configura datos de producto adicionales (opcional)
Opcionalmente, puedes habilitar la sincronización de etiquetas de productos, colecciones de Shopify y metacampos. Habilita o modifica estos ajustes después de la sincronización inicial desde la página del partner de Shopify.

Primero añade las etiquetas de productos, las colecciones de Shopify y los metacampos en Shopify. Si no existen en Shopify, no aparecerán en Braze.

- En la página Sync product data to Braze, selecciona la casilla Sync product tags para abrir el modal Select product tags.
- Selecciona hasta 20 etiquetas de productos para sincronizar con tu catálogo de Braze. Solo se sincronizarán las etiquetas que selecciones.

- Selecciona Sync Shopify collections para abrir el modal de configuración de colecciones.
- Selecciona hasta 20 colecciones para sincronizar.
- El modal proporciona una lista buscable de hasta 5000 de las colecciones creadas o actualizadas más recientemente de tu tienda Shopify.
- Las colecciones seleccionadas previamente que ya no están entre las 5000 principales seguirán apareciendo en tu selección.

Braze utiliza el ID de colección de Shopify para identificar las colecciones sincronizadas, que luego se utilizan al crear selecciones de catálogo y filtros de segmento.


Para ver ejemplos de cómo usar cada tipo de datos de producto, consulta Casos de uso de catálogos de Shopify.
Paso 4: Sigue el progreso de tu sincronización
Después de guardar tu configuración, Braze comenzará a sincronizar tus productos y actualizará el estado a In Progress en tu página del partner de Shopify. El tiempo de sincronización depende del número de productos y variantes en tu tienda.
Puedes salir de la página una vez que la sincronización esté en curso; Braze te enviará una notificación en el panel cuando la sincronización se complete. Después de completarse, el estado se actualizará a Active y podrás ver tus productos seleccionando el nombre del catálogo en tu página del partner de Shopify.

También puedes ver las etiquetas de productos, metacampos y colecciones sincronizados dentro de tu catálogo de Shopify como nuevas columnas.


Si tu sincronización supera el límite de almacenamiento de tu catálogo, Braze dejará de sincronizar y las nuevas actualizaciones de productos ya no se reflejarán. Ponte en contacto con tu CSM para subir de nivel si es necesario.
Paso 5: Administra tu configuración
Cada tipo de sincronización tiene una tarjeta de resumen en la página del partner de Shopify que muestra el recuento total sincronizado, el estado actual y un enlace a tu catálogo. Selecciona el icono de vista para ver tu configuración activa y editarla.
Puedes modificar tu sincronización de productos de Shopify, incluida la administración de tus etiquetas de productos, colecciones y metacampos de productos en cualquier momento desde la página del partner de Shopify.


Cambiar tus selecciones sincronizadas puede afectar a Campaigns, Canvas o selecciones de catálogo activas que hagan referencia a ellas. Actualiza el contenido activo para que funcione correctamente cuando apliques los cambios.
Datos de catálogo de Shopify compatibles
| Campo | Tipo de datos | Ejemplos |
|---|---|---|
id |
cadena | 45264808411274 cuando el identificador de producto del catálogo es Shopify Variant ID12345 cuando el identificador de producto del catálogo es SKU (coincide con el valor que seleccionaste en el paso 2) |
store_name |
cadena | “your-store” (subdominio de la tienda de Shopify, sin .myshopify.com) |
shopify_product_id |
número | 7939032613002 (se almacena como número en tu catálogo de Braze; las API de Shopify pueden devolver este ID como cadena) |
shopify_variant_id |
número | 45264808411274 (se almacena como número en tu catálogo de Braze; las API de Shopify pueden devolver este ID como cadena) |
product_title |
cadena | “Classic leather jacket” |
variant_title |
cadena | “Large / Red”, “Medium” o “Default Title” para productos con una sola variante |
status |
cadena | “active”, “draft”, “archived” |
product_image_url |
cadena | “https://cdn.shopify.com/s/files/1/0641/0970/7402/files/t_shir.jpg?v=1736538760” |
variant_image_url |
cadena | La misma URL de estilo CDN que la imagen del producto cuando no existe una imagen de variante; en caso contrario, una URL de imagen específica de la variante |
vendor |
cadena | “Flash and Thread”, “PantsLabyrinth” |
product_type |
cadena | “Outerwear”, “T-Shirts” (del Product type del producto en Shopify) |
product_url |
cadena | “https://your-store.myshopify.com/products/classic-leather-jacket” |
product_handle |
cadena | “classic-leather-jacket” |
published_scope |
cadena | “web”, “global” |
price |
número | 10.00, 24.99Shopify suele devolver los precios como cadenas (por ejemplo, "199.00" en la REST Admin API). Braze los convierte en números para este campo del catálogo. |
compare_at_price |
número | 15.00 cuando Compare at price está configurado en Shopify0 cuando Shopify no tiene precio de comparación. Las API de Shopify suelen devolver null para un precio de comparación no configurado; Braze almacena 0 en el catálogo para que el campo siempre sea numérico (es un valor predeterminado de Braze, no un valor que Shopify envíe como 0). |
inventory_quantity |
número | 20, 0 o un valor negativo cuando se permite la sobreventa (por ejemplo, -18) |
options |
cadena | “Size,Color” Shopify permite hasta tres tipos de opciones por producto (por ejemplo, talla, color, material). El valor de options es una lista separada por comas de esos nombres. |
option_values |
cadena | “Medium,Red”, “Large,Red” Cada valor sigue el mismo orden que options (hasta tres valores). |
sku |
cadena | “12345”, “SKU-001-RED-L” |
product_tags |
matriz | ["Summer", "Sale", "New"]Requiere la sincronización de etiquetas de producto. |
collection_ids |
matriz | [123456789012, 987654321098] (ID de colecciones de Shopify)Requiere la sincronización de colecciones de Shopify. |
Columnas de metacampos |
Varía según el tipo | Cada metacampo sincronizado aparece como una columna independiente con el nombre de su clave. Para más información, consulta Metacampos compatibles en la pestaña “Metacampos de producto” del paso 3. |

Tu catálogo de Shopify lo administra Shopify. Para actualizar tu catálogo, haz los cambios directamente en tu tienda de Shopify y se sincronizarán automáticamente con Braze. Para eliminar tu catálogo de Shopify, ve a la página del partner de Shopify en Braze y desactiva la sincronización.
Casos de uso del catálogo de Shopify
Estos casos de uso muestran cómo puedes utilizar los datos sincronizados de tu catálogo de Shopify para personalizar mensajes.

Braze sincroniza hasta 250 variantes de cada producto de Shopify en tu catálogo. Las variantes que superen ese límite no se sincronizan. Si necesitas más de 250 variantes por producto, ponte en contacto con tu administrador del éxito del cliente de Braze.
Utiliza las etiquetas de producto para personalizar mensajes según cómo estén categorizados tus productos en Shopify. Por ejemplo, puedes enviar una promoción con todos los productos etiquetados como “Summer Sale” mediante una selección de catálogo, o crear un Segment de usuarios que compraron productos etiquetados como “Premium”.
Las etiquetas de producto se almacenan como un campo de matriz en cada artículo del catálogo. Para configurar la sincronización de etiquetas de producto, consulta Etiquetas de producto de Shopify.
Selección de catálogo
- En Shopify, asigna a los productos relevantes la etiqueta de producto “Women’s”.

- En Braze, habilita la sincronización de etiquetas y selecciona la etiqueta de producto “Women’s”.

Personalización

Cuando hagas referencia a etiquetas de producto o colecciones en las selecciones de catálogo, utiliza solo el valor en sí, sin los corchetes de matriz [] ni las comillas "" que aparecen en los datos del catálogo. Por ejemplo, si una etiqueta de producto aparece como ["Women's"] en tu catálogo, escribe Women's en el filtro de tu selección.
- Crea una selección de catálogo que filtre los productos que tengan la etiqueta de producto correspondiente, como “Women’s”. Solo puedes usar un campo de matriz único dentro de una misma selección de catálogo, y hasta 50 productos en tu selección de catálogo.

- En el creador de mensajes, añade la selección donde quieras insertar con plantillas los productos de la selección de catálogo etiquetados como “Women’s”. Por ejemplo, podrías usar un bloque de producto HTML como este:
{% catalog_selection_items se-team-ecommerce_shopify_catalog womens_clothing %}
{% if items[0] == blank %}
{% abort_message('Catalog selection returned no items') %}
{% endif %}
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">
{% for item in items %}
{% if forloop.index0 < 3 %}
{% assign title = item.product_title | default: '' %}
{% assign image_url = item.variant_image_url | default: '' %}
{% assign price = item.price | default: '' %}
{% assign url = item.product_url | default: '' %}
<tr>
<td width="200" valign="top" style="padding:12px 12px 12px 0;">
{% if image_url == blank %}
<div style="width:200px;height:200px;background:#f2f2f2;line-height:200px;text-align:center;font-family:Arial,sans-serif;font-size:12px;color:#666;">
No image
</div>
{% else %}
{% if url == blank %}
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
{% else %}
<a href="{{ url }}" style="text-decoration:none;">
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
</a>
{% endif %}
{% endif %}
</td>
<td valign="top" style="padding:12px 0;font-family:Arial,sans-serif;font-size:14px;line-height:20px;color:#111;">
{% if title != blank %}<div style="font-weight:600;">{{ title | escape }}</div>{% endif %}
{% if price != blank %}<div>Price: ${{ price }}</div>{% endif %}
{% if url != blank %}<div><a href="{{ url }}" style="color:#F84B09;">View product</a></div>{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</table>
O bien, si quieres mencionar productos específicos etiquetados como “Women’s” en una notificación push, puedes usar la herramienta Añadir personalización y especificar los artículos de tu catálogo.
Checkout the latest women's clothing:
{% catalog_selection_items se-team-ecommerce_shopify_catalog womens_clothing %}
{{ items[0].product_title}}{{items[0].price}}
{{ items[1].product_title}}{{items[1].price}}
{{ items[2].product_title}}{{items[2].price}}

Segmentación de catálogos (SQL)
Utiliza las extensiones de segmento para crear Segments basados en usuarios que interactuaron con una etiqueta de producto. Por ejemplo, para encontrar usuarios que hayan interactuado con artículos del catálogo que contengan una etiqueta de producto específica, utiliza esta consulta:
-- Description:
-- This query fetches users who have engaged with catalog items that contain a specific product tag. It joins the catalog
-- to custom events by matching any element in an array within events.properties.products (e.g. any product
-- with variant_id equal to a catalog item), using Snowflake LATERAL FLATTEN to explode the array.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND
items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
and events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND (items.field_name = 'product_tags' AND ARRAY_CONTAINS('<product_tag_value>'::VARIANT, TRY_PARSE_JSON(items.field_value)));
Utiliza las colecciones de Shopify para incluir en tus mensajes agrupaciones de productos seleccionadas que también se utilizan en tu sitio de Shopify y en las experiencias de tu aplicación. Por ejemplo, destaca “New Arrivals” en un correo electrónico promocional, haz venta cruzada de “Best Sellers” en un Canvas de carrito abandonado o dirígete a los usuarios que navegaron por una colección de temporada.
Selección de catálogo
- En Shopify, crea una colección “New Women’s Products - In Stock” con tus productos de mejor rendimiento.

- En Braze, habilita la sincronización de colecciones y selecciona “Women’s Products - In Stock”.


Para las colecciones de Shopify, debes utilizar el ID de colección, que se encuentra en la URL cuando visualizas la colección. Por ejemplo, una URL https://admin.shopify.com/store/se-team-ecommerce/collections/470645342446 tiene el ID de colección 470645342446.
Personalización

Cuando hagas referencia a ID de colección en las selecciones de catálogo, utiliza solo el valor numérico del ID, sin los corchetes de matriz [] que aparecen en los datos del catálogo. Por ejemplo, si los ID de colección aparecen como [123456789012, 987654321098] en tu catálogo, escribe solo el ID numérico (como 470645342446) en el filtro de tu selección.
- Crea una selección de catálogo llamada “New Women’s Products - In Stock” filtrada por los productos que tengan el ID de esa colección. Solo puedes usar un campo de matriz único dentro de una misma selección de catálogo, y hasta 50 productos en tu colección.
- También puedes crear tus propias selecciones personalizadas filtrando con el campo Colecciones.

- En tu mensaje, inserta tu colección con plantillas utilizando la selección que creaste o haciendo referencia directamente a la colección. Por ejemplo, podrías usar un bloque de producto HTML como este:
{% catalog_selection_items se-team-ecommerce_shopify_catalog shopify_collection_womens_instock %}
{% if items[0] == blank %}
{% abort_message('Catalog selection returned no items') %}
{% endif %}
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">
{% for item in items %}
{% if forloop.index0 < 3 %}
{% assign title = item.product_title | default: '' %}
{% assign image_url = item.variant_image_url | default: '' %}
{% assign price = item.price | default: '' %}
{% assign url = item.product_url | default: '' %}
<tr>
<td width="200" valign="top" style="padding:12px 12px 12px 0;">
{% if image_url == blank %}
<div style="width:200px;height:200px;background:#f2f2f2;line-height:200px;text-align:center;font-family:Arial,sans-serif;font-size:12px;color:#666;">
No image
</div>
{% else %}
{% if url == blank %}
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
{% else %}
<a href="{{ url }}" style="text-decoration:none;">
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
</a>
{% endif %}
{% endif %}
</td>
<td valign="top" style="padding:12px 0;font-family:Arial,sans-serif;font-size:14px;line-height:20px;color:#111;">
{% if title != blank %}<div style="font-weight:600;">{{ title | escape }}</div>{% endif %}
{% if price != blank %}<div>Price: ${{ price }}</div>{% endif %}
{% if url != blank %}<div><a href="{{ url }}" style="color:#F84B09;">View product</a></div>{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</table>
O bien, si quieres mencionar productos nuevos específicos en una notificación push, puedes usar la herramienta Añadir personalización y especificar los artículos de tu catálogo.
Checkout the latest women's clothing:
{% catalog_selection_items se-team-ecommerce_shopify_catalog shopify_collection_womens_instock %}
{{ items[0].product_title}}{{items[0].price}}
{{ items[1].product_title}}{{items[1].price}}
{{ items[2].product_title}}{{items[2].price}}

Segmentación de catálogos (SQL)
Crea un Segment de usuarios que interactuaron con una colección. Utiliza las extensiones de segmento para crear Segments basados en la pertenencia a colecciones. Por ejemplo, para encontrar usuarios que compraron productos de una colección específica en el último año, utiliza esta consulta:
-- Description:
-- This query fetches users who have engaged with catalog items that contain a specific collection ID. It joins the catalog
-- to custom events by matching any element in an array within events.properties.products (e.g. any product
-- with variant_id equal to a catalog item), using Snowflake LATERAL FLATTEN to explode the array.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND
items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
and events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND (items.field_name = 'collection_ids' AND ARRAY_CONTAINS('<collection_ids_value>'::VARIANT, TRY_PARSE_JSON(items.field_value)));

¡También puedes configurar notificaciones de bajada de precio y notificaciones de reposición de existencias!
Ten en cuenta que, para cada caso de uso, debes crear un evento personalizado que capture el estado de suscripción de un usuario en tu catálogo. El evento personalizado requiere una propiedad de evento que se corresponda con el SKU o el ID de variante de Shopify que hayas seleccionado como parte de la sincronización de productos de Shopify.
Desactivar la sincronización de productos
Desactivar la característica de sincronización de productos de Shopify eliminará todo tu catálogo y productos. Esto también puede afectar a cualquier mensaje que pueda estar utilizando activamente los datos de producto de este catálogo. Confirma que has actualizado o pausado estas Campaigns o Canvas antes de la desactivación, ya que esto podría dar lugar al envío de mensajes sin detalles del producto. No elimines el catálogo de Shopify directamente en la página de catálogos.
Solución de problemas
Si la sincronización de productos de Shopify encuentra un error, puede deberse a alguno de los siguientes errores. Sigue las instrucciones para corregir el problema y resolver la sincronización:
| Error | Motivo | Solución |
|---|---|---|
| Error del servidor | Se produce si hay un error del servidor por parte de Shopify cuando intentamos sincronizar tus productos. | Desactiva la sincronización y vuelve a sincronizar todo tu inventario de productos. |
| SKU duplicado | Se produce si utilizas el SKU como ID de artículo del catálogo y varias variantes comparten el mismo SKU. Cada item_id del catálogo debe ser único, por lo que los artículos afectados pueden no sincronizarse, acumular registros de error o ver su información de producto sobrescrita de forma involuntaria. |
Revisa la lista completa de productos y variantes en Shopify para asegurarte de que no haya SKU duplicados. Si hay SKU duplicados, actualízalos para que sean SKU únicos solo en la cuenta de tu tienda de Shopify. Una vez corregido, desactiva la sincronización y vuelve a sincronizar todo tu inventario de productos. |
| Límite de catálogo superado | Se produce si superas el límite de tu catálogo. Braze no podrá finalizar la sincronización ni mantenerla activa porque no hay más espacio de almacenamiento disponible. | Hay dos soluciones para este problema: 1. Ponte en contacto con tu director de cuentas para mejorar tu nivel y aumentar el límite de tu catálogo. 2. Libera espacio de almacenamiento eliminando cualquiera de los siguientes elementos: - Artículos de otros catálogos - Otros catálogos - Selecciones creadas Después de aplicar cualquiera de las soluciones, debes desactivar la sincronización y volver a sincronizar. |
Para obtener más información sobre la validación de artículos del catálogo, consulta Solución de problemas en la documentación de la API de catálogos.





