Saltar al contenido principal
Si estás utilizando Snowflake con la integración heredada de OneSignal, consulta la guía de Integración heredada de Snowflake.

Descripción general de la integración de OneSignal Snowflake


Descripción general

La integración de OneSignal + Snowflake admite dos potentes canales de datos:
  • Exportar: Envía automáticamente datos de eventos de mensajería (push, correo electrónico, SMS, in-app) desde OneSignal a Snowflake para análisis y generación de informes.
  • Importar: Sincroniza eventos de usuario personalizados desde tus conjuntos de datos de Snowflake a OneSignal para activar Journeys automatizados y mensajería personalizada.
Juntas, estas integraciones te brindan control total sobre los datos de participación del usuario, lo que impulsa análisis avanzados y mensajería en tiempo real impulsada por el comportamiento.

Exportar eventos de OneSignal a Snowflake

Envía eventos de rendimiento y participación de mensajería (p. ej., envíos, aperturas, clics) a Snowflake para:
  • Crear paneles e informes personalizados
  • Rastrear tendencias de entrega y participación entre canales
  • Combinar datos de OneSignal con otros datos comerciales para análisis
Requisitos
  • Plan Professional de OneSignal (no disponible en aplicaciones gratuitas)
  • Cuenta de Snowflake
  • Rol SECURITYADMIN o ACCOUNTADMIN en Snowflake (para configuración)
Pasos de configuración

1. Recopila los detalles de tu cuenta de Snowflake

Antes de configurar la integración, recopila la siguiente información de tu cuenta de Snowflake:
  • Host de Snowflake: La URL de tu cuenta en el formato <account_identifier>.snowflakecomputing.com
  • Nombre de la base de datos: La base de datos donde OneSignal escribirá los datos de eventos
  • Nombre del esquema: El esquema dentro de la base de datos para las tablas de OneSignal (esto será creado automáticamente por OneSignal)
  • Nombre del almacén: El almacén a utilizar para operaciones de carga de datos

Ubicación del identificador de cuenta de Snowflake

2. Ejecuta el script de configuración en Snowflake

Ejecuta el siguiente script SQL en tu almacén de Snowflake para crear el rol, usuario, almacén y base de datos necesarios para OneSignal:
begin;

   -- create variables for user / role / warehouse / database (needs to be uppercase for objects)
   set role_name = 'ONESIGNAL_ROLE';
   set user_name = 'ONESIGNAL_USER';
   set warehouse_name = 'ONESIGNAL_WAREHOUSE';
   set database_name = 'ONESIGNAL';

   -- change role to securityadmin for user / role steps
   use role securityadmin;

   -- create role for onesignal
   create role if not exists identifier($role_name);
   grant role identifier($role_name) to role SYSADMIN;

   -- create a user for onesignal
   create user if not exists identifier($user_name)
   default_role = $role_name
   default_warehouse = $warehouse_name;

   grant role identifier($role_name) to user identifier($user_name);

   -- set binary_input_format to BASE64
   ALTER USER identifier($user_name) SET BINARY_INPUT_FORMAT = 'BASE64';

   -- set timestamp_input_format to AUTO for the user
   ALTER USER identifier($user_name) SET TIMESTAMP_INPUT_FORMAT = 'AUTO';

   -- change role to sysadmin for warehouse / database steps
   use role sysadmin;

   -- create a warehouse for onesignal
   create warehouse if not exists identifier($warehouse_name)
   warehouse_size = xsmall
   warehouse_type = standard
   auto_suspend = 60
   auto_resume = true
   initially_suspended = true;

   -- create database for onesignal
   create database if not exists identifier($database_name);

   -- grant onesignal role access to warehouse
   grant USAGE
   on warehouse identifier($warehouse_name)
   to role identifier($role_name);

   -- grant onesignal access to database
   grant CREATE SCHEMA, MONITOR, USAGE
   on database identifier($database_name)
   to role identifier($role_name);

 commit;
Puedes personalizar los valores de las variables en la parte superior del script para que coincidan con tus convenciones de nomenclatura. Si estás utilizando un almacén o base de datos existentes, modifica el script en consecuencia.

3. Genera un par de claves para autenticación

OneSignal requiere autenticación de par de claves para un acceso seguro a tu cuenta de Snowflake. Sigue estos pasos para generar y configurar las claves:
1

Genera una clave privada

Ejecuta uno de los siguientes comandos para generar una clave privada:Clave privada sin cifrar (más simple, pero menos segura):
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Clave privada cifrada (recomendado para producción):
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes256 -inform PEM -out rsa_key.p8
Si utilizas una clave cifrada, se te pedirá que crees una frase de contraseña. Guarda esta frase de contraseña de forma segura: la necesitarás al configurar OneSignal.
2

Genera la clave pública

Genera la clave pública a partir de tu clave privada:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
3

Asigna la clave pública a tu usuario de Snowflake

Copia el contenido del archivo de clave pública (excluyendo las líneas de encabezado y pie de página), luego ejecuta este comando SQL en Snowflake:
ALTER USER ONESIGNAL_USER SET RSA_PUBLIC_KEY='<YOUR_PUBLIC_KEY_CONTENT>';
Reemplaza <YOUR_PUBLIC_KEY_CONTENT> con el contenido de la clave (sin las líneas -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----).
Almacena tu archivo de clave privada de forma segura. Necesitarás proporcionarlo a OneSignal en el siguiente paso. Nunca compartas tu clave privada públicamente ni la confirmes en el control de versiones.

4. Conecta OneSignal

1

Activa la integración

En OneSignal, navega a Data > Integrations > Snowflake.
2

Ingresa los detalles

  • Host: <your_account>.snowflakecomputing.com
  • Base de datos: p. ej., ONESIGNAL
  • Esquema
  • Tabla: p. ej., message_events
  • Usuario: ONESIGNAL_USER (o el nombre de usuario que creaste)
  • Clave privada: Pega el contenido de tu archivo de clave privada (rsa_key.p8)
  • Frase de contraseña de clave privada (opcional, solo si tu clave privada está cifrada)
3

Configura la integración

  • Frecuencia de sincronización: tan frecuente como cada 15 minutos
  • Nombres de esquema/tabla: preestablecidos como onesignal_events_<app-id> y message_events (editable)
  • Tipos de eventos: elige cuáles sincronizar: selecciona todos o solo los que necesitas
4

Selecciona eventos

Selecciona los eventos que deseas recibir en tu almacén de Snowflake.
5

Completa la configuración

Haz clic en Save y espera la confirmación de éxito
La sincronización de datos inicial puede tardar entre 15 y 30 minutos en aparecer en Snowflake.Mientras esperas, envía mensajes a través de push, correo electrónico, in-app o SMS para activar los eventos seleccionados.

5. Ver datos en Snowflake

Una vez que se complete la sincronización inicial, consulta los datos de eventos de OneSignal:
-- View recent message events
SELECT *
FROM <your-database>.<your-schema>.message_events
ORDER BY _CREATED DESC
LIMIT 100;
Si encuentras problemas como esquemas faltantes, errores de permisos o eventos con formato incorrecto, contacta a [email protected].

Eventos y propiedades de mensajes

Tipos de eventos de mensajes

Propiedad: event_kind Tipo: String El tipo de mensaje y evento (por ejemplo, message.push.received, message.push.sent).
Evento de mensaje (OneSignal)event_kindDescripción
Push enviadomessage.push.sentNotificación push enviada exitosamente.
Push recibidomessage.push.receivedPush entregado (ver Entrega confirmada).
Push clicmessage.push.clickedEl usuario hizo clic en el push.
Push fallidomessage.push.failedFallo de entrega. Ver informes de mensajes.
Push dado de bajamessage.push.unsubscribedEl usuario se dio de baja del push.
Impresión in-appmessage.iam.displayedMensaje in-app mostrado.
In-app clicmessage.iam.clickedMensaje in-app clicado.
Página in-app vistamessage.iam.pagedisplayedPágina in-app mostrada.
Email enviadomessage.email.sentEmail entregado.
Email recibidomessage.email.receivedEmail aceptado por el servidor de correo del destinatario.
Email abiertomessage.email.openedEmail abierto. Ver Informes de email.
Enlace de email clicadomessage.email.clickedEnlace en el email clicado.
Email dado de bajamessage.email.unsubscribedDestinatario dado de baja.
Email marcado como spammessage.email.resporedasspamMarcado como spam. Ver Entregabilidad de email.
Email rebotadomessage.email.hardbouncedRebote debido a fallo de entrega permanente.
Email fallidomessage.email.failedEntrega fallida.
Email suprimidomessage.email.supressedSuprimido debido a lista de supresión.
SMS enviadomessage.sms.sentSMS enviado.
SMS entregadomessage.sms.deliveredSMS entregado exitosamente.
SMS fallidomessage.sms.failedSMS falló al entregar.
SMS no entregadomessage.sms.undeliveredSMS rechazado o inalcanzable.

Esquema de datos de eventos

Para cada evento de mensaje generado por un usuario, los siguientes metadatos se adjuntarán al registro.
Nombre de columnaTipoDescripción
event_idUUIDIdentificador único del evento
event_timestampTimestampHora de ocurrencia del evento
event_kindStringEl Tipo de evento
subscription_device_typeStringTipo de dispositivo (por ejemplo, iOS, Android, Web, Email, SMS)
languageStringCódigo de idioma de suscripción
versionStringVersión de integración
device_osStringVersión del sistema operativo del dispositivo
device_typeNumberTipo de dispositivo numérico
tokenStringToken push, número de teléfono o email
subscription_idUUIDID de suscripción
subscribedBooleanEstado de suscripción
onesignal_idUUIDID de usuario de OneSignal
last_activeStringMarca de tiempo de última actividad
sdkStringVersión del SDK de OneSignal
external_idStringID de usuario externo que debe coincidir con el ID de usuario de integración
app_idUUIDID de aplicación de OneSignal
template_idUUIDID de plantilla (si aplica)
message_idUUIDID de lote/solicitud de mensaje
message_nameStringNombre del mensaje
message_titleStringTítulo del mensaje (solo en inglés)
message_contentsStringCuerpo del mensaje truncado (solo en inglés)
_created, _id, _index, _fivetran_syncedUso internoMetadatos de sincronización de Fivetran

Notas

  • Las sincronizaciones después de guardar/activar pueden tardar de 15 a 30 minutos adicionales en completarse.
  • Desactivar aún puede resultar en una sincronización final después de la desactivación.
  • Para garantizar una sincronización de datos eficiente, nuestro sistema crea y gestiona automáticamente conjuntos de datos de preparación. Estos conjuntos de datos, nombrados con un patrón como fivetran_{dos palabras aleatorias}_staging, almacenan temporalmente datos durante el procesamiento antes de que se integren en su esquema principal. Estos conjuntos de datos de preparación son esenciales para mantener un flujo de trabajo optimizado y no deben eliminarse, ya que se recrearán automáticamente.

Importar eventos desde Snowflake

Envía datos de eventos de comportamiento desde Snowflake a OneSignal para:
  • Activar Journeys basados en la actividad del usuario
  • Personalizar mensajes basados en datos de comportamiento
Requisitos
  • Cuenta de Snowflake con acceso al almacén
  • Datos de eventos almacenados en tablas o vistas de Snowflake
  • Conectividad de red desde OneSignal a tu instancia de Snowflake
  • Credenciales de usuario con los permisos apropiados
Pasos de configuración
1

Crear rol dedicado para OneSignal

Crea una jerarquía de roles siguiendo las mejores prácticas de Snowflake:
-- Create a role for the census user
CREATE ROLE CENSUS_ROLE;

-- Ensure the sysadmin role inherits any privileges the census role is granted
GRANT ROLE CENSUS_ROLE TO ROLE SYSADMIN;
2

Crear almacén dedicado

Crea un almacén optimizado en costos para las operaciones de OneSignal:
-- Create a warehouse for the census role, optimizing for cost over performance
CREATE WAREHOUSE CENSUS_WAREHOUSE WITH
    WAREHOUSE_SIZE = XSMALL
    AUTO_SUSPEND = 60
    AUTO_RESUME = TRUE
    INITIALLY_SUSPENDED = FALSE;

GRANT USAGE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT OPERATE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
GRANT MONITOR ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
3

Crear usuario y otorgar permisos

Crea el usuario de OneSignal y otorga acceso a tus datos de eventos:
-- Create the census user
CREATE USER CENSUS WITH
    DEFAULT_ROLE = CENSUS_ROLE
    DEFAULT_WAREHOUSE = CENSUS_WAREHOUSE
    PASSWORD = '<strong-unique-password>';

GRANT ROLE CENSUS_ROLE TO USER CENSUS;

-- Grant access to your event data (replace with your actual database/schema)
GRANT USAGE ON DATABASE "<your-database>" TO ROLE CENSUS_ROLE;
GRANT USAGE ON SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON ALL VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
GRANT SELECT ON FUTURE VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
4

Crear base de datos de contabilidad (Motor de sincronización avanzado)

Crea una base de datos privada para la gestión del estado de sincronización de OneSignal:
-- Create a private bookkeeping database
CREATE DATABASE "CENSUS";
GRANT ALL PRIVILEGES ON DATABASE "CENSUS" TO ROLE CENSUS_ROLE;

CREATE SCHEMA "CENSUS"."CENSUS";
GRANT ALL PRIVILEGES ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
GRANT CREATE STAGE ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
Omite este paso si utilizas el motor de sincronización básico o el modo de solo lectura.
5

Configurar autenticación

Configura la autenticación de par de claves (recomendado) para mayor seguridad:
  1. Genera un par de claves pública/privada siguiendo la documentación de Snowflake
  2. Configura la clave pública en tu usuario de Snowflake
  3. Usa la clave privada en la configuración de conexión de OneSignal
Alternativamente, puedes usar autenticación por contraseña (obsoleto - se bloqueará en noviembre de 2025).
6

Conectar a OneSignal

En OneSignal, vaya a Datos > Integraciones y haga clic en Agregar integración.Selecciona Snowflake y proporciona los siguientes detalles de conexión:
  • Nombre de cuenta: Tu identificador de cuenta de Snowflake (p. ej., abc123.us-east-1)
  • Almacén: CENSUS_WAREHOUSE
  • Usuario: CENSUS
  • Base de datos: El nombre de tu base de datos de eventos
  • Esquema: El nombre de tu esquema de datos de eventos
  • Autenticación: Par de claves (proporciona la clave privada y la frase de contraseña opcional)

Mapeo de datos de eventos

Mapee su de al formato de eventos personalizados de OneSignal:
Campo de OneSignalDescripciónRequerido
nameevent_nameIdentificador de evento
external_iduser_idIdentificador de usuario
timestampevent_timestampCuándo ocurrió el eventoNo
propertiesevent_dataNo

Esquema de tabla de eventos de ejemplo

-- Example Snowflake event table
CREATE TABLE analytics.user_events (
    event_id STRING,
    event_name STRING NOT NULL,
    user_id STRING NOT NULL,
    event_timestamp TIMESTAMP_TZ DEFAULT CURRENT_TIMESTAMP(),
    event_properties VARIANT,
    session_id STRING,
    device_type STRING
);

Modo de consulta SQL

Escribe consultas SQL personalizadas para transformar tus datos de eventos:
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, CURRENT_TIMESTAMP())
    AND event_properties:value::NUMBER > 100
ORDER BY event_timestamp DESC;

Configuración avanzada

Gestión de costos del almacén

  • Usa tamaño de almacén X-Small para optimización de costos
  • Configura suspensión automática (60 segundos) y reanudación automática
  • Programa sincronizaciones durante horas de menor actividad
  • Considera compartir el almacén con otros sistemas de procesamiento por lotes

Soporte de sincronizaciones en vivo

Para el procesamiento de eventos en tiempo real, habilita el seguimiento de cambios en tus tablas de eventos:
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;

Seguridad de red

Si utilizas la política de red de IPs permitidas de Snowflake, agrega las direcciones IP de OneSignal a tu lista de permitidos. Contacta al soporte de OneSignal para conocer los rangos de IP actuales.

Limitaciones

  • Las consultas analíticas complejas pueden afectar el rendimiento y los costos del almacén
  • La autenticación por Usuario/Contraseña quedará obsoleta en noviembre de 2025
  • La base de datos CENSUS está reservada solo para operaciones de OneSignal

Preguntas frecuentes

¿Qué método de autenticación debo usar?

Usa autenticación de par de claves (recomendado). La autenticación por Usuario/Contraseña será bloqueada por Snowflake a partir de noviembre de 2025.

¿Puedo usar un almacén existente?

Sí, puedes compartir un almacén con otros sistemas de procesamiento por lotes como dbt o Fivetran para optimizar costos. Asegúrate de que el almacén tenga capacidad suficiente para tus necesidades de procesamiento de eventos.

¿Cómo puedo optimizar los costos?

  • Usa tamaño de almacén X-Small
  • Configura suspensión automática agresiva (60 segundos)
  • Programa sincronizaciones durante horas de menor actividad
  • Usa sincronizaciones por hora/diarias en lugar de sincronización continua