Pular para o conteúdo principal

TreatAsContentArea

Descrição

A função TreatAsContentArea pega um conteúdo que você buscou de uma Data Extension (ou outra fonte) e faz o SFMC tratá-lo como se fosse uma Content Area nativa - uma "Content Area virtual". Isso é muito útil quando você monta conteúdo dinâmico a partir de dados externos e precisa que ele seja rastreável via Impression Regions, ou quando quer reutilizar blocos de conteúdo identificados por uma chave. É bastante comum em cenários de e-mail marketing onde diferentes versões de conteúdo (texto e HTML) são armazenadas em Data Extensions e precisam ser renderizadas no momento do envio.

Sintaxe

TreatAsContentArea(contentKey, contentValue [, impressionRegion])

Parâmetros

ParâmetroTipoObrigatórioDescrição
contentKeystringSimChave que identifica o conteúdo. A função trata uma chave em contexto de texto como distinta de uma chave em contexto HTML - ou seja, você pode usar a mesma chave para identificar versões distintas de texto e HTML do conteúdo. O processamento das chaves é case-insensitive.
contentValuestringSimO conteúdo a ser armazenado para o envio do e-mail sob a chave especificada. Para recuperar esse conteúdo, use as funções HTTPGet() ou Lookup().
impressionRegionstringNãoNome da Impression Region para a Content Area virtual. O número máximo de blocos de conteúdo virtual é 300.

Exemplo básico

Buscando o conteúdo de um banner promocional em uma Data Extension e salvando como Content Area virtual para reuso no e-mail:

%%[
SET @conteudoBanner = Lookup("ConteudoEmail", "HtmlBanner", "Campanha", "BlackFriday2024")
TreatAsContentArea("BannerPromo", @conteudoBanner)
]%%

Saída:

O conteúdo HTML armazenado no campo "HtmlBanner" da Data Extension "ConteudoEmail"
(filtrado pela campanha "BlackFriday2024") é renderizado como uma Content Area
virtual identificada pela chave "BannerPromo".

Exemplo avançado

Cenário de régua de relacionamento onde cada cliente recebe um bloco de conteúdo personalizado baseado no seu segmento, com rastreamento via Impression Region para medir performance de cada variação:

%%[
SET @email = AttributeValue("EmailAddress")
SET @segmento = Lookup("Clientes_Segmentacao", "Segmento", "Email", @email)

IF @segmento == "Premium" THEN
SET @chaveConteudo = "OfertaPremium"
SET @htmlOferta = Lookup("ConteudoCampanhas", "HtmlBloco", "Segmento", "Premium")
SET @nomeImpressao = "Oferta Premium"
ELSEIF @segmento == "Recorrente" THEN
SET @chaveConteudo = "OfertaRecorrente"
SET @htmlOferta = Lookup("ConteudoCampanhas", "HtmlBloco", "Segmento", "Recorrente")
SET @nomeImpressao = "Oferta Recorrente"
ELSE
SET @chaveConteudo = "OfertaGeral"
SET @htmlOferta = Lookup("ConteudoCampanhas", "HtmlBloco", "Segmento", "Geral")
SET @nomeImpressao = "Oferta Geral"
ENDIF

TreatAsContentArea(@chaveConteudo, @htmlOferta, @nomeImpressao)
]%%

Saída:

Para um cliente Premium, o bloco HTML da oferta premium é renderizado
e rastreado na Impression Region "Oferta Premium".
Para um cliente do segmento Geral, o bloco genérico é renderizado
e rastreado na Impression Region "Oferta Geral".

Observações

⚠️ Atenção: Sempre sanitize a entrada do usuário dentro de um bloco TreatAsContentArea(). Remova, escape ou bloqueie conteúdo que contenha tags HTML ou código AMPscript. Uma abordagem segura é usar uma allowlist de caracteres permitidos. Isso é crítico - como o conteúdo é tratado como Content Area, qualquer código AMPscript ou HTML malicioso inserido será processado e renderizado.

⚠️ Atenção: O número máximo de blocos de conteúdo virtual (Content Areas virtuais) é 300 por envio. Se você estiver montando e-mails altamente dinâmicos com muitas variações, fique de olho nesse limite.

💡 Dica: A função trata chaves de forma case-insensitive - ou seja, "BannerPromo", "bannerpromo" e "BANNERPROMO" são a mesma chave. Porém, uma chave usada em contexto de texto é considerada distinta da mesma chave usada em contexto HTML. Isso significa que você pode usar a mesma chave para mapear a versão texto puro e a versão HTML do mesmo conteúdo sem conflito.

💡 Dica: Para buscar o conteúdo que será passado como contentValue, use Lookup() para Data Extensions ou HTTPGet() para fontes externas.

Funções relacionadas

  • TreatAsContent - renderiza uma string como conteúdo AMPscript/HTML, mas sem criar uma Content Area virtual com chave e Impression Region
  • Lookup - para buscar o conteúdo em uma Data Extension antes de passá-lo para TreatAsContentArea
  • HTTPGet - para buscar conteúdo de uma URL externa
  • ContentArea - para referenciar Content Areas reais (não virtuais)
  • ContentBlockByKey - para incluir Content Blocks por chave
  • BeginImpressionRegion / EndImpressionRegion - para criar Impression Regions manualmente em torno de blocos de conteúdo