Saltar al contenido principal

Visión general

Los Operadores de Tiempo te permiten enviar mensajes relativos a un momento específico en el tiempo—como después de que ocurra una acción o antes de una fecha próxima. Almacenas ese momento como una marca de tiempo Unix (en segundos) en el usuario usando una Etiqueta. OneSignal luego compara el tiempo actual con esa marca de tiempo y te permite dirigirte a usuarios basándote en cuánto tiempo ha pasado (o cuánto tiempo queda). Esto facilita automatizar mensajes como recordatorios, seguimientos y fechas límite sin programar mensajes manualmente. Casos de uso comunes:
  • Carrito abandonado: Recordar a usuarios que no han finalizado la compra después de cierto tiempo
  • Recordatorios de eventos: Enviar mensajes a usuarios antes de una cita programada o fecha de renovación
  • Hitos: Hacer seguimiento cuando los usuarios no han completado una acción antes de una fecha límite
  • Cumpleaños: Enviar mensajes automáticos en (o alrededor de) el cumpleaños de un usuario
Los Operadores de Tiempo solo están disponibles en planes de pago. Los planes gratuitos aún pueden usar filtros de segmentos basados en tiempo por defecto como Primera Sesión y Última Sesión.

¿Cuándo debería usar esto?

Usa los Operadores de Tiempo cuando quieras:
  • Enviar mensajes relativos a un evento, no en un tiempo de calendario fijo
  • Crear ventanas de tiempo móviles (por ejemplo, “24–48 horas después”)
  • Reutilizar la misma lógica para muchos usuarios con diferentes fechas
  • Evaluar continuamente la elegibilidad a medida que pasa el tiempo
Si necesitas disparar mensajería inmediatamente cuando ocurre un evento, considera usar Eventos Personalizados en su lugar.

Etiquetas vs Eventos Personalizados

Puedes resolver muchos casos de uso de “recordatorios” con Etiquetas o Eventos Personalizados. La mejor opción depende de lo que necesites almacenar y cómo quieras disparar la automatización.
  • Usa Etiquetas cuando quieras almacenar la última marca de tiempo conocida en el usuario y segmentar basándote en ese valor a lo largo del tiempo.
  • Usa Eventos Personalizados cuando quieras registrar cada ocurrencia de evento (con propiedades) y disparar Journeys basándote en comportamiento en tiempo real.
En la práctica, muchas implementaciones pueden usar ambos: Eventos Personalizados para seguimiento en tiempo real y Etiquetas para el estado del usuario que quieres segmentar más tarde.

Referencia rápida

  1. Convierte la fecha del evento a una marca de tiempo Unix en segundos.
  2. Establece una Etiqueta donde la clave sea el nombre del evento y el valor sea la marca de tiempo como cadena (ej., 'event_date': '1739145600').
  3. Crea un segmento usando el operador Time Elapsed Greater Than:
    • Después de una fecha pasada usando el operador Time Elapsed Greater Than con un valor positivo
    • Antes de una fecha futura usando el operador Time Elapsed Greater Than con un valor negativo
Un error común es establecer marcas de tiempo en milisegundos (13 dígitos) en lugar de segundos (10 dígitos).
Los Operadores de Tiempo requieren segundos.

Enviar mensajes después de un evento pasado

Usa este patrón cuando quieras enviar mensajes a usuarios después de que haya pasado cierto tiempo desde que algo ocurrió. Ejemplo: Recordatorio de carrito abandonado 24 horas después de que el usuario actualizó su carrito
1

Almacenar la marca de tiempo cuando ocurre el evento

Cuando el usuario actualiza su carrito, guarda el tiempo actual como una marca de tiempo Unix (en segundos):
// Ejemplo SDK
const timestampSeconds = String(Math.floor(Date.now() / 1000));
OneSignal.User.addTag("cart_updated_at", timestampSeconds);
Usa segundos (10 dígitos), no milisegundos (13 dígitos).
2

Crear un segmento

  1. Ve a Audience > Segments
  2. Agrega un filtro User Tag
  3. Establece Key como cart_updated_at
  4. Elige Time Elapsed Greater Than
  5. Establece Value como 1 día (o 24 horas o 86400 segundos)
Segmento usando Time Elapsed Greater Than
3

Agregar un límite superior (Recomendado)

Sin un límite superior, los usuarios permanecen en el segmento para siempre. Agrega un segundo filtro para crear una ventana:
  • Time Elapsed Greater Than 24 horas
  • Time Elapsed Less Than 48 horas
Ahora los usuarios solo están en el segmento entre 24-48 horas después del evento.
Segmento con ambos Time Elapsed Greater Than y Less Than
4

Usar el segmento en un Journey

Crea un Journey que se dirija a tu segmento para automatizar la mensajería.

Enviar mensajes antes de un evento futuro

Usa este patrón para enviar mensajes a usuarios antes de una fecha futura, como una cita o renovación.
  1. Almacena la fecha futura como una etiqueta de marca de tiempo Unix (ej., 'future_date': '1739145600')
  2. Crea un segmento con Time Elapsed Greater Than y tu tiempo de entrada deseado como un valor negativo
    • Ejemplo: -2 días (o -172800 segundos)
Segmento usando Time Elapsed Greater Than con un valor negativo
  1. Agrega un límite superior usando el mismo operador Time Elapsed Greater Than con un valor negativo de un tiempo más cercano
    • Ejemplo: -1 día (o -86400 segundos)
Segmento usando Time Elapsed Greater Than con un valor negativo y un límite superior

Ejemplo: Mensajes de cumpleaños

Envía mensajes de cumpleaños almacenando el próximo cumpleaños de cada usuario como una marca de tiempo.
1

Almacenar la marca de tiempo del próximo cumpleaños

Calcula y almacena el próximo cumpleaños del usuario:
function getNextBirthday(month, day) {
  // month: 0-11 (Jan=0), day: 1-31
  const now = new Date();
  let birthday = new Date(now.getFullYear(), month, day);
  
  if (birthday <= now) {
    birthday = new Date(now.getFullYear() + 1, month, day);
  }
  
  return String(Math.floor(birthday.getTime() / 1000));
}

// Ejemplo: cumpleaños del 15 de enero
OneSignal.User.addTag("birthday", getNextBirthday(0, 15));
2

Crear un segmento de cumpleaños

  • User Tag: birthday
  • Time Elapsed Greater Than: 0 segundos
Los usuarios ingresan al segmento una vez que pasa su marca de tiempo de cumpleaños.
Segmento de cumpleaños usando Time Elapsed Greater Than 0
3

Configurar un Journey recurrente

  1. Crea un Journey dirigido a tu segmento de cumpleaños
  2. Establece la reentrada a 52 semanas para que los usuarios puedan reingresar el próximo año
  3. Actualiza la etiqueta birthday a la fecha del próximo año después de enviar (en tu backend o Journey)
Calcula las marcas de tiempo de cumpleaños usando la zona horaria local del usuario cuando sea posible. Usar solo el tiempo del servidor puede hacer que los mensajes se envíen más temprano o más tarde de lo esperado.
Si quieres que los mensajes se mantengan precisos año tras año, actualiza la etiqueta birthday del usuario al próximo cumpleaños después de enviar el mensaje (por ejemplo, en tu backend o en un paso del Journey). Ten en cuenta que, si haces esto, puede ser más fácil usar Eventos Personalizados en su lugar.
Los mensajes de cumpleaños se enviarán a los usuarios alrededor de la fecha de su etiqueta birthday.

FAQ

¿Cómo funciona la matemática? (detalles técnicos)

Los Operadores de Tiempo existen para permitirte crear ventanas relativas y móviles en lugar de fechas fijas. OneSignal calcula el tiempo transcurrido usando esta fórmula:
time_elapsed = current_time - tag_timestamp
  • Marcas de tiempo pasadas → valores positivos
  • Marcas de tiempo futuras → valores negativos
Operadores:
  • Time Elapsed Greater Than X: coincide cuando elapsed > X
  • Time Elapsed Less Than X: coincide cuando elapsed < X
Por qué las marcas de tiempo futuras coinciden inmediatamente con Less Than: Cualquier número negativo es menor que cualquier número positivo. Por lo tanto time_elapsed_lt 2 days (172,800 segundos) coincidirá con una marca de tiempo 30 días en el futuro porque:
-2,592,000 < 172,800  →  true (coincide)
Como las marcas de tiempo futuras siempre producen tiempo transcurrido negativo, debes usar valores negativos para definir cuándo los usuarios deben ingresar y salir de segmentos antes de un evento próximo. Los valores positivos no pueden representar tiempo antes de una fecha futura.

¿Cómo puedo probar?

  1. Encuentra tu usuario mediante el ID Externo, ID de Suscripción, Email o número de teléfono. Consulta Encontrar y establecer suscripciones de prueba para detalles sobre encontrar tu usuario.
  2. Obtén una marca de tiempo en segundos de la fecha actual y una fecha futura (5 minutos desde ahora).
  3. Establece dos etiquetas con las claves ‘current_time’ y ‘future_time’ y los valores como las marcas de tiempo en segundos.
  4. Crea un segmento current_time con los siguientes filtros:
    • User Tag: current_time Time Elapsed Greater Than: 2 minutos
    • Y User Tag: current_time Time Elapsed Less Than: 5 minutos
  5. Crea un segmento future_time con los siguientes filtros:
    • User Tag: future_time Time Elapsed Greater Than: -5 minutos
    • Y User Tag: future_time Time Elapsed Less Than: -2 minutos
Deberías ver que tu usuario:
  • Ingresa al segmento current_time 2 minutos después de la fecha de tiempo actual y sale del segmento 5 minutos después de la fecha de tiempo actual.
  • Ingresa al segmento future_time 5 minutos antes de la fecha de tiempo futuro y sale del segmento 2 minutos antes de la fecha de tiempo futuro.