- Activa la entrada al Journey, o
- Coincide con una condición Wait Until dentro del Journey
Cómo funciona la personalización con Custom Events
Agrega propiedades de eventos a tus mensajes de Journey siguiendo estos pasos:Enviar un Custom Event con propiedades
Ejemplo de payload de Custom Events:
JSON
Referencia las propiedades del evento en las plantillas de mensajes de tu Journey
Usa sintaxis Liquid para acceder a las propiedades del evento.
Patrones comunes de acceso con Liquid
| Qué necesitas | Liquid | Resultado |
|---|---|---|
| Nombre del evento | {{ journey.first_event.name }} | purchase |
| Propiedad | {{ journey.first_event.properties.item }} | Blue Sweater |
| Propiedades anidadas | {{ journey.first_event.properties.details.first.manufacturer }} | Company A |
| Propiedad con caracteres especiales | {{ journey.last_event.properties["order status"] }} | pending |
| Marca de tiempo | {{ journey.last_event.timestamp | date: "%B %d, %Y at %I:%M %p" }} | October 21, 2025 at 07:09 PM |
Patrones de acceso Liquid anidados
También puedes acceder a propiedades anidadas usando notación de punto y corchetes:Liquid
Crear un Journey
Configura el Journey para usar el Custom Event como regla de entrada y/o condición Wait Until.
- Consulta Configuración de Journeys para las reglas de entrada.
- Consulta Acciones de Journeys para las condiciones Wait Until.
Reglas de almacenamiento de propiedades de eventos
- Puedes usar múltiples eventos en tu Journey combinando reglas de entrada y pasos Wait Until.
- Máximo: 100 propiedades de eventos almacenadas por usuario por instancia de Journey (las más antiguas se eliminan).
- Las propiedades de eventos se almacenan por usuario, por instancia de Journey.
- Los eventos enviados antes de la entrada no son accesibles.
- Las propiedades de eventos se borran cuando el usuario sale del Journey.
Referencia Liquid de Custom Events
Usa estos objetos para acceder a los eventos almacenados dentro del Journey.journey.first_event
El primer evento almacenado para esta instancia de Journey.
- Si usas una regla de entrada de Custom Event, este es el evento que causó la entrada al Journey.
- Si no usas una regla de entrada de Custom Event, este es el primer evento almacenado al coincidir con una condición Wait Until.
Liquid
journey.last_event
El evento almacenado más reciente para esta instancia de Journey.
- Si solo hay un evento almacenado,
first_eventylast_eventdevuelven lo mismo.
Liquid
journey.event.EVENT_NAME
El evento almacenado más reciente con un nombre específico.Si el nombre de tu evento incluye espacios o caracteres especiales, usa notación de corchetes.Ejemplo de evento:
- Reemplaza
EVENT_NAMEcon el nombre de tu evento (por ejemplo,purchase). - Si el mismo nombre de evento se usa varias veces, esto devuelve la instancia más reciente.
Liquid
"name": "order status"Liquid
Todos los eventos almacenados para esta instancia de Journey, en el orden en que fueron almacenados.
- Usa bucles for para iterar sobre ellos.
Liquid
journey.first_eventes una abreviación dejourney.all_events[0].journey.last_eventes una abreviación del evento más reciente en el array.
Ejemplo: Plantillas de carrito abandonado usando Custom Events
Este ejemplo muestra cómo personalizar mensajes de carrito abandonado usando Custom Events. Se basa en el tutorial de Carrito abandonado. Conjunto de Custom Events de ejemplo:JSON
Plantilla de correo electrónico
Este ejemplo muestra cómo crear una plantilla de correo electrónico que muestra:- La cantidad de artículos en el carrito
- Cada producto con imagen, nombre, cantidad y precio usando un bucle for
- Un botón que enlaza a la URL única del carrito del cliente

Crear la plantilla de correo electrónico
Navega a Messages > Templates > New Email Template y abre el editor de arrastrar y soltar.
Agregar la estructura del diseño
Crea cinco filas:
- Filas 1, 2 y 4: una columna con un bloque Paragraph
- Fila 3: cuatro columnas con HTML | Paragraph | Paragraph | Paragraph
- Fila 5: una columna con un bloque Button

Mostrar la cantidad de artículos
En la fila 1, agrega:Para una mejor gramática, podrías usar un condicional para decir “1 item” vs “2 items”, pero para correos de carrito abandonado, el plural generalmente es aceptable.
Liquid
Liquid
Iniciar el bucle for
Usa un bucle for para repetir la fila de visualización del producto para cada artículo del carrito.En la fila 2 (inicio del bucle), agrega:Qué hace esto:
Liquid
- Inicia un bucle que itera sobre cada objeto en el array
cart - Crea una variable temporal
productque representa el artículo actual - Todo lo que está entre
{% for %}y{% endfor %}se repite una vez por cada artículo del carrito - Puedes nombrar
productcomo quieras (por ejemplo,item,cartItem), solo mantén la consistencia
Mostrar los detalles del producto
Esta fila de 4 columnas muestra imagen, nombre, cantidad y precio. Como está dentro del bucle, se repite para cada artículo del carrito.En la fila 3 (detalles del producto), configura:Columna 1 - Bloque HTML (imagen del producto):Columnas 2–4 - Bloques de texto (nombre del producto, cantidad, precio):
- Columna 2:
{{product.product_name}} - Columna 3:
{{product.product_quantity}} - Columna 4:
{{product.product_price}}
- En la primera iteración,
product= primer objeto en el array del carrito {{product.product_image}}obtiene la imagen del primer artículo- En la segunda iteración,
product= segundo objeto - La fila se repite automáticamente para todos los artículos del carrito
Cerrar el bucle for
Cierra el bucle para marcar dónde termina la repetición.En la fila 4 (fin del bucle), agrega:
Liquid
Cada
{% for %} debe tener un {% endfor %} correspondiente. Si falta, el renderizado del correo electrónico se romperá.Agregar el botón con la URL del carrito
En el bloque Button de la fila 5, establece la URL de acción en:
Liquid

Probar la plantilla
- Agrega la plantilla a un Journey en blanco y establece la regla de entrada a un Custom Event.
- Habilita el Journey e ingrésate a ti mismo a través de la API de Custom Events.
- Verifica que los datos se muestren correctamente.
Ahora puedes aplicar tu propio estilo a la plantilla. Consulta Diseñar correos electrónicos con arrastrar y soltar.
Plantilla de push
Las notificaciones push tienen espacio limitado, así que muestra un artículo y menciona la cantidad total. Campo de mensaje: Muestra el artículo y la cantidad con gramática correcta usando declaraciones condicionales.Liquid
Liquid
Liquid

Ahora puedes crear más plantillas y usarlas en el Journey de carrito abandonado.
Solución de problemas y mejores prácticas
Errores comunes:| Error | Por qué falla | Sintaxis correcta |
|---|---|---|
{{ journey.first_event.item }} | Falta .properties | {{ journey.first_event.properties.item }} |
{{ journey.event.purchase.item }} | Falta .properties | {{ journey.event.purchase.properties.item }} |
{{ journey.first_event.properties.Item }} | Mayúsculas incorrectas (debe ser item) | {{ journey.first_event.properties.item }} |
{{ event.properties.item }} | Falta el prefijo journey. | {{ journey.first_event.properties.item }} |
- Siempre prueba las plantillas antes de ponerlas en producción
- Usa filtros default para propiedades opcionales
- Valida que el esquema del evento coincida con las expectativas de la plantilla
Páginas relacionadas
Personalización de mensajes
Resumen de todas las opciones de personalización en OneSignal, incluyendo cuándo usar Custom Events vs otros métodos.
Custom Events
Guía completa para implementar y enviar Custom Events a través de SDK o API.
Resumen de Journeys
Aprende cómo crear flujos de trabajo de mensajería automatizados con disparadores, condiciones y acciones.
Configuración de Journeys
Configura reglas de entrada activadas por eventos y el comportamiento de Journeys.
Acciones Wait Until
Usa nodos Wait Until para almacenar eventos adicionales durante la progresión del Journey.
Uso de sintaxis Liquid
Referencia completa de Liquid con filtros, condicionales, bucles y manipulación de cadenas.
Templates
Crea y gestiona plantillas de mensajes reutilizables para usar en Journeys.
¿Necesita ayuda?Chatee con nuestro equipo de Soporte o envíe un correo electrónico a
support@onesignal.comPor favor incluya:- Detalles del problema que está experimentando y pasos para reproducir si están disponibles
- Su ID de aplicación de OneSignal
- El ID externo o ID de suscripción si corresponde
- La URL del mensaje que probó en el panel de OneSignal si corresponde
- Cualquier registro o mensaje de error relevante