Pular para o conteúdo principal
Data Feeds permitem que você busque dados em tempo real de suas APIs diretamente em mensagens no momento do envio. Isso permite entregar conteúdo altamente personalizado sem pré-carregar dados no OneSignal. Use Data Feeds quando seus dados mudam frequentemente, como:
  • Saldo de recompensas atual de um usuário
  • Status de pedido mais recente
  • Recomendações personalizadas de produtos
Outros métodos de personalização (como Tags ou Conteúdo Dinâmico) funcionam bem para dados estáticos. Data Feeds são melhores para valores ao vivo e que mudam rapidamente.
Data Feeds estão atualmente disponíveis apenas para mensagens de email enviadas através de Journeys. Precisa de outro canal? Preencha esta breve pesquisa.

Como funcionam os Data Feeds

  1. Criar um Data Feed – Configure como o OneSignal se conecta à sua API.
  2. Anexar o Data Feed a um template de mensagem.
  3. Inserir campos de resposta na sua mensagem usando sintaxe Liquid.
  4. No momento do envio, o OneSignal faz uma chamada de API para cada destinatário, analisa a resposta e injeta os dados na sua mensagem.

Exemplo: Exibir pontos de recompensa

Suponha que você queira mostrar a cada cliente seu saldo de recompensas:
Olá {{ first_name }},

Você tem {{ data_feed.rewards.points }} pontos!
Seu status de membro é {{ data_feed.rewards.status_level }}.

Continue comprando para ganhar mais pontos!
Quando Sarah receber este email, as variáveis Liquid são substituídas pelo seu saldo real de pontos e status de membro. As seções a seguir mostram como configurar este exemplo passo a passo.

Criando e usando um Data Feed

1. Configurar seu Data Feed

Navegue até Data > Data Feeds na barra lateral para ver a lista de Data Feeds existentes e criar um novo. Cada Data Feed deve ter:
  • Name: Um nome descritivo como “Customer Rewards API” para ajudá-lo a distinguir feeds. Nomes únicos são recomendados, mas não obrigatórios.
  • Alias: Um identificador curto como rewards usado na sintaxe Liquid (ex.: {{ data_feed.rewards.points }}). Deve ser único, em minúsculas, alfanumérico, sem espaços ou caracteres especiais.
  • Method: O método HTTP que o OneSignal usa para contatar sua API. Geralmente GET, mas POST também é suportado.
  • URL: Seu endpoint de API. Suporta sintaxe Liquid para que o OneSignal possa buscar dados específicos do usuário.
Por exemplo, seu endpoint de recompensas pode aceitar o external_id do usuário (armazenado no OneSignal) como parâmetro de URL:
https://acme.com/customers/user_id={{ external_id }}/rewards
  • Headers: Pares chave-valor exigidos pela sua API (ex.: tokens de autenticação). Suporta sintaxe Liquid.
  • Body: Body de solicitação JSON opcional. Suporta sintaxe Liquid, da mesma forma que webhooks de Journey.
Por exemplo, sua API pode exigir o ID do usuário no body da solicitação em vez da URL:
{
	"customer_id": "{{ subscription.external_id }}"
}
Uma configuração completa de Data Feed tem esta aparência:
Data Feed configuration showing name, alias, method, URL, and headers
Teste seu feed antes de usá-lo em produção. Os testes de Data Feed são executados em suas assinaturas de teste, portanto verifique se essas assinaturas possuem atributos que retornam um resultado real da sua API.
Por fim, Ative seu novo Data Feed para que fique pronto para uso.

2. Anexar o Data Feed ao seu template de mensagem

Anexe seu Data Feed ao seu template de mensagem para que o OneSignal saiba usá-lo.
  1. Navegue até Messages > Templates
  2. Na seção Message, selecione o botão Personalization
Personalization button in the message template editor
  1. Ative Data Feeds e selecione seu feed
Data Feeds toggle and feed selector in the message composer
  1. Salve seu template

3. Usar os dados na sua mensagem

Use sintaxe Liquid para inserir dados de resposta em qualquer lugar da sua mensagem. Continuando o exemplo de recompensas, a resposta da API para Sarah (cujo external_id é a1-b2c3) pode ser assim:
{
	"external_id": "a1-b2c3",
	"points": 193,
	"status_level": "Gold"
}
Para inserir o número de pontos e o nível de status, use notação de ponto para referenciar o alias do Data Feed e os campos de resposta:
Você tem {{ data_feed.rewards.points }} pontos!
Seu status de membro é {{ data_feed.rewards.status_level }}.
Isso diz ao OneSignal:
  • Use um Data Feed
  • Use o Data Feed rewards
    • Lembre-se: o feed rewards sabe chamar a API com o external_id do destinatário
  • Da resposta, insira o valor do item points (193) e do item status_level (Gold)

Requisitos e limites

Sua API precisa:
  • Aceitar autenticação de etapa única com tokens de autenticação em cabeçalhos
  • Responder rapidamente. Menos de 250ms recomendado (isso afeta diretamente a velocidade de envio)
  • Retornar JSON. Outros formatos não são suportados no momento.
  • Lidar com seu volume de envio. Um limite de taxa baixo na sua API reduz a velocidade de entrega das mensagens.
  • Retornar payloads de tamanho razoável. Mantenha as respostas abaixo de 50 KB para melhor desempenho.
Limites atuais:
  • Um Data Feed por template. Busque tudo o que você precisa em uma única resposta de API.
  • Uma chamada de API por Data Feed por mensagem.
  • Apenas Journeys. Ainda não disponível para outros métodos de envio.
  • Sem encadeamento de chamadas. O payload de um Data Feed não pode ser usado para chamar outro.
Precisa de múltiplos Data Feeds por template ou suporte para outros canais? Compartilhe seu caso de uso para ajudar a priorizar esses recursos.

Configurando sua API

Antes de criar um Data Feed, certifique-se de que sua API pode atender a esses requisitos:

Autenticação

Sua API deve aceitar autenticação via cabeçalhos:
Authorization: Bearer YOUR_TOKEN
ou
X-API-Key: YOUR_KEY

Body de solicitação JSON

Se você precisa incluir um body na solicitação, sua API deve aceitar JSON. Isso pode significar que seus cabeçalhos precisam incluir Content-Type: application/json.

Resposta JSON

Sua API deve retornar um objeto JSON. Tipicamente isso significa que seus cabeçalhos incluirão Accept: application/json.

Parâmetros de personalização

Você normalmente passará identificadores de usuário na URL assim:
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
E/ou no body:
{
	"customer_id": "{{ external_id }}",
	"email": "{{ subscription.email }}"
}
Certifique-se de que esses dados existirão no OneSignal (geralmente como Tags, mas outras opções estão disponíveis, como propriedades de eventos personalizados).

Limites de taxa

Considere os limites de taxa da sua API. Enviar para 10.000 usuários significa 10.000 chamadas de API em rápida sucessão. Certifique-se de que sua API pode lidar com esse volume.

Tratamento de erros

Se sua API retornar um erro ou não tiver dados para um usuário, a mensagem não será enviada para aquele destinatário. Certifique-se de que sua API retorna dados para todos os usuários esperados.

Checklist de primeiros passos

Antes de implementar Data Feeds, responda estas perguntas:
  • Quais dados eu quero mostrar na minha mensagem? Trabalhar de trás para frente a partir de um esboço simples com os itens a serem preenchidos pela sua API identificados ajudará você a organizar seu pensamento.
  • Esses dados estão disponíveis através de um único endpoint de API?
  • Como vou autenticar solicitações de API?
  • Qual identificador ou outro item de dados vou usar para buscar dados personalizados?
  • Esse identificador já está armazenado no OneSignal? Se não, como será preenchido?
  • Minha API pode lidar com o volume de solicitações que vou gerar?
  • O que acontece se minha API não tiver dados para um usuário?

Exemplos e casos de uso avançados

Data Feeds podem ser usados com sintaxe Liquid ou em combinação com outros recursos de formas criativas para produzir personalização mais complexa.
Digamos que você tem um Data Feed cart que retorna um array de itens no carrinho do usuário, mais o valor total em dólares do carrinho:
{
  "items": [
    {
      "name": "Blue Running Shoes",
      "price": 84.00,
      "image_url": "https://acme.com/blue-running-shoes.png"
    },
    {
      "name": "Protein Bar",
      "price": 5.99,
      "image_url": "https://acme.com/protein-bar.png"
    }
  ],
  "total": 89.99
}
Se você quiser mostrar cada item no carrinho, mais o total do carrinho, você pode usar um loop for em Liquid:
<ul>
  {% for item in data_feed.cart.items %}
    <li>
      <strong>{{ item.name }}</strong><br>
      ${{ item.price }}<br>
      <img src="{{ item.image_url }}" alt="{{ item.name }}">
    </li>
  {% endfor %}
</ul>

<p>Cart total: ${{ data_feed.cart.total }}</p>

Isso resultará em:
- Blue Running Shoes
- $84.00
- <imagem de tênis de corrida>
- Protein Bar
- $5.99
- <imagem de barra de proteína>
Cart total: $89.99
Se você está usando o editor de blocos de email, ao inserir este tipo de sintaxe Liquid complexa, particularmente se você precisar incluir imagens ou links, para melhores resultados use o elemento de bloco HTML personalizado.
Quer ver como acionar este email de carrinho abandonado usando eventos personalizados? Confira a aba Propriedades de eventos personalizados para o fluxo de trabalho completo.

Perguntas frequentes

Os valores do meu Data Feed não estão aparecendo na mensagem. O que devo verificar?

Verifique nesta ordem:
  1. O Data Feed está anexado ao template (em Personalization > Data Feeds).
  2. Sua sintaxe Liquid corresponde à estrutura de resposta JSON exatamente — {{ data_feed.<alias>.<field> }}.
  3. O endpoint da API retorna JSON válido quando chamado manualmente com os mesmos identificadores.
  4. O destinatário tem o identificador necessário (ex.: external_id) armazenado no OneSignal.

Por que as mensagens estão sendo enviadas lentamente?

As chamadas de API do Data Feed são executadas no momento do envio para cada destinatário. Se sua API responde lentamente ou não consegue lidar com solicitações simultâneas, a entrega de mensagens reduz proporcionalmente. Procure tempo de resposta abaixo de 250 ms e certifique-se de que sua infraestrutura pode lidar com seu volume de envio.

Por que alguns destinatários não estão recebendo mensagens?

Se a chamada de API do Data Feed falhar para um destinatário — devido a um 404, timeout ou dados ausentes — o OneSignal ignora aquele destinatário completamente. Verifique o log de erros na configuração do seu Data Feed e os logs da sua própria API para falhas. Verifique se esses usuários têm os identificadores necessários no OneSignal.

Posso usar mais de um Data Feed em um template?

Não no momento. Cada template suporta um Data Feed. Busque todos os dados necessários em uma única resposta de API. Se você precisar de múltiplos feeds, compartilhe seu caso de uso.

Data Feeds estão disponíveis para notificações push ou SMS?

Não. Data Feeds estão atualmente disponíveis apenas para mensagens de email enviadas através de Journeys. O suporte para canais adicionais está planejado — compartilhe seu caso de uso para ajudar a priorizar.

O que acontece se minha API estiver fora do ar quando a mensagem for enviada?

O OneSignal ignora qualquer destinatário cuja chamada de Data Feed falhar. A mensagem não é enviada para aquele destinatário e nenhum valor de fallback é inserido. Monitore o uptime e as taxas de erro da sua API durante envios programados.

Páginas relacionadas

Sintaxe Liquid

Referência completa para templates Liquid em mensagens do OneSignal.

Journeys

Crie fluxos de trabalho de mensagens automatizadas que acionam emails com Data Feed.

Eventos personalizados

Acione Journeys e passe propriedades de eventos para URLs de Data Feed.

Personalização de mensagens

Visão geral de todos os métodos de personalização — tags, Liquid, conteúdo dinâmico e Data Feeds.