Pular para o conteúdo principal

Como funciona a personalização

Você pode adicionar dados personalizados em mensagens, templates, Journey Webhooks e Event Streams usando sintaxe Liquid. Os dados podem ser provenientes de:
  • Data feeds: Dados em tempo real de suas APIs.
  • Custom Events: Eventos de usuário em tempo real para personalizar mensagens de Journey.
  • Properties & Tags: Valores integrados de usuário, Journey, mensagem, template, aplicativo ou organização.
  • API: custom_data: Dados personalizados que você passa diretamente para nossa API Create Message.
  • Dynamic content com CSV: Personalização baseada em CSV via uploads no painel.

Considerações principais

A personalização ajuda os usuários a se conectarem mais profundamente com seu aplicativo, potencialmente aumentando o engajamento e a receita. Exemplos comuns são colocar o nome da pessoa ou informações específicas (como itens de carrinho abandonado) em uma mensagem, mas os casos de uso são infinitos. Qual é o objetivo? O que você quer enviar na mensagem? Exemplos:
  • Adicionar uma propriedade de usuário como nome ou ID
  • Mostrar fatura ou OTP
  • Enviar conteúdo dinâmico de um CSV
Onde os dados estão localizados?
  • Os dados estão armazenados no OneSignal como uma propriedade ou tag?
  • Os dados estão armazenados no seu próprio banco de dados?
  • Você precisa passar dados do seu backend para o OneSignal?
Como você quer enviar a mensagem?
  • Mensagens únicas: Enviar a mensagem do seu servidor ou através do painel OneSignal?
  • Mensagens recorrentes: Usando Journeys ou outros fluxos de trabalho automatizados?
Exemplo:
  • Objetivo: Enviar uma senha de uso único para ajudar um usuário a fazer login.
  • Dados:
    • OTP armazenado no seu backend.
    • Nome de usuário armazenado no OneSignal como uma tag.
    • External ID armazenado no OneSignal como uma propriedade.
  • Envio:
    • Do seu servidor usando nossa API REST.
    • De um fluxo de trabalho automatizado usando Journeys.
Um passo a passo detalhado deste exemplo está disponível no tutorial de exemplo Verificação, Magic Link e OTP.Veja mais exemplos de Tutorial abaixo.

Fontes de dados

Opções disponíveis para personalização.

Data feeds

Data Feeds são uma maneira de puxar dados em tempo real de suas APIs diretamente para mensagens no momento do envio. Basta conectar um template à sua fonte de dados e puxaremos os dados do seu servidor e os injetaremos na mensagem.

Custom Events

Referencie Custom Events dentro de Templates usados em Journeys. Dependendo da configuração da Journey, ela pode armazenar um ou mais Custom Events em nome do usuário. Você pode usar sintaxe Liquid para exibir propriedades desses eventos armazenados ou para exibir condicionalmente partes da sua mensagem com base nos eventos.
journey.first_event
Para Journeys acionadas por evento, este será sempre o evento que causou a entrada do usuário na Journey.Se a regra de entrada da Journey não for acionada por evento, este será o primeiro evento correspondido por uma condição Wait Until.
{% assign event = journey.first_event %}
journey.last_event
O Custom Event mais recente armazenado. Se houver apenas um Custom Event armazenado, então first_event e last_event retornarão o mesmo.
{% assign event = journey.last_event %}
journey.event.most_recent_event_name
O evento mais recente com um nome fornecido (substitua most_recent_event_name pelo nome do evento que você deseja referenciar). Se o mesmo evento for usado várias vezes, isso retornará a instância mais recente. Exemplo: purchase.
{% assign event = journey.event.purchase %}
Para caracteres especiais (por exemplo, espaços), use notação de hash se o nome do evento contiver caracteres não alfanuméricos. Por exemplo, se o nome do evento for “order status”, você pode referenciá-lo com journey.event["order status"].
{% assign event = journey.event["order status"] %}
journey.all_events
Fornece um array de todos os eventos armazenados para esta Journey para o usuário, na ordem em que foram recebidos. Você pode usar loops for para iterar sobre eles.
{% for event in journey.all_events %}
  {{ event.name }}
{% endfor %}
first_event e last_event são atalhos para all_events[0] e all_events[-1], respectivamente.

Properties

Campos predefinidos salvos no OneSignal.
Properties não estão disponíveis para substituição dentro de mensagens In-App ou Live Activities.

Properties de User & Subscription

Siga as etapas fornecidas dependendo de onde você precisa acessar os dados.
Use o objeto subscription para acessar properties no nível Subscription em mensagens e templates. Tags também podem ser acessadas diretamente através do nome da chave. Por exemplo:
Olá {{ first_name | default: "amigo" }}!
Parabéns por atingir o nível {{ level | default: "1" }}!
Se você tiver tags first_name: Jon e level: 5 para o Usuário A e first_name: Jeff e level: 100 para o Usuário B, cada um verá seu nome e nível na mensagem. Caso contrário, eles verão os valores padrão.
subscription.external_id
O External ID associado à Subscription.
Seu ID de usuário é {{ subscription.external_id }}.
subscription.email
O endereço de e-mail da Subscription de e-mail recebendo a mensagem.
Obrigado por se inscrever com o e-mail {{ subscription.email }}.
subscription.phone_number
O número de telefone da Subscription de SMS recebendo a mensagem.
Obrigado por se inscrever com o número de telefone {{ subscription.phone_number }}.
subscription.language
O código de idioma do usuário.
Idioma preferido: {{ subscription.language }}
subscription.unsubscribe_token
O token usado com a API de cancelamento de inscrição de e-mail com token.
liquid
Cancelar inscrição: https://your-domain.com/unsubscribe?token={{ subscription.unsubscribe_token }}

Properties de Journey

O objeto journey é útil para rastrear o nome da Journey ou referenciar Custom Events dentro de Templates usados em Journeys.
journey.name
O nome da Journey.
JSON
{
  "journey.name": "{{ journey.name }}"
}

Properties de Message

O objeto message é útil para acessar custom_data enviado do seu backend ou para rastrear properties da mensagem com Event Streams.
message.id
O ID de mensagem do OneSignal.
JSON
{
  "message.id": "{{ message.id }}"
}
message.name
O nome da mensagem.
JSON
{
  "message.name": "{{ message.name }}"
}
message.template_id
O ID de template do OneSignal.
JSON
{
  "message.template_id": "{{ message.template_id }}"
}

Properties de Template

O objeto template é útil para acessar detalhes sobre o Template usado para enviar a mensagem.
template.id
O ID de template do OneSignal.
JSON
{
  "template.id": "{{ template.id }}"
}
template.name
O nome do template.
JSON
{
  "template.name": "{{ template.name }}"
}

Properties do OneSignal

Os objetos app e org são úteis para acessar detalhes sobre o App e a Organization que enviaram a mensagem.
app.id
O ID do App do OneSignal.
JSON
{
  "app.id": "{{ app.id }}"
}
app.name
O nome do App do OneSignal.
JSON
{
  "app.name": "{{ app.name }}"
}
org.id
O ID da Organization do OneSignal.
JSON
{
  "org.id": "{{ org.id }}"
}
org.name
O nome da Organization do OneSignal.
JSON
{
  "org.name": "{{ org.name }}"
}

API custom_data

Adicione personalização diretamente do seu backend usando custom_data e nossa API Create message. Passos:
  1. Criar um template
  2. Usar sintaxe Liquid com formato {{ message.custom_data.key }}
  3. Enviar requisição de API com o objeto custom_data e template_id

Exemplo: JSON plano

Template
Sua fatura para {{message.custom_data.product_name}} está pronta.
URL: https://your-domain.com/invoice={{message.custom_data.invoice_id}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "invoice_id": "463246732",
    "product_name": "Widget"
  }
}
O cliente vê: - “Sua fatura para Widget está pronta.” - A URL final: https://your-domain.com/invoice=463246732

Exemplo: Dados de array

Template
Seu {{message.custom_data.cart_items[0].item_name}} está esperando por você!
Imagem: {{message.custom_data.cart_items[0].image_url}}
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_email_tokens": ["THE_USER_EMAIL"],
  "custom_data": {
    "cart_items": [
      {
        "item_name": "sweater",
        "img_url": "https://.../sweater.png"
      },
      {
        "item_name": "socks",
        "img_url": "https://.../socks.png"
      }
    ]
  }
}
O cliente vê: - “Seu sweater está esperando por você!” - A imagem: https://.../sweater.png

Exemplo: Personalização em massa

Para personalizar uma única mensagem para muitos usuários em uma requisição:
Template
{% assign eid = message.custom_data.users[subscription.external_id] %}
Olá {{ eid.first_name }}, você tem {{ eid.points }} pontos. Seu nível é {{ eid.level }}.
API Request
{
  "app_id": "YOUR_APP_ID",
  "template_id": "YOUR_TEMPLATE_ID",
  "include_aliases": {
    "external_id": ["user123", "user456"]
  },
  "custom_data": {
    "users": {
      "user123": { "first_name": "John", "points": "150", "level": "Gold" },
      "user456": { "first_name": "Sarah", "points": "200", "level": "Platinum" }
    }
  }
}
O cliente vê: - “Olá John, você tem 150 pontos. Seu nível é Gold.” - “Olá Sarah, você tem 200 pontos. Seu nível é Platinum.”

Dynamic Content CSV

Faça upload de um CSV de dados para personalizar o conteúdo da mensagem ou template. Consulte Dynamic content com CSV para mais detalhes.

Tutoriais