Pular para o conteúdo principal
O OneSignal fornece várias maneiras de personalizar o conteúdo de mensagens em escala. Este guia se concentra no uso do recurso de Conteúdo Dinâmico com upload CSV encontrado no painel do OneSignal para push, email e SMS. Principais benefícios:
  • Use um CSV para personalizar em escala – Uma mensagem, experiências personalizadas para todos
  • Suporte multi-idioma – Troca automática de idioma por usuário
  • Personalização dinâmica – O conteúdo se adapta às propriedades do usuário (idioma, região, ID de campanha)
  • Colaboração em equipe – Usuários não técnicos editam conteúdo em arquivos CSV
  • Injeção de HTML (email) – Inclua marcação HTML em células CSV para criar dinamicamente conteúdo de email rico
  • Compatibilidade cross-channel – Reutilize a lógica CSV entre canais
Casos de uso comuns:
  • Onboarding ou marketing multi-idioma
  • Promoções específicas por região
  • Anúncios de eventos por localização
  • Personalização baseada em campanha

Etapas de configuração do Conteúdo Dinâmico com CSV

Referência rápida:
  1. Crie um arquivo CSV com suas variações de conteúdo.
  2. Mapeie os dados CSV para a mensagem usando a propriedade dynamic_content na sintaxe Liquid.
  3. Crie uma nova mensagem ou template no painel do OneSignal.
  4. Selecione o botão Conteúdo Dinâmico ou Personalização.
  5. Faça upload do arquivo CSV e envie a mensagem.

Requisitos e configuração do CSV

  • Tamanho do arquivo: Menos de 200 KB
  • Cabeçalhos de coluna:
    • Reserve o primeiro cabeçalho de coluna para a chave de tag ou deixe em branco para referenciar seções
    • Somente caracteres alfanuméricos e underscores
    • Use underscores (_) em vez de espaços
  • Codificação: UTF-8
Comece com um CSV em branco ou use um template fornecido. Os templates são fornecidos ao selecionar o botão Conteúdo Dinâmico ou Personalização nos editores de mensagem e template.
Botão de Conteúdo Dinâmico no editor de mensagens do OneSignal
Templates disponíveis:
  • Multi-idioma – Localize o conteúdo por idioma
  • Personalização de conteúdo – Personalize o conteúdo por Tags de Dados
Opções de template CSV mostrando templates multi-idioma e de personalização de conteúdo

Exemplos de CSV

Este guia usará os seguintes dados CSV de exemplo.
  • Mapeie os cabeçalhos de coluna para seus códigos de idioma suportados.
  • Adicione suas traduções a cada linha para cada código de idioma.
  • Se você tiver várias seções (como em um email), designe a primeira coluna como o nome da seção.
Este exemplo inclui:
  • 3 idiomas: inglês, espanhol e francês.
  • 2 seções: “section_1” e “section_2”.
CSV multi-idioma com códigos de idioma como cabeçalhos de coluna e conteúdo traduzido nas linhas

Mapear dados CSV para o conteúdo da mensagem

Usando sintaxe Liquid, referencie os dados CSV em sua mensagem usando a propriedade dynamic_content:
<!-- Opção 1: acessar por componente primeiro -->
{{dynamic_content.file_name.message_component[user_property]}}

<!-- Opção 2: acessar por propriedade do usuário primeiro -->
{{dynamic_content.file_name[user_property].message_component}}
Parâmetros:
  • dynamic_content – O nome da propriedade usado para referenciar os dados CSV
  • file_name – Nome do arquivo CSV (sem extensão .csv)
  • message_component – O componente de mensagem específico que você deseja personalizar. Este é o texto estático no cabeçalho de coluna CSV ou na primeira linha.
  • user_property – A propriedade de usuário que você deseja referenciar.
Conteúdo de fallback: Sempre use fallbacks de string default codificados para garantir que as mensagens sejam renderizadas se a busca CSV ou o Conteúdo Dinâmico falhar.
Sintaxe Liquid para o fallback
{{ dynamic_content.my_template.header[user.language] | default: "Bem-vindo à nossa última atualização" }}
Isso significa que se a busca CSV ou o Conteúdo Dinâmico falhar, a mensagem renderizará o texto de fallback "Bem-vindo à nossa última atualização". Isso garante:
  • O Conteúdo Dinâmico é usado quando disponível
  • Uma mensagem codificada aparece se o Conteúdo Dinâmico falhar
  • Os usuários nunca recebem conteúdo em branco
translations.csv
,en,es,fr
section_1,Hello,Hola,Bonjour
section_2,Thanks for shopping with us...,Gracias por comprar con nosotros...,Merci pour votre achat avec nous...
  • O file_name é translations.csv.
  • O message_component está nas linhas da primeira coluna section_1 e section_2.
  • O user_property é o cabeçalho de coluna correspondente ao código de idioma. Podemos referenciar isso no usuário com a propriedade user.language.
Sintaxe Liquid básica para a mensagem multi-idioma
{{dynamic_content.translations.section_1[user.language]}}
{{dynamic_content.translations.section_2[user.language]}}
(Recomendado) Sintaxe Liquid com fallback padrão para a mensagem multi-idioma
{% assign supported_langs = "en,es,fr,de" | split: "," %}
{% assign lang = user.language | default: "en" %}

{% unless supported_langs contains lang %}
  {% assign lang = "en" %}
{% endunless %}

{{ dynamic_content.translations.section_1[lang] | default: "Hello" }}
{{ dynamic_content.translations.section_2[lang] | default: "Thanks for shopping with us..." }}
Editor de email do OneSignal com sintaxe Liquid para Conteúdo Dinâmico multi-idioma
Use Liquid com fallback default para atualizar linhas de assunto, preheaders, rótulos de botões e URLs.

Usar HTML em células CSV (somente e-mail)

Você pode incluir marcação HTML diretamente em células CSV para injetar conteúdo rico em emails. Isso é útil para trocar seções inteiras de um email — como banners, CTAs ou blocos estilizados — com base nas propriedades do usuário.
promo_banners.csv
campaign_id,banner_html
spring_sale,<div style="background:#4CAF50;padding:16px;text-align:center;"><a href="https://example.com/spring" style="color:#fff;font-size:18px;">Shop the Spring Sale</a></div>
default,<div style="background:#333;padding:16px;text-align:center;"><a href="https://example.com" style="color:#fff;font-size:18px;">See What's New</a></div>
Referencie a célula HTML em seu template de email:
{{ dynamic_content.promo_banners[campaign_id].banner_html | default: "<p>Check out our latest offers</p>" }}
O HTML é renderizado diretamente no corpo do email, portanto você pode usar qualquer estilo inline e marcação que os clientes de email suportem.
O HTML de células CSV é suportado apenas em email. Os canais push e SMS renderizam o conteúdo como texto simples e não interpretam marcação HTML.

Referência

Atualizando templates

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

Caracteres especiais em chaves

Notação hash (para chaves não alfanuméricas):
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
Notação de ponto (para chaves padrão):
{{ dynamic_content.file_name.the_row.the_column }}

FAQ

Como posso testar o Conteúdo Dinâmico com CSV?

Use email para testar múltiplas variações da mensagem.
  • Use endereçamento + em emails para testar múltiplas variações: username+test@example.com.
  • Configure tags seguindo os exemplos multi-idioma e de personalização de conteúdo acima.
  • Veja Importar para mais informações sobre upload de múltiplos usuários e tags de dados.

Quando usar Conteúdo Dinâmico com CSV vs. outras opções de personalização?

Use Conteúdo Dinâmico com CSV ao enviar mensagens do painel e quando tiver dados de usuário em um arquivo CSV. Para outras formas de adicionar conteúdo dinâmico às mensagens, veja Personalização de Mensagem ou Mensagens Multi-idioma.

Páginas relacionadas

Personalização de Mensagem

Visão geral de todas as opções de personalização disponíveis no OneSignal.

Usando Sintaxe Liquid

Referência completa de sintaxe Liquid para mensagens do OneSignal.

Importar

Fazer upload de dados de usuário e segmentos para o OneSignal.

Templates

Criar templates de mensagem reutilizáveis.