Aproveitar fragmentos de expressão use-expression-fragments

Nesta página: saiba como inserir e reutilizar fragmentos de expressão no editor de personalização, trabalhar com variáveis implícitas, usar fragmentos dentro de loops, personalizar campos editáveis e interromper herança no Adobe Journey Optimizer.

Ao usar o editor de personalização, você pode aproveitar todos os fragmentos de expressão criados ou salvos na sandbox atual.

Um fragmento é um componente reutilizável que pode ser referenciado em Journey Optimizer campanhas e jornadas. Essa funcionalidade permite pré-construir vários blocos de conteúdo personalizado que podem ser usados por usuários de marketing para reunir conteúdo rapidamente em um processo de design aprimorado. Saiba mais sobre fragmentos

➡️ Saiba como gerenciar, criar e usar fragmentos neste vídeo

Usar um fragmento de expressão use-expression-fragment

Para adicionar fragmentos de expressão ao seu conteúdo, siga as etapas abaixo.

NOTE
Você pode adicionar até 30 fragmentos em um determinado delivery. Os fragmentos só podem ser aninhados até um nível.
  1. Abra o editor de personalização e selecione o botão Fragmentos no painel esquerdo.

    A lista exibe todos os fragmentos de expressão criados ou salvos como fragmentos na sandbox atual. Saiba como criar fragmentos
    Eles são classificados por data de criação: os fragmentos de expressão adicionados recentemente são mostrados primeiro na lista.

    Você também pode atualizar esta lista.

    note
    NOTE
    Se alguns fragmentos foram modificados ou adicionados enquanto você está editando o conteúdo, a lista será atualizada com as alterações mais recentes.
  2. Coloque o cursor no local desejado no conteúdo e clique no ícone + ao lado de um fragmento de expressão para inserir a ID do fragmento correspondente no editor.

    note
    NOTE
    Você também pode adicionar fragmentos de expressão à seção <head> de um email ou modelo de conteúdo.

    note caution
    CAUTION
    Você pode adicionar qualquer fragmento do Rascunho ou do Live ao seu conteúdo. No entanto, você não poderá ativar sua jornada ou campanha se um fragmento com o status Rascunho estiver sendo usado nele. Na publicação do jornada ou da campanha, os fragmentos de rascunho mostrarão um erro e você precisará aprová-los para poder publicar.
  3. Depois que a ID do fragmento for adicionada, se você abrir o fragmento de expressão correspondente e editá-lo na interface, as alterações serão sincronizadas. Eles são propagados automaticamente para todas as jornadas/campanhas de rascunho ou ativas que contêm essa ID de fragmento.

  4. Clique no botão Mais ações ao lado de um fragmento. No menu contextual que é aberto, selecione Exibir fragmento para obter mais informações sobre esse fragmento. A ID do Fragmento também é exibida e pode ser copiada daqui.

  5. Você pode abrir o fragmento de expressão em outra janela para editar seu conteúdo e propriedades, usando a opção Abrir fragmento no menu contextual ou no painel Informações do fragmento. Saiba como editar um fragmento

  6. Em seguida, você pode personalizar e validar o conteúdo como de costume, usando todos os recursos de personalização e criação do editor de personalização.

  7. Em alguns casos, só é necessário calcular variáveis, de modo que talvez você queira ocultar o conteúdo do fragmento da expressão. Para fazer isso, use o atributo render e defina-o como false. Por exemplo:

    code language-none
    Hi {{profile.person.name.firstName|fragment id='ajo:fragmentId/variantId' mode ='inline' render=false}}
    
NOTE
Se você criar um fragmento de expressão que contenha várias quebras de linha e usá-lo no conteúdo de SMS ou push, as quebras de linha serão preservadas. Portanto, teste sua mensagem SMS ou push antes de enviá-la.

Usar variáveis implícitas implicit-variables

As variáveis implícitas aprimoram a funcionalidade do fragmento existente para melhorar a eficiência da reutilização de conteúdo e dos casos de uso de script. Os fragmentos podem usar variáveis de entrada e criar variáveis de saída que podem ser usadas no conteúdo da campanha e da jornada.

Esse recurso pode, por exemplo, ser usado para inicializar parâmetros de rastreamento de seus emails, com base na campanha ou jornada atual, e usar esses parâmetros nos links personalizados adicionados ao conteúdo do email.

Os seguintes casos de uso são possíveis:

  1. Usar variáveis de entrada em um fragmento.

    Quando um fragmento é usado em um conteúdo de ação de campanha/jornada, ele pode aproveitar as variáveis declaradas fora do fragmento. Veja um exemplo abaixo:

    Podemos ver acima que a variável utm_content está declarada no conteúdo da campanha. Quando o fragmento Hero block for usado, ele mostrará um link ao qual o valor do parâmetro utm_content será anexado. O resultado final é: https://luma.enablementadobe.com?utm_campaign= Product_launch&utm_content= start_shopping.

  2. Usar variáveis de saída de um fragmento.

    As variáveis calculadas ou definidas dentro de um fragmento estão disponíveis para uso no conteúdo. No exemplo a seguir, um fragmento F1 declara um conjunto de variáveis:

    Em um conteúdo de email, você pode ter a seguinte personalização:

    O fragmento F1 inicializa as seguintes variáveis: utm_campaigne utm_content. Em seguida, o link no conteúdo da mensagem terá esses parâmetros anexados. O resultado final é: https://luma.enablementadobe.com?utm_campaign= Product_launch&utm_content= start_shopping.

NOTE
No tempo de execução, o sistema expande o que está dentro dos fragmentos e interpreta o código de personalização de cima para baixo. Tendo isso em mente, é possível obter casos de uso mais complexos. Por exemplo, você pode fazer com que um fragmento F1 transmita variáveis para outro fragmento F2 abaixo. Você também pode ter um fragmento visual F1 transmitindo variáveis para um fragmento de expressão aninhado F2.

Usar fragmentos de expressão dentro de loops fragments-in-loops

Ao usar fragmentos de expressão em loops {{#each}}, é importante entender como funciona o escopo de variáveis. Os fragmentos de expressão podem acessar variáveis globais definidas no conteúdo da mensagem, mas não podem receber variáveis específicas de loop como parâmetros.

Padrão compatível: usar variáveis globais global-variables-in-loops

Os fragmentos de expressão podem fazer referência a variáveis globais definidas fora do fragmento, mesmo quando o fragmento é chamado de dentro de um loop. Essa é a abordagem recomendada quando você precisa usar fragmentos em contextos iterativos.

Exemplo: usando um fragmento com variáveis globais dentro de um loop

No conteúdo da mensagem, defina uma variável global e use um fragmento que faça referência a ela:

{% let globalDiscount = 15 %}

{{#each context.journey.actions.GetProducts.items as |product|}}
  <div class="product">
    <h3>{{product.name}}</h3>
    <p>Price: ${{product.price}}</p>
    {{fragment id='ajo:fragment123/variant456' mode='inline'}}
  </div>
{{/each}}

No fragmento de expressão (fragment123), é possível fazer referência à variável globalDiscount:

<p class="discount-info">Save {{globalDiscount}}% on all items!</p>

Esse padrão funciona porque a variável global pode ser acessada em toda a mensagem, incluindo em fragmentos, independentemente do contexto do loop.

Não suportado: transmitir variáveis de loop como parâmetros de fragmento loop-variables-limitations

Você não pode passar o item de iteração atual (por exemplo, product no exemplo acima) como um parâmetro para um fragmento de expressão. O fragmento não pode acessar diretamente variáveis de escopo de loop do bloco {{#each}} ao redor.

Exemplo: o que NÃO funciona

{{#each context.journey.actions.GetProducts.items as |product|}}
  <!-- This will NOT work as expected -->
  {{fragment id='ajo:fragment123/variant456' mode='inline' currentProduct=product}}
{{/each}}

O fragmento não pode receber product como parâmetro e usá-lo internamente porque a passagem de parâmetro para variáveis específicas de loop não tem suporte na implementação atual.

Soluções alternativas recomendadas fragments-in-loops-workarounds

Quando precisar usar fragmentos de expressão com dados de um loop, considere estas abordagens:

  1. Incluir lógica diretamente na mensagem: em vez de usar um fragmento para lógica específica de loop, adicione o código de personalização diretamente no bloco {{#each}}.

    code language-handlebars
    {{#each context.journey.actions.GetProducts.items as |product|}}
      <div class="product">
        <h3>{{product.name}}</h3>
        <p>Price: ${{product.price}}</p>
        {{#if product.price > 100}}
          <span class="premium-badge">Premium Product</span>
        {{/if}}
      </div>
    {{/each}}
    
  2. Usar fragmentos fora de loops: se o conteúdo do fragmento não for dependente de loop, chame o fragmento antes ou depois do bloco de iteração.

    code language-handlebars
    {{fragment id='ajo:fragment123/variant456' mode='inline'}}
    
    {{#each context.journey.actions.GetProducts.items as |product|}}
      <div class="product">
        <h3>{{product.name}}</h3>
        <p>Price: ${{product.price}}</p>
      </div>
    {{/each}}
    
  3. Definir várias variáveis globais: se você precisar passar valores diferentes para um fragmento nas iterações, defina variáveis globais antes de cada chamada de fragmento (embora isso limite a flexibilidade).

NOTE
Para iterar sobre dados contextuais e trabalhar com loops, consulte o manual abrangente sobre iterar sobre dados contextuais, que inclui práticas recomendadas, dicas de solução de problemas e padrões avançados.

Personalizar campos editáveis customize-fields

Se determinadas partes de um fragmento de expressão se tornaram editáveis usando variáveis, é possível substituir os valores padrão usando uma sintaxe específica. Saiba como tornar seus fragmentos personalizáveis

Para personalizar os campos, siga estas etapas:

  1. Insira o fragmento no código do menu Fragmentos.

  2. Use o código <fieldId>="<value>" no final da sintaxe para substituir o valor padrão da variável.

    No exemplo abaixo, estamos substituindo o valor de uma variável cuja ID é “esportes” pelo valor “ioga”. Isso exibirá “yoga” no conteúdo do fragmento em todos os locais em que a variável “sport” for referenciada.

Um exemplo mostrando como adicionar campos editáveis em fragmentos de expressão e substituir seus valores ao criar um email está disponível em esta seção.

Usar a resolução dinâmica do fragmento dynamic-resolution

Em vez de incorporar estaticamente uma ID de fragmento no tempo de design, você pode resolver a ID do fragmento dinamicamente no tempo de execução por recipient. Isso permite que perfis diferentes recebam blocos de conteúdo totalmente diferentes na mesma campanha ou jornada, com base em atributos de perfil, pesquisas de conjunto de dados ou dados de contexto.

Saiba como usar fragmentos dinâmicos

Interromper herança break-inheritance

Ao adicionar uma ID de fragmento ao editor de personalização, as alterações feitas no fragmento de expressão original são sincronizadas.

No entanto, também é possível colar o conteúdo de um fragmento de expressão no editor. No menu contextual, selecione Colar fragmento para inserir esse conteúdo.

Nesse caso, a herança do fragmento original é quebrada. O conteúdo do fragmento é copiado para o editor e as alterações não são mais sincronizadas.

Ele se torna um elemento independente que não está mais vinculado ao fragmento original; você pode editá-lo como qualquer outro elemento no seu código.

AI Knowledge Reference

This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.

For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.

  • TL;DR: This page explains how to insert, customize, and manage expression fragments in the personalization editor — including implicit variables, using fragments inside loops, editable fields, dynamic resolution, and breaking inheritance.

Intents:

  • Insert an expression fragment from the Fragments menu and understand automatic change propagation
  • Use implicit variables: input variables (declared outside the fragment, used inside) and output variables (declared inside the fragment, used in surrounding message content)
  • Use expression fragments inside loops — leverage global variables for fragment access; understand the limitation on passing loop-scoped variables as parameters
  • Override editable fields in a customizable fragment using <fieldId>="<value>" syntax
  • Resolve fragment IDs dynamically at runtime based on profile attributes, dataset lookups, or context data
  • Break inheritance by pasting fragment content directly into the editor

Glossary:

  • Expression fragment: A reusable personalization expression component referenced by ID across campaigns and journeys; changes to the fragment propagate automatically to all content referencing it. (product-specific)
  • Implicit variables: Variables that extend the fragment functionality — input variables (declared in campaign/journey content, consumed inside the fragment) and output variables (declared inside the fragment, available in the surrounding message content). (product-specific)
  • Input variable: A variable declared outside the fragment (in campaign or journey content) that the fragment can reference and use internally.
  • Output variable: A variable declared or computed inside a fragment that becomes available for use in the surrounding message content after the fragment is called.
  • Editable fields: Fragment variables exposed to allow the inserting user to override default values using <fieldId>="<value>" syntax, without editing the fragment source. (product-specific)
  • Dynamic fragment resolution: The ability to resolve a fragment ID at runtime (based on profile attributes, dataset lookups, or context data) rather than embedding a static fragment ID at design time. (product-specific)
  • Break inheritance: Using “Paste fragment” from the contextual menu copies the fragment’s content into the editor as a standalone element that no longer synchronizes with the original fragment. (product-specific)

Guardrails:

  • Maximum 30 fragments can be added in a given delivery.
  • Fragments can only be nested up to 1 level.
  • A journey or campaign cannot be activated or published if it contains a fragment with Draft status; draft fragments must be approved before publication.
  • Expression fragments cannot receive loop-scoped variables (the current {{#each}} iteration item) as parameters — this is a known limitation. Use global variables or inline logic as a workaround.
  • If a fragment containing multiple line breaks is used in SMS or push content, line breaks are preserved; test the content before sending.

Terminology:

  • Canonical name: expression fragment — variants: fragment, expression fragment
  • Synonyms: “fragment ID” = the identifier used to reference the fragment in expressions
  • Do not confuse: inserting a fragment by ID (referenced; changes propagate automatically to all content) ≠ breaking inheritance / paste fragment (content copied into editor; standalone element, no longer linked to original)
  • Do not confuse: input variables (declared outside the fragment, consumed inside) ≠ output variables (declared inside the fragment, consumed outside in surrounding message content)
  • Do not confuse: Draft fragment (can be added to content but blocks journey/campaign publication until approved) ≠ Live fragment (fully published; safe for active journeys and campaigns)

FAQ:

  • Q: How many fragments can be added in a single delivery? — Up to 30 fragments.
  • Q: Can fragments be nested inside other fragments? — Yes, but only up to 1 level of nesting.
  • Q: What happens if I use a Draft fragment in a journey or campaign? — You can add a Draft fragment to content, but you cannot activate or publish the journey or campaign until the fragment is approved and its status changes to Live.
  • Q: Can an expression fragment receive the current loop item (e.g., product in {{#each}}) as a parameter? — No. Expression fragments cannot receive loop-scoped variables as parameters. Use global variables declared outside the loop (which the fragment can access), or include the personalization logic directly within the loop instead of using a fragment.
  • Q: What is breaking inheritance and when should I use it? — Breaking inheritance means using “Paste fragment” from the contextual menu to copy the fragment’s content directly into the editor. The pasted content becomes a standalone element that no longer synchronizes with the original fragment — use this when you need to customize the content beyond what editable fields allow, knowing future changes to the original fragment will not propagate to this copy.
recommendation-more-help
journey-optimizer-help