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

Dynamic Content

Este guia atual sobre personalização explica como adicionar conteúdo dinâmico às suas mensagens, templates, Journeys e Event Streams. O OneSignal também fornece uma maneira de fazer upload de um CSV de dados para personalizar as mensagens com base em dados do seu próprio banco de dados. Consulte Dynamic Content para mais detalhes.

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.
  • Propriedades de Custom Event
  • Estrutura de Custom Event de Exemplo
  • Usando Eventos em Templates
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 a mesma coisa.
{% assign event = journey.last_event %}
journey.event.most_recent_event_name
O evento mais recente com um determinado nome (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 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 and last_event are shorthand for all_events[0] and all_events[-1], respectively.

Properties

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

Propriedades de User & Subscription

Siga as etapas fornecidas com base em onde você precisa acessar os dados.
  • Propriedades disponíveis em mensagens e templates
  • Propriedades disponíveis em Journey Webhooks e Event Streams
Use o objeto subscription para acessar propriedades no nível de Subscription em mensagens e templates. Tags também podem ser acessadas diretamente pelo nome da chave. Por exemplo:
Hi {{ first_name | default: "friend" }}!
Congrats on reaching level {{ level | default: "1" }}!
Se você tiver tags first_name: Jon e level: 5 para Usuário A e first_name: Jeff e level: 100 para Usuário B, cada um verá seu nome e nível na mensagem. Caso contrário, verão os valores padrão.
subscription.external_id
O External ID associado à Subscription.
Your user ID is {{ subscription.external_id }}.
subscription.email
O endereço de email da Subscription de email que está recebendo a mensagem.
Thanks for subscribing with email {{ subscription.email }}.
subscription.phone_number
O número de telefone da Subscription de SMS que está recebendo a mensagem.
Thanks for subscribing with phone number {{ subscription.phone_number }}.
subscription.language
O código de idioma do usuário.
Preferred language: {{ subscription.language }}
subscription.unsubscribe_token
O token usado com a API Unsubscribe email with token.
liquid
Unsubscribe: https://your-domain.com/unsubscribe?token={{ subscription.unsubscribe_token }}

Propriedades 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 }}"
}

Propriedades de Message

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

Propriedades de Template

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

Propriedades do OneSignal

Os objetos app e org são úteis para acessar detalhes sobre o App e Organization que enviaram a mensagem.
app.id
O OneSignal App ID.
JSON
{
  "app.id": "{{ app.id }}"
}
app.name
O nome do OneSignal App.
JSON
{
  "app.name": "{{ app.name }}"
}
org.id
O OneSignal Organization ID.
JSON
{
  "org.id": "{{ org.id }}"
}
org.name
O nome da OneSignal Organization.
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. Crie um template
  2. Use Sintaxe Liquid com formato {{ message.custom_data.key }}
  3. Envie solicitação de API com o objeto custom_data e template_id

Exemplo: JSON Plano

Template
Your invoice for {{message.custom_data.product_name}} is ready.
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"
  }
}
Cliente vê:
  • “Your invoice for Widget is ready.”
  • A URL final: https://your-domain.com/invoice=463246732

Exemplo: Dados de Array

Template
Your {{message.custom_data.cart_items[0].item_name}} is waiting for you!
Image: {{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"
      }
    ]
  }
}
Cliente vê:
  • “Your sweater is waiting for you!”
  • A imagem: https://.../sweater.png

Exemplo: Personalização em massa

Para personalizar uma única mensagem para muitos usuários em uma solicitação:
Template
{% assign eid = message.custom_data.users[subscription.external_id] %}
Hi {{ eid.first_name }}, you have {{ eid.points }} points. Your level is {{ 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" }
    }
  }
}
Cliente vê:
  • “Hi John, you have 150 points. Your level is Gold.”
  • “Hi Sarah, you have 200 points. Your level is Platinum.”

Tutoriais