Pular para o conteúdo principal
Se você estiver usando o Snowflake com a integração legada do OneSignal, consulte o guia Integração Legada do Snowflake.

Visão geral da integração OneSignal Snowflake


Visão geral

A integração OneSignal + Snowflake suporta dois pipelines de dados poderosos:
  • Exportação: Envie automaticamente dados de eventos de mensagens (push, e-mail, SMS, in-app) do OneSignal para o Snowflake para análise e relatórios.
  • Importação: Sincronize eventos personalizados de usuários dos seus conjuntos de dados do Snowflake para o OneSignal para acionar Jornadas automatizadas e mensagens personalizadas.
Juntas, essas integrações oferecem controle completo sobre os dados de engajamento do usuário—alimentando análises avançadas e mensagens em tempo real baseadas em comportamento.

Exportar eventos do OneSignal para o Snowflake

Envie eventos de desempenho e engajamento de mensagens (por exemplo, envios, aberturas, cliques) para o Snowflake para:
  • Criar dashboards e relatórios personalizados
  • Rastrear tendências de entrega e engajamento em todos os canais
  • Combinar dados do OneSignal com outros dados de negócios para análise
Requisitos
  • OneSignal Plano Professional (não disponível em aplicativos gratuitos)
  • Conta Snowflake
  • Função SECURITYADMIN ou ACCOUNTADMIN no Snowflake (para configuração)
Etapas de configuração

1. Reúna os detalhes da sua conta Snowflake

Antes de configurar a integração, colete as seguintes informações da sua conta Snowflake:
  • Snowflake Host: A URL da sua conta no formato <account_identifier>.snowflakecomputing.com
  • Nome do banco de dados: O banco de dados onde o OneSignal gravará os dados de eventos
  • Nome do schema: O schema dentro do banco de dados para as tabelas do OneSignal (será criado automaticamente pelo OneSignal)
  • Nome do warehouse: O warehouse a ser usado para operações de carregamento de dados

Localização do identificador da conta Snowflake

2. Execute o script de configuração no Snowflake

Execute o seguinte script SQL no seu warehouse Snowflake para criar a função, o usuário, o warehouse e o banco de dados necessários para o 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;
Você pode personalizar os valores das variáveis no topo do script para corresponder às suas convenções de nomenclatura. Se você estiver usando um warehouse ou banco de dados existente, modifique o script de acordo.

3. Gere o par de chaves para autenticação

O OneSignal requer autenticação por par de chaves para acesso seguro à sua conta Snowflake. Siga estas etapas para gerar e configurar as chaves:
1

Gere uma chave privada

Execute um dos seguintes comandos para gerar uma chave privada:Chave privada não criptografada (mais simples, mas menos segura):
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Chave privada criptografada (recomendado para produção):
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes256 -inform PEM -out rsa_key.p8
Se usar uma chave criptografada, você será solicitado a criar uma frase secreta. Salve esta frase secreta com segurança—você precisará dela ao configurar o OneSignal.
2

Gere a chave pública

Gere a chave pública a partir da sua chave privada:
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
3

Atribua a chave pública ao seu usuário Snowflake

Copie o conteúdo do arquivo de chave pública (excluindo as linhas de cabeçalho e rodapé) e execute este comando SQL no Snowflake:
ALTER USER ONESIGNAL_USER SET RSA_PUBLIC_KEY='<YOUR_PUBLIC_KEY_CONTENT>';
Substitua <YOUR_PUBLIC_KEY_CONTENT> pelo conteúdo da chave (sem as linhas -----BEGIN PUBLIC KEY----- e -----END PUBLIC KEY-----).
Armazene seu arquivo de chave privada com segurança. Você precisará fornecê-lo ao OneSignal na próxima etapa. Nunca compartilhe sua chave privada publicamente ou a envie para controle de versão.

4. Conecte o OneSignal

1

Ative a integração

No OneSignal, navegue até Data > Integrations > Snowflake.
2

Insira os detalhes

  • Host: <your_account>.snowflakecomputing.com
  • Database: por exemplo, ONESIGNAL
  • Schema
  • Table: por exemplo, message_events
  • User: ONESIGNAL_USER (ou o nome de usuário que você criou)
  • Private Key: Cole o conteúdo do seu arquivo de chave privada (rsa_key.p8)
  • Private Key Passphrase (opcional, somente se sua chave privada estiver criptografada)
3

Configure a integração

  • Sync Frequency: com frequência de até a cada 15 minutos
  • Schema/Table Names: pré-definidos como onesignal_events_<app-id> e message_events (editável)
  • Event Types: escolha quais sincronizar—selecione todos ou apenas o que você precisa
4

Selecione eventos

Selecione os eventos que você deseja receber no seu warehouse Snowflake.
5

Conclua a configuração

Clique em Save e aguarde a confirmação de sucesso
A sincronização inicial de dados pode levar de 15 a 30 minutos para aparecer no Snowflake.Enquanto espera, envie mensagens por push, e-mail, in-app ou SMS para acionar os eventos selecionados.

5. Visualize dados no Snowflake

Depois que a sincronização inicial for concluída, consulte seus dados de eventos do OneSignal:
-- View recent message events
SELECT *
FROM <your-database>.<your-schema>.message_events
ORDER BY _CREATED DESC
LIMIT 100;
Se você encontrar problemas como schemas ausentes, erros de permissão ou eventos malformados, entre em contato com [email protected].

Eventos e propriedades de mensagem

Tipos de evento de mensagem

Propriedade: event_kind Tipo: String O tipo de mensagem e evento (por exemplo, message.push.received, message.push.sent).
Evento de Mensagem (OneSignal)event_kindDescrição
Push Sentmessage.push.sentNotificação push enviada com sucesso.
Push Receivedmessage.push.receivedPush entregue (veja Entrega Confirmada).
Push Clickedmessage.push.clickedUsuário clicou no push.
Push Failedmessage.push.failedFalha de entrega. Veja relatórios de mensagens.
Push Unsubscribedmessage.push.unsubscribedUsuário cancelou inscrição de push.
In-App Impressionmessage.iam.displayedMensagem in-app mostrada.
In-App Clickedmessage.iam.clickedMensagem in-app clicada.
In-App Page Viewedmessage.iam.pagedisplayedPágina in-app mostrada.
Email Sentmessage.email.sentEmail entregue.
Email Receivedmessage.email.receivedEmail aceito pelo servidor de email do destinatário.
Email Openedmessage.email.openedEmail aberto. Veja Relatórios de Email.
Email Link Clickedmessage.email.clickedLink no email clicado.
Email Unsubscribedmessage.email.unsubscribedDestinatário cancelou inscrição.
Email Marked Spammessage.email.resporedasspamMarcado como spam. Veja Deliverability de Email.
Email Bouncedmessage.email.hardbouncedBounce devido a falha permanente de entrega.
Email Failedmessage.email.failedEntrega falhou.
Email Suppressedmessage.email.supressedSuprimido devido a lista de supressão.
SMS Sentmessage.sms.sentSMS enviado.
SMS Deliveredmessage.sms.deliveredSMS entregue com sucesso.
SMS Failedmessage.sms.failedSMS falhou ao entregar.
SMS Undeliveredmessage.sms.undeliveredSMS rejeitado ou inalcançável.

Schema de dados de evento

Para cada evento de mensagem gerado por um usuário, os seguintes metadados serão anexados ao registro.
Nome da ColunaTipoDescrição
event_idUUIDIdentificador único para o evento
event_timestampTimestampHorário de ocorrência do evento
event_kindStringO Tipo de Evento
subscription_device_typeStringTipo de dispositivo (por exemplo, iOS, Android, Web, Email, SMS)
languageStringCódigo de idioma da inscrição
versionStringVersão da integração
device_osStringVersão do sistema operacional do dispositivo
device_typeNumberTipo de dispositivo numérico
tokenStringToken push, número de telefone ou email
subscription_idUUIDID da inscrição
subscribedBooleanStatus da inscrição
onesignal_idUUIDID de usuário OneSignal
last_activeStringTimestamp da última atividade
sdkStringVersão do SDK OneSignal
external_idStringID de usuário externo que deve corresponder ao ID de usuário da integração
app_idUUIDApp ID do OneSignal
template_idUUIDTemplate ID (se aplicável)
message_idUUIDID de lote/requisição de mensagem
message_nameStringNome da mensagem
message_titleStringTítulo da mensagem (apenas em inglês)
message_contentsStringCorpo da mensagem truncado (apenas em inglês)
_created, _id, _index, _fivetran_syncedUso internoMetadados de sincronização Fivetran

Notas

  • Sincronizações após salvar/ativar podem levar 15-30 minutos adicionais para completar.
  • Desativar ainda pode resultar em uma sincronização final após desativação.
  • Para garantir sincronização eficiente de dados, nosso sistema cria e gerencia automaticamente datasets de staging. Estes datasets, nomeados com um padrão como fivetran_{duas palavras aleatórias}_staging, armazenam temporariamente dados durante o processamento antes de serem integrados ao seu schema principal. Estes datasets de staging são essenciais para manter um fluxo de trabalho otimizado e não devem ser deletados, pois serão automaticamente recriados.

Importar eventos do Snowflake

Envie dados de eventos comportamentais do Snowflake para o OneSignal para:
  • Acionar Jornadas com base na atividade do usuário
  • Personalizar mensagens com base em dados comportamentais
Requisitos
  • Acesso a Event Streams para eventos de mensagem de saída (Limitações de plano e excedentes se aplicam)
  • Acesso a Custom Events para sincronização de eventos de entrada (Limitações de plano e excedentes se aplicam)
  • Plano de Conta Atualizado (não disponível em apps gratuitos)
  • Conta Snowflake com acesso ao warehouse
  • Dados de eventos armazenados em tabelas ou visualizações do Snowflake
  • Conectividade de rede do OneSignal para sua instância Snowflake
  • Credenciais de usuário com permissões apropriadas
Etapas de configuração
1

Criar função dedicada para o OneSignal

Crie uma hierarquia de funções seguindo as melhores práticas do 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

Criar warehouse dedicado

Crie um warehouse com custo otimizado para operações do 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

Criar usuário e conceder permissões

Crie o usuário do OneSignal e conceda acesso aos seus dados 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

Criar banco de dados de contabilidade (Advanced Sync Engine)

Crie um banco de dados privado para gerenciamento de estado de sincronização do 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;
Pule esta etapa se estiver usando o Basic Sync Engine ou modo somente leitura.
5

Configurar autenticação

Configure a autenticação por par de chaves (recomendado) para maior segurança:
  1. Gere um par de chaves pública/privada seguindo a documentação do Snowflake
  2. Configure a chave pública no seu usuário Snowflake
  3. Use a chave privada nas configurações de conexão do OneSignal
Como alternativa, você pode usar autenticação por senha (obsoleto - será bloqueado em novembro de 2025).
6

Conectar ao OneSignal

No OneSignal, vá para Data > Integrations e clique em Add Integration.Selecione Snowflake e forneça os seguintes detalhes de conexão:
  • Account Name: Seu identificador de conta Snowflake (por exemplo, abc123.us-east-1)
  • Warehouse: CENSUS_WAREHOUSE
  • User: CENSUS
  • Database: Nome do banco de dados dos seus dados de eventos
  • Schema: Nome do schema dos seus dados de eventos
  • Authentication: Key-pair (forneça a chave privada e frase secreta opcional)

Mapeamento de dados de evento

Mapeie seu para o formato de eventos personalizados do OneSignal:
Campo OneSignalDescriçãoObrigatório
nameevent_nameIdentificador de eventoSim
external_iduser_idIdentificador de usuárioSim
timestampevent_timestampQuando o evento ocorreuNão
propertiesevent_dataNão

Esquema de tabela de eventos de exemplo

-- 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

Escreva consultas SQL personalizadas para transformar seus dados 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;

Configuração avançada

Gerenciamento de custos do warehouse

  • Use o tamanho de warehouse X-Small para otimização de custos
  • Configure auto-suspend (60 segundos) e auto-resume
  • Agende sincronizações durante horários de baixo uso
  • Considere compartilhar o warehouse com outros sistemas de processamento em lote

Suporte a sincronizações ao vivo

Para processamento de eventos em tempo real, habilite o rastreamento de alterações nas suas tabelas de eventos:
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;

Segurança de rede

Se estiver usando a política de rede Allowed IPs do Snowflake, adicione os endereços IP do OneSignal à sua lista de permissões. Entre em contato com o suporte do OneSignal para obter os intervalos de IP atuais.

Limitações

  • Consultas analíticas complexas podem impactar o desempenho e os custos do warehouse
  • A autenticação por usuário/senha será descontinuada em novembro de 2025
  • O banco de dados CENSUS é reservado apenas para operações do OneSignal

FAQ

Qual método de autenticação devo usar?

Use autenticação por par de chaves (recomendado). A autenticação por usuário/senha será bloqueada pelo Snowflake a partir de novembro de 2025.

Posso usar um warehouse existente?

Sim, você pode compartilhar um warehouse com outros sistemas de processamento em lote como dbt ou Fivetran para otimizar custos. Certifique-se de que o warehouse tenha capacidade suficiente para suas necessidades de processamento de eventos.

Como posso otimizar custos?

  • Use o tamanho de warehouse X-Small
  • Configure auto-suspend agressivo (60 segundos)
  • Agende sincronizações durante horários de baixo uso
  • Use sincronizações horárias/diárias em vez de sincronização contínua