> ## Documentation Index
> Fetch the complete documentation index at: https://br.developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar e-mails com conteúdo programável

<Alert type="warning">
  Esse recurso está no momento em beta. Ao usar esta funcionalidade, você concorda com os [termos de versão beta do desenvolvedor](https://legal.hubspot.com/hubspot-beta-terms). Este guia se refere à funcionalidade disponível somente através dessa versão beta. [Participe da versão beta em seus modelos ou módulos.](https://knowledge.hubspot.com/pt/marketing-email/create-programmable-emails)
</Alert>

<ProductTier tiers={['marketing_hub-professional', 'marketing_hub-enterprise']} />

Use conteúdo programável para personalizar os e-mails com dados da sua conta da HubSpot usando HubL.

As fontes de dados que você pode usar em um e-mail programável dependem da sua assinatura do HubSpot:

* Se você tiver uma assinatura ***Marketing Hub*** *Professional*, poderá usar os dados de objetos padrão do CRM, como contatos, empresas e produtos.
* Se você tiver uma assinatura ***Marketing Hub*** *Enterprise*, também poderá usar fontes estruturadas como tabelas do [HubDB](https://developers.hubspot.com/docs) e [objetos personalizados](https://knowledge.hubspot.com/pt/records/use-custom-objects). Esses dados podem ser filtrados com base nas propriedades de contato do destinatário.

Por exemplo, um site imobiliário poderia ter um formulário para os prospects preencherem com suas necessidades residenciais. O envio de formulário pode acionar um fluxo de trabalho que envia ao prospect um e-mail com imóveis nos quais ele pode estar interessado.

## Limites de envio de e-mail

Você pode incluir as funções HubL de CRM [crm\_object](/cms/reference/hubl/functions#crm-object), [crm\_objects](/cms/reference/hubl/functions#crm-objects) e [crm\_associations](/cms/reference/hubl/functions#crm-associations) em um e-mail programável, mas qualquer e-mail que inclua essas funções específicas estará sujeito aos limites abaixo, que se baseiam no número de destinatários para os quais você está enviando:

<table>
  <tbody>
    <tr>
      <td>
        <strong>Total de destinatários</strong>
      </td>

      <td>
        <strong>Número máximo de funções do CRM HubL</strong>
      </td>
    </tr>

    <tr>
      <td>500.000</td>
      <td>1</td>
    </tr>

    <tr>
      <td>250.000</td>
      <td>2</td>
    </tr>

    <tr>
      <td>165.000</td>
      <td>3</td>
    </tr>

    <tr>
      <td>125.000</td>
      <td>4</td>
    </tr>

    <tr>
      <td>100.000</td>
      <td>5</td>
    </tr>
  </tbody>
</table>

Enviar um e-mail que atenda ou exceda esses limites vai atrasar ou cancelar o envio do e-mail.

Além dos limites descritos acima, esteja ciente das advertências adicionais listadas abaixo:

* Se você clonar um e-mail programável, ele não poderá ser enviado enquanto o original ainda estiver em processamento. Você deve aguardar pelo menos 1 hora entre cada envio de e-mail.
* Você não pode conduzir um teste A/B para um e-mail programável que inclua uma função HubL `crm_object`, `crm_objects` ou `crm_associations`. Os e-mails enviados usando essas funções têm tempos de envio significativamente mais lentos do que outros e-mails, o que pode produzir resultados de teste imprecisos.

## 1. Crie um módulo de e-mail programável

Para criar o módulo de e-mail para acessar seus dados do HubDB ou do objeto personalizado:

* Na sua conta da HubSpot, vá em **Marketing** > **Arquivos e Modelos** > **Ferramentas de design**.

* No canto superior esquerdo, clique em **Arquivo** e selecione **Novo arquivo**.

* Na caixa de diálogo, selecione **Módulo** para o tipo de arquivo e clique em **Próximo**. Em seguida, marque a caixa de seleção **E-mails** e insira um **nome** para o arquivo.

* Clique em **Criar**.

* Para ativar o e-mail programável para o módulo:

  * No inspetor à direita, ative a opção **Ativar módulo para versão beta do e-mail programável**.

  ![programmable-email-switch0](https://br.hubspot.com/hubfs/Knowledge_Base_2021/Developer/programmable-email-switch0.png)

* Você também pode habilitar o e-mail programável para um modelo de e-mail codificado adicionando `isEnabledForEmailV3Rendering: true` à parte superior do arquivo.

  ![enable-design-manager-template-for-programmable-email](https://knowledge.hubspot.com/hs-fs/hubfs/Imported%20sitepage%20images/enable-design-manager-template-for-programmable-email.png?width=510\&name=enable-design-manager-template-for-programmable-email.png)

Com o módulo criado, você adicionará o código para acessar os dados do seu CRM. Os exemplos a seguir demonstram como consultar de diferentes fontes de dados.

### Objetos padrão

Você pode usar as funções HubL, como [crm\_object](/cms/reference/hubl/functions#crm-object), [crm\_objects](/cms/reference/hubl/functions#crm-objects) e [crm\_associations](/cms/reference/hubl/functions#crm-associations) para consultar dados de objetos padrão em sua conta, como contatos, empresas ou produtos.

O código a seguir usa a função HubL [`crm_object`](/cms/reference/hubl/functions#crm-object) para consultar os dados de um produto com ID `2444498793` e renderizar o nome, a descrição e o preço:

```hubl theme={null}
{% set product = crm_object("product", 2444498793, "name,description,price") %}

<div>
  <p>
    <span>Name: </span>
    <span>{{ product.name }}</span>
  </p>
  <p>
    <span>Description: </span>
    <span>{{ product.description }}</span>
  </p>
  <p>
    <span>Price: </span>
    <span>{{ product.price }}</span>
  </p>
</div>
```

### Objetos personalizados

Se você tiver uma conta do ***Marketing Hub** Enterprise*, poderá consultar os dados de um objeto personalizado criado na sua conta.

O código abaixo recupera dados de um objeto personalizado chamado *Propriedade*, retornando valores (por exemplo, local, preço) armazenados nas propriedades do objeto personalizado.

Observe que o exemplo abaixo usa o nome totalmente qualificado do objeto personalizado como primeiro argumento ao invocar a `crm_objects` [função do HubL](/cms/reference/hubl/functions#crm-objects).

* O nome totalmente qualificado começa com o ID da conta da HubSpot (prefixado com `p`), seguido por um sublinhado e o nome em plural em letra minúscula do objeto personalizado (por exemplo, `properties`).
* Você pode recuperar um objeto `fullyQualifiedName` fazendo uma solicitação `GET` à [API de esquema de objetos](https://developers.hubspot.com/docs).

```hubl theme={null}
{% set real_estate_listings = crm_objects("p2990812_properties", "", "listing_name,location, price, address, type") %}

{% for home in real_estate_listings.results %}
    {{ home.address}} <br>
	{{ home.price }} <br>
	<img
	alt="{{ home.name }}"
	src="{{ home.hero_image }}"
	style="outline: none; max-width: 100%;"
	width="260px"
	/>
	<br>
	<hr>
{% endfor %}
```

<Alert type="warning" titleText="Observação:">
  Se o nome do seu objeto personalizado contiver hifens (por exemplo, *Meu-Objeto-Personalizado*), suas propriedades podem <u>não</u> ser renderizadas em um e-mail programável. Você pode recriar o objeto personalizado com os hifens omitidos [diretamente em sua conta da HubSpot](https://knowledge.hubspot.com/pt/object-settings/create-custom-objects), ou pode usar a [API de objetos personalizados](/api-reference/crm-custom-objects-v3/guide).
</Alert>

Para filtrar os dados retornados para cada destinatário, você pode adicionar um parâmetro `query` que filtrará os resultados pelas propriedades de contato do destinatário. Veja a [lista completa de opções de filtro](/api-reference/cms-hubdb-v3/guide#filter-returned-rows).

```hubl theme={null}
{% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&city="~contact.city"&order=listing_name" %}
{% set real_estate_listings = crm_objects("p2990812_Property", query, "listing_name,location, price, address, type") %}
{% for home in real_estate_listings.results %}

  ...

{% endfor %}
```

### HubDB

Se você tiver uma conta do ***Marketing Hub*** *Enterprise*, poderá usar os dados da tabela HubDB no e-mail.

O código a seguir usa a função HubL [`hubdb_table_rows`](/cms/reference/hubl/functions#hubdb-table-rows) para recuperar todos os dados da tabela. Isso listará todas as propriedades imobiliárias no e-mail, apresentando os detalhes de cada propriedade junto com sua imagem.

```hubl theme={null}
{% set real_estate_listings = hubdb_table_rows(1234567) %}

{% for home in real_estate_listings%}
    {{ home.address}} <br>
	{{ home.price }} <br>
	<img
	alt="{{ home.name }}"
	src="{{ home.hero_image.url }}"
	style="outline: none; max-width: 100%;"
	width="260px"
	/>
	<br>
	<hr>
{% endfor %}
```

Para filtrar os dados retornados para cada destinatário, você pode adicionar um parâmetro `query` que filtrará os resultados pelas propriedades de contato especificadas. Veja a [lista completa de opções de filtro](/api-reference/cms-hubdb-v3/guide#filter-returned-rows).

```hubl theme={null}
{% set query = "price__lte="~contact.budget_max|int~"&price__gte="~contact.budget_min|int~"&persona="~contact.hs_persona.value~"&order=listing_name" %}

{% for home in real_estate_listings %}

	...

{% endfor %}
```

<Alert type="info">
  No exemplo acima, a propriedade de contato *Budget max* é referenciada com `contact.budget_max`, enquanto *Persona* é referenciada com `contact.hs_persona.value`. Isso ocorre porque *Persona* é uma [propriedade de enumeração](https://knowledge.hubspot.com/pt/properties/property-field-types-in-hubspot), que requer um `.value` adicional para analisar o valor da propriedade, diferentemente de outros tipos de propriedade.
</Alert>

## 2. Adicionar o módulo a um e-mail

Com o módulo publicado, você o adicionará ao corpo do e-mail de arrastar e soltar.

* Na sua conta da HubSpot, acesse **Marketing** > **E-mail**.
* Selecione o **email** que você criou.
* Na barra lateral esquerda, em *Conteúdo*, clique em **Mais**. Localize seu módulo de e-mail programável e arraste-o para o corpo do email.

![drag-and-drop-email-editor-more-modules](https://br.hubspot.com/hubfs/Knowledge_Base_2021/Developer/drag-and-drop-email-editor-more-modules.png)

Se você tiver configurado o módulo para filtrar dados por propriedades de contato específicas, a visualização do e-mail aparecerá em branco. Isso ocorre porque a ferramenta de e-mail não foi definida para visualizar o e-mail como um contato específico.

Para visualizar a aparência do e-mail como um contato específico:

* No canto superior direito, clique em **Ações** e selecione **Visualizar**.

![email-actions-menu0](https://br.hubspot.com/hubfs/Knowledge_Base_2021/Developer/email-actions-menu0.png)

* Na próxima tela, clique no menu suspenso **Visualizar como um contato específico**, depois selecione um **contato**.

![preview-email-as-specific-contact0](https://br.hubspot.com/hubfs/Knowledge_Base_2021/Developer/preview-email-as-specific-contact0.png)

Agora você deve ver apenas os dados relevantes para o destinatário, filtrados por suas propriedades de contato.

![Captura de tela da visualização do e-mail](https://f.hubspotusercontent00.net/hubfs/53/preview%20window.png)

Se um módulo ou modelo de e-mail contiver código personalizado com HubL não resolvido, um módulo de espaço reservado aparecerá em seu lugar.

![placeholder-module-in-programmable-email](https://br.hubspot.com/hubfs/Knowledge_Base_2023_2024/placeholder-module-in-programmable-email.png)

<Alert type="warning">
  É importante ter sempre dados de fallback para enviar caso não haja linhas do HubDB ou registros de objetos personalizados que atendam aos critérios definidos. Caso contrário, o destinatário poderá receber um e-mail em branco.

  Esta versão beta pode causar problemas com modelos existentes. É importante testar todas as alterações minuciosamente antes de publicar e enviar um e-mail.
</Alert>

## Mais tutoriais focados no HubDB

* [Criar páginas dinâmicas com o HubDB](https://developers.hubspot.com/docs)
* [Como unir várias tabelas HubDB](https://developers.hubspot.com/docs)
* [Como criar uma página dinâmica de membro da equipe com o HubDB](https://developers.hubspot.com/docs)
* [Como criar páginas dinâmicas multiníveis usando o HubDB](https://developers.hubspot.com/docs)

## HubSpot Academy

* [Usar objetos personalizados e HubDB no CMS Hub](https://academy.hubspot.com/lessons/other_data_sources_hubdb_and_custom_objects)
