Pular para o conteúdo principal

Visão geral

Dynamic Content permite que você personalize mensagens em escala—sem criar versões separadas para cada público. Seja enviando mensagens em múltiplos idiomas ou adaptando conteúdo por região ou campanha, Dynamic Content permite que você defina uma mensagem que automaticamente se ajusta para cada usuário. Você faz isso fazendo upload de um arquivo CSV ou programaticamente usando nossas APIs de Template com dados contendo variações de conteúdo e referenciando esses valores em sua mensagem usando Sintaxe Liquid. Quando uma mensagem é enviada, o OneSignal puxa o conteúdo apropriado para cada usuário com base em suas Tags de Dados. Dynamic Content funciona em Push, Email e SMS, tornando-o ideal para:
  • Fluxos de onboarding ou marketing multi-idioma
  • Promoções específicas por região ou segmento
  • Personalização impulsionada por dados de campanha externos
Principais benefícios:
  • Personalização em escala – Entregue experiências personalizadas sem criar e gerenciar dezenas de variantes de mensagem.
  • Suporte multi-idioma – Escreva uma mensagem que automaticamente exibe no idioma preferido de cada usuário.
  • Segmentação dinâmica – Altere o conteúdo da mensagem com base em propriedades do usuário como idioma, região, plano, ou tags personalizadas como campaign_id.
  • Colaboração sem atritos – Permita que tradutores ou equipes não técnicas criem e editem conteúdo de mensagens diretamente em arquivos CSV—sem necessidade de login no OneSignal.
  • Compatibilidade cross-channel – Use a mesma lógica CSV em campanhas de Push, Email e SMS.
Casos de uso comuns:
  • Anúncios de eventos por país ou cidade
  • Notificações push personalizadas baseadas em ID de campanha ou histórico de compras
  • Testando múltiplos assuntos ou mensagens entre grupos de usuários
Veja Personalização de Mensagem para mais opções sobre personalizar suas mensagens.

Configuração do Dynamic Content

Crie uma nova mensagem ou template. Do dashboard: Selecione Dynamic Content.
  • Faça upload de um arquivo CSV que mapeia conteúdo de mensagem para Tags de Dados.
Das APIs de Templates: Use a propriedade dynamic_content.
  • Ótima solução se seu conteúdo dinâmico muda frequentemente.

Botão Dynamic Content encontrado no editor de criação de push.

Formate seu conteúdo

Você pode começar com um arquivo em branco ou escolher um dos templates fornecidos:
  • Multi-idioma
  • Personalização de conteúdo

Opções de template CSV fornecidas pelo OneSignal.

Para detalhes da API, veja:

Requisitos do CSV

  • Tamanho do arquivo deve ser menor que 200 KB
  • Cabeçalhos de coluna:
    • Apenas alfanuméricos
    • Use underscores (_) em vez de espaços
    • Evite caracteres especiais
  • Garanta codificação UTF-8 em seu editor de planilha
  • Exemplo Multi-idioma
  • Exemplo de Personalização de Conteúdo
Mapeie a propriedade subscription.language para diferentes traduções por seção.

Similar a uma fórmula VLOOKUP no Excel, combinamos atributos do usuário com o conteúdo correspondente do CSV.

Referenciar Dynamic Content em mensagens

Para exibir conteúdo personalizado de dynamic_content, use esta sintaxe Liquid.
{{dynamic_content.file_name.section_name[data_tag_or_property]}}
Substitua:
  • file_name: Nome do arquivo CSV (sem .csv).
  • section_name: Valor na primeira coluna da linha
  • data_tag_or_property: Cabeçalho de coluna correspondente a uma Tag de Dados ou propriedade de assinatura

Conteúdo de fallback

Adicionar conteúdo de fallback evitará que usuários recebam conteúdo em branco. Isso garante que sua mensagem seja renderizada quando:
  • um usuário não tem uma tag ou propriedade correspondente.
  • um usuário tem uma tag ou propriedade que não está disponível em dynamic_content.

Usuário não tem uma tag ou propriedade correspondente

Se subscription.language não existe, referencie a coluna padrão de dynamic_content em vez disso.
{% assign lang = subscription.language | default: "default" %}
{{ dynamic_content.content_personalization_template.title[lang] }}

Usuário tem uma tag ou propriedade que não está disponível em dynamic_content

Se subscription.language existe em uma assinatura, mas não em dynamic_content, referencie a coluna padrão em vez disso.
// adicione cada idioma que está disponível em seu dynamic_content:
{% assign supported_langs = "de,en,es,fr,it,default" | split: "," %}
{% assign lang = subscription.language | default: "default" %}

// verifique se o idioma da assinatura está em seus idiomas suportados, se não, atribua idioma como 'default'
{% unless supported_langs contains lang %}
  {% assign lang = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template.title[lang] }}

Exemplos

Email multi-idioma

Use translations.csv para localizar seu email:
  • {{dynamic_content.translations.section_1[subscription.language]}}
  • {{dynamic_content.translations.section_2[subscription.language]}}

Exemplo mostra como adicionar a sintaxe liquid para o exemplo multi-idioma.

Atualize linhas de assunto, preheaders, rótulos de botões e URLs usando Liquid.

Mensagem push personalizada

Use content_personalization_template.csv para mensagens push específicas do usuário. A tag campaign_id de cada usuário determina qual linha usar.
Pré-requisito: Cada usuário deve ter uma Tag de Dados chamada campaign_id. No momento do envio, OneSignal usa o valor campaign_id do usuário para selecionar a linha correspondente em seu CSV.

Formato CSV (linhas identificadas por campaign_id)

campaign_id,title,message,url
campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
default,Our latest offers,See what's new,https://example.com
  • A primeira coluna (campaign_id) é a chave da linha que deve corresponder ao valor da tag campaign_id do usuário.
  • As outras colunas (title, message, url) são os campos que você inserirá no push.
  • Inclua uma linha default para que valores não marcados ou desconhecidos ainda renderizem conteúdo válido.

Como o Liquid mapeia para o CSV

{{ dynamic_content.content_personalization_template[campaign_id].title }}
{{ dynamic_content.content_personalization_template[campaign_id].message }}
{{ dynamic_content.content_personalization_template[campaign_id].url }}
  • content_personalization_template → o nome do arquivo CSV (omita .csv).
  • [campaign_id] → seleciona a linha cujo valor da primeira coluna é igual à tag campaign_id do usuário.
  • .title / .message / .url → retorna a coluna escolhida daquela linha.

Exemplo de fallback (recomendado)

{% assign cid = campaign_id | default: "default" %}

{% unless dynamic_content.content_personalization_template[cid] %}
  {% assign cid = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template[cid].title }}
{{ dynamic_content.content_personalization_template[cid].message }}
{{ dynamic_content.content_personalization_template[cid].url }}
Regras de cabeçalho: Prefira alfanuméricos/underscores (ex.: campaign_id, title). Se você deve usar espaços ou caracteres especiais, acesse com notação hash:
{{ dynamic_content.file_name["row key"]["column key"] }}
Exemplo de Liquid para personalização com Dynamic Content

Exemplo mostra como adicionar a sintaxe liquid para o exemplo de personalização de conteúdo.


Testar e visualizar

1

Criar um CSV de teste

Teste multi-idioma:
  • Colunas: email, language
Teste de personalização:
  • Colunas: external_id, campaign_id

Exemplo de CSV para fazer upload e criar segmento de testadores de email.


Use endereçamento + em emails para testar múltiplas variações: username+test@example.com

Exemplo de CSV para fazer upload e criar segmento de testadores com external_id e a tag campaign_id.

2

Fazer upload de seu segmento de teste

Vá para Subscriptions ou Segments > Upload/Import Users.Defina a primeira coluna como o identificador. Todas as outras colunas são tratadas como propriedades de usuário ou Tags de Dados.

Crie um segmento de seus testadores para repetir conforme necessário.

Veja Import para mais sobre fazer upload de dados de usuário.
3

Visualizar a mensagem

Após enviar suas mensagens de teste, verifique suas caixas de entrada ou dispositivos para verificar a exibição.
Se dynamic_content não está renderizando, referencie Conteúdo de fallback

Exemplo mostra o email enviado com Dynamic Content.

Exemplo mostra o push enviado com Dynamic Content.

Você agora pode escalar mensagens personalizadas usando estes templates e CSVs.

Considerações de uso

Quando usar Dynamic Content vs. Custom Data

  • Use Dynamic Content para idiomas diversos ou blocos de mensagem personalizados.
  • Use Custom Data para personalização inline simples em um único idioma.

Editando templates

Faça re-upload de CSVs ou use a propriedade dynamic_content da API Update Template para atualizar.

Caracteres especiais em chaves

Use notação hash se as chaves contêm caracteres não alfanuméricos:
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
Use notação de ponto para chaves alfanuméricas padrão:
{{ dynamic_content.file_name.the_row.the_column }}

Artigos relacionados