Receitas do Personalization personalization-recipes
Esta página fornece padrões de personalização prontos para uso para os casos de uso mais comuns no Adobe Journey Optimizer. Todos os exemplos usam a sintaxe do editor de personalização e podem ser copiados diretamente para o conteúdo de email, SMS ou push.
Para obter uma referência completa das funções disponíveis, consulte Funções auxiliares, Funções de data/hora, Funções de cadeia de caracteres e Funções de matriz.
Receitas de data e hora date-time-recipes
Receita 1 — Exibir a data atual em um formato legível recipe-current-date
Use formatDate com getCurrentZonedDateTime() para renderizar a data de hoje em qualquer formato:
{%= formatDate(getCurrentZonedDateTime(), "MMMM dd, yyyy") %}
Saída (exemplo): April 11, 2026
Padrões comuns de formato:
"dd/MM/yyyy"11/04/2026"MM/dd/yyyy"04/11/2026"EEEE, MMMM dd"Saturday, April 11"yyyy-MM-dd"2026-04-11y (ano civil) em vez de Y (ano baseado em semana) para evitar resultados inesperados nos limites do ano. Consulte caracteres padrão para obter a referência completa.Receita 2 — Contagem regressiva para uma data de expiração ou de evento recipe-countdown
Use dateDiff para calcular o número de dias restantes até um atributo de data de perfil e, em seguida, renderizá-lo dinamicamente:
Saída (exemplo): Your reward points expire in 7 days. Use them before they're gone!
Receita 3 — X dias antes de uma data final dinâmica recipe-days-before
Para calcular uma data X dias antes de um atributo de perfil (por exemplo, para referência em conteúdo ou linhas de assunto), use addDays com um deslocamento negativo:
{%= formatDate(addDays(stringToDate(profile.subscription.endDate), -7), "MMMM dd, yyyy") %}
Saída (exemplo): April 04, 2026 (7 dias antes de 11 de abril)
Para também definir uma hora fixa do dia (por exemplo, 9h), combine com setHours:
{%= formatDate(setHours(addDays(stringToDate(profile.subscription.endDate), -7), 9), "dd/MM/yyyy HH:mm") %}
Fórmula 4 — Exibir a hora atual somente como HH:MM recipe-time-only
Use extractHours e extractMinutes para mostrar apenas a parte de tempo, com uma proteção zero à esquerda por minutos:
Saída (exemplo): Your appointment is at 14:05.
Fórmula 5 — Detectar fim de semana vs. dia da semana recipe-weekend
Use dayOfWeek para adaptar o conteúdo com base no dia. A função retorna 1 (segunda-feira) a 7 (domingo). Usar o operador único = (sintaxe PQL, não ==):
dayOfWeek() é para adaptar o conteúdo com base no dia. Para perfis de roteamento diferentes em uma jornada com base no dia da semana, use a opção incorporada Condição de tempo → Dia da semana na atividade Condição de jornada. Saiba maisReceitas de matriz e loop array-recipes
Fórmula 6 — Listar todos os itens de uma matriz de perfis recipe-list-items
Use {{#each}} para iterar sobre uma matriz de perfil e renderizar cada item. Isso está disponível somente no editor de personalização (email, SMS, push):
Saída (exemplo):
- Running shoes: 89€
- Water bottle: 15€
- Gym bag: 45€
{{#each}} na atividade de condição de jornada. Para filtragem de matriz em condições, use funções de gerenciamento de coleção.Receita 7 — Mostrar os N itens principais de uma matriz por preço recipe-first-n
Use topN para classificar e recuperar os N itens principais por um campo numérico. Como topN é uma função PQL, atribua-a a uma variável primeiro com {% let %} e, em seguida, execute um loop com {{#each}}:
topN(profile.orders, price, 3) classifica os pedidos por price em ordem decrescente e retorna os 3 primeiros — não retorna simplesmente os 3 primeiros itens na ordem original da matriz.Ou use head para obter apenas o único item superior:
{%= head(profile.purchases.recentItems).name %}
Fórmula 8 — Renderizar conteúdo condicionalmente por item da matriz recipe-conditional-loop
Use {%#if%} dentro de {{#each}} para renderizar a saída somente para itens correspondentes. Defina um alias de loop com as |order| para que o avaliador do PQL possa resolver a referência de atributo na condição:
this.status funciona em expressões Handlebars, mas não foi resolvido pelo avaliador do PQL dentro de {%#if%}. Usar um alias de loop nomeado (por exemplo, order) torna o atributo disponível para os contextos Handlebars e PQL.Cadeia de caracteres e receitas de formatação string-recipes
Receita 9 — Limpar uma string com replaceAll e reutilizá-la recipe-replaceall-reuse
replaceAll retorna um novo valor — ele não modifica o original. Use {% let %} para armazenar o resultado e referenciá-lo várias vezes sem repetir a chamada de função:
Saída (exemplo):
Hi John,
Your exclusive code is: WELCOME-JOHN
Receita 10 — Aspas duplas em um valor na saída JSON recipe-json-quotes
Para incluir aspas duplas literais em uma cadeia de caracteres (por exemplo, gerando JSON para uma carga personalizada), use uma barra invertida (\") para escapará-la:
Saída: { "greeting": "Hello \"John\"" }
Fórmula 11 — Formatar um componente de data em maiúsculas recipe-uppercase-date
Combine formatDate com upperCase para renderizar os nomes de mês ou dia em maiúsculas:
{%= upperCase(formatDate(getCurrentZonedDateTime(), "MMMM")) %}
Saída (exemplo): APRIL
Para uma string de data em maiúsculas completa:
{%= upperCase(formatDate(profile.person.birthDateTime, "EEEE MMMM dd yyyy")) %}
Saída (exemplo): WEDNESDAY JANUARY 01 2020
Receitas de lógica condicional conditional-recipes
Receita 12 — IF/ELSEIF/ELSE no conteúdo personalizado recipe-if-elseif
Use {%#if%}, {%else if%} e {%else%} para lógica condicional de várias ramificações. Esse padrão funciona em conteúdo e fragmentos de email:
Receita 13 — Exibição de atributo seguro nulo recipe-null-safe
Use um fallback condicional para evitar a renderização de valores vazios quando um atributo de perfil for nulo ou estiver ausente:
Ou incorporado com um padrão de estilo ternário usando isEmpty:
receitas de caso de borda do PQL pql-edge-cases
Fórmula 14 — Fazer referência a uma chave de atributo hifenizada recipe-hyphenated-key
Se o nome do campo de esquema XDM contiver hifens (por exemplo, order-total, event-type), coloque-o entre acentos graves dentro de uma expressão PQL para impedir que o hífen seja interpretado como um operador de subtração:
{%= profile.events.`order-total` > 100 %}
{%= ... %}). Eles não são aceitos na interpolação ({{...}}) de Handlebars simples. Se você precisar renderizar um valor de campo hifenizado diretamente, avalie-o por meio de uma expressão PQL ou armazene-o em uma variável usando {% let %} primeiro.Receita 15 — Fazer referência a uma ID de evento numérica em um atributo de contexto recipe-numeric-event-id
Ao usar um evento de contexto de jornada cuja ID é uma sequência numérica (por exemplo, 1697323153), coloque a ID entre acentos graves e use {% let %} com toDateTime() e formatDate():
Saída (exemplo): Your appointment: 18/03/2026 14:30
Fórmula 16 — Coerção de tipo: comparar um campo de string com um número recipe-type-coercion
O PQL é altamente digitado. Quando um campo de perfil é armazenado como uma cadeia de caracteres, mas você precisa compará-lo numericamente, converta-o primeiro com stringToNumber():
{%= stringToNumber(profile.loyalty.pointsBalance) > 500 %}
Para campos booleanos armazenados como strings:
{%= toBool(profile.consents.email.val) = true %}