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