AttributeValue e campos vazios: personalização no AMPscript sem quebrar o envio

Use AttributeValue, Empty e IIF para personalizar e-mails com segurança quando o campo não existe ou chega vazio na Data Extension.

Branca Tutorial Marketing Cloud Engagement 3 min Publicado em

Personalizar um e-mail com %%PrimeiroNome%% parece simples até o dia em que o campo chega vazio, ou a mesma peça é usada com uma Data Extension que nem tem essa coluna. O resultado é um "Olá, ," no inbox do cliente, ou um erro de validação na hora do envio. Este tutorial mostra o jeito seguro de ler atributos no AMPscript.

O problema com %%Campo%%

Quando você escreve %%PrimeiroNome%% direto no HTML, o Marketing Cloud procura um atributo com esse nome na origem do envio (a Data Extension enviável ou o perfil do assinante). Duas coisas podem dar errado:

  • o atributo não existe naquela origem: a validação do e-mail falha e o envio não sai;
  • o atributo existe, mas está vazio: o e-mail sai com um buraco no texto.

AttributeValue: ler sem quebrar

AttributeValue("NomeDoCampo") devolve o valor do atributo e, se o atributo não existir, devolve uma string vazia em vez de gerar erro. Por isso ele é o ponto de partida para qualquer personalização reaproveitável.

AMPscript
%%[
SET @nome = AttributeValue("PrimeiroNome")
]%%

Empty: tratar o vazio

Empty(@variavel) devolve verdadeiro quando a variável é nula ou uma string vazia. Combine com IF para definir um valor padrão:

AMPscript
%%[
SET @nome = AttributeValue("PrimeiroNome")

IF Empty(@nome) THEN
  SET @nome = "cliente"
ELSE
  SET @nome = ProperCase(Trim(@nome))
ENDIF
]%%
Olá, %%=v(@nome)=%%!

Trim remove espaços nas pontas (muito comum em dados importados de planilha) e ProperCase deixa só a primeira letra de cada palavra em maiúscula: "MARIA" vira "Maria".

IIF: a versão em uma linha

Para casos simples, IIF(condição, valor_se_verdadeiro, valor_se_falso) evita o bloco IF inteiro:

AMPscript
%%[
SET @nome = AttributeValue("PrimeiroNome")
SET @saudacao = IIF(Empty(@nome), "Olá!", Concat("Olá, ", ProperCase(@nome), "!"))
]%%
%%=v(@saudacao)=%%

Assunto e preheader também

O mesmo cuidado vale para o assunto do e-mail, que é onde um "Olá, ," mais aparece. Defina as variáveis num bloco AMPscript no corpo do e-mail e use %%=v(@saudacao)=%% no campo de assunto: o assunto enxerga as variáveis definidas no conteúdo.

Checklist rápido

Situação O que usar
Campo pode não existir na Data Extension AttributeValue("Campo")
Campo pode chegar vazio Empty(@var) com um valor padrão
Texto vindo de importação Trim() e ProperCase()
Decisão simples numa linha IIF()
Imprimir variável no HTML ou no assunto %%=v(@var)=%%

Resumo

Leia atributos com AttributeValue, trate o vazio com Empty e sempre tenha um valor padrão. Com isso, a mesma peça de e-mail funciona com qualquer Data Extension e nenhum cliente recebe um texto quebrado.

Leia também

Leia também
Título Tipo Plataforma Faixa Leitura
Subscriber Key igual ao e-mail: o cliente que troca de e-mail vira outra pessoa Erro Marketing Cloud Engagement Amarela 4 min
Query Activity em Overwrite direto na Data Extension final Erro Marketing Cloud Engagement Amarela 4 min
Lookup dentro de loop no AMPscript: rápido no teste, lento no envio real Erro Marketing Cloud Engagement Verde 3 min
Query Activity que estoura os 30 minutos e para a automação Erro Marketing Cloud Engagement Verde 3 min