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

# Crear correos con contenido programable

<Alert type="warning">
  Esta característica actualmente está en versión beta. Al usar esta funcionalidad, aceptas los [términos de la versión beta para desarrolladores](https://legal.hubspot.com/hubspot-beta-terms). Esta guía hace referencia a las funciones disponibles solo a través de esa versión beta. [Habilita la versión beta en tus plantillas o módulos.](https://knowledge.hubspot.com/es/marketing-email/create-programmable-emails)
</Alert>

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

Uso de contenido programable para personalizar correos electrónicos con datos de tu cuenta de HubSpot usando HubL.

El origen de los datos que puedes utilizar en un correo electrónico programable dependen de tu suscripción de HubSpot:

* Si tienes una suscripción a ***Marketing Hub*** *Pro*, puedes utilizar datos de objetos estándar del CRM, como contactos, empresas y productos.
* Si tienes una suscripción a ***Marketing Hub*** *Enterprise*, también puedes utilizar fuentes de datos estructuradas como tablas de [HubDB](https://developers.hubspot.com/docs) y [objetos personalizados](https://knowledge.hubspot.com/es/records/use-custom-objects). Estos datos se pueden filtrar según las propiedades de contacto del destinatario.

Por ejemplo, en un sitio web inmobiliario, los prospectos podrían completar un formulario con sus necesidades de vivienda. El envío de formularios podría desencadenar un workflow que le envíe al prospecto un correo electrónico con casas en las que pueda estar interesado.

## Límites de envío de correo electrónico

Puedes incluir las funciones de HubL del CRM [crm\_object](/cms/reference/hubl/functions#crm-object), [crm\_objects](/cms/reference/hubl/functions#crm-objects) y [crm\_associations](/cms/reference/hubl/functions#crm-associations) en un correo electrónico programable, pero cualquier correo que incluya estas funciones específicas está sujeto a los siguientes límites según el número de destinatarios a los que se lo estés enviando:

<table>
  <tbody>
    <tr>
      <td>
        <strong>Total de destinatarios</strong>
      </td>

      <td>
        <strong>Número máximo de funciones de HubL del CRM</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>

El envío de un correo electrónico que cumple o excede uno de los límites anteriores retrasará o cancelará el envío de tu correo.

Además de los límites descritos anteriormente, ten en cuenta las advertencias adicionales que se indican a continuación:

* Si clonas un correo electrónico programable, no se podrá enviar mientras el original aún esté en estado de procesamiento. Debes esperar al menos 1 hora entre cada envío de correo electrónico.
* No puedes realizar una prueba A/B para un correo electrónico programable que incluya una función de HubL `crm_object`, `crm_objects` o `crm_associations`. Los correos electrónicos enviados mediante estas funciones tienen tiempos de envío significativamente más lentos que otros correos, lo que puede producir resultados inexactos en las pruebas.

## 1. Crear un módulo de correo electrónico programable

Para crear el módulo de correo electrónico para acceder a tus datos de HubDB u objeto personalizado:

* En tu cuenta de HubSpot, navega hasta **Marketing** > **Archivos y plantillas** > **Administrador de diseño**.

* En la parte superior izquierda, haz clic en **Archivo**, y luego selecciona **Nuevo archivo**.

* En el cuadro de diálogo, selecciona **Módulo** para el tipo de archivo y luego haz clic en **Siguiente**. Luego, selecciona la casilla de verificación **Correos electrónicos** e introduce un **nombre** para el archivo.

* Haz clic en **Crear**.

* Para habilitar el correo electrónico programable para el módulo:

  * En el inspector de la derecha, activa el interruptor **Activar módulo para correo electrónico programable beta**.

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

* También puedes habilitar el correo electrónico programable para una plantilla de correo electrónico codificada agregando `isEnabledForEmailV3Rendering: true` en la parte superior del archivo.

  ![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)

Con el módulo creado, agregarás entonces el código para acceder a los datos desde tu CRM. En los siguientes ejemplos se muestra cómo consultar desde diferentes fuentes de datos.

### Objetos estándar

Puedes utilizar las funciones de HubL como [crm\_object](/cms/reference/hubl/functions#crm-object), [crm\_objects](/cms/reference/hubl/functions#crm-objects) y [crm\_associations](/cms/reference/hubl/functions#crm-associations) para consultar datos de objetos estándar en tu cuenta, como contactos, empresas o productos.

El siguiente código utiliza la función de HubL [`crm_object`](/cms/reference/hubl/functions#crm-object) para consultar los datos de un producto con un ID de `2444498793` y representar el nombre, la descripción y el precio:

```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

Si tienes una cuenta de ***Marketing Hub** Enterprise*, puedes consultar datos de un objeto personalizado que hayas creado en tu cuenta.

El siguiente código recupera datos de un objeto personalizado llamado *Propiedad*, devolviendo valores (por ejemplo, ubicación, precio) almacenados en las propiedades del objeto personalizado.

Ten en cuenta que el siguiente ejemplo utiliza el nombre totalmente calificado del objeto personalizado como primer argumento cuando se ejecuta la [función de HubL](/cms/reference/hubl/functions#crm-objects) `crm_objects`.

* El nombre totalmente calificado comienza con el ID de la cuenta de HubSpot (precedido por `p`), seguido de un guion bajo y el nombre en plural en minúsculas del objeto personalizado (por ejemplo, `properties`).
* Puedes recuperar un `fullyQualifiedName` de un objeto haciendo una solicitud `GET` a la [API del esquema de objetos del CRM](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="Nota:">
  Si el nombre de tu objeto personalizado contiene guiones (por ejemplo, *Mi-Objeto-Personalizado*), sus propiedades <u>no</u> se pueden mostrar en un correo electrónico programable. Puedes recrear el objeto personalizado con los guiones omitidos [directamente en tu cuenta de HubSpot](https://knowledge.hubspot.com/es/object-settings/create-custom-objects) o puedes usar la [API de objeto personalizado](/api-reference/crm-custom-objects-v3/guide).
</Alert>

Para filtrar los datos que se devuleven para cada destinatario, puedes agregar un parámetro `query`, el cual filtrará los resultados por las propiedades de contacto del destinatario. Consulta la [lista completa de opciones de filtros](/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

Si tienes una cuenta de ***Marketing Hub*** *Enterprise*, puedes usar datos de una tabla de HubDB en tu correo electrónico.

El siguiente código utiliza la función de HubL [`hubdb_table_rows`](/cms/reference/hubl/functions#hubdb-table-rows) para recuperar todos los datos de la tabla. Esto enumerará todas las propiedades inmobiliarias en el correo electrónico, mostrando los detalles de cada propiedad junto con su imagen.

```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 los datos que se devuelven para cada destinatario, puedes agregar un parámetro `query`, que filtrará los resultados por las propiedades de contacto especificadas. Consulta la [lista completa de opciones de filtros](/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">
  En el ejemplo anterior, se hace referencia a la propiedad de contacto *Presupuesto máximo* con `contact.budget_max`, mientras que a *Buyer persona* se hace referencia con `contact.hs_persona.value`. Esto se debe a que *Buyer persona* es una [propiedad de enumeración](https://knowledge.hubspot.com/es/properties/property-field-types-in-hubspot), que requiere un `.value` adicional para analizar el valor de la propiedad, mientras que otros tipos de propiedades no lo hacen.
</Alert>

## 2. Agregar el módulo a un correo electrónico

Con el módulo publicado, ahora lo agregarás al cuerpo del correo electrónico de arrastrar y soltar.

* En tu cuenta de HubSpot, navega hasta **Marketing** > **Correo electrónico**.
* Selecciona el **correo electrónico** que creaste.
* En la barra lateral izquierda, en *Contenido*, haz clic en **Más**. Encuentra tu módulo de correo electrónico programable y luego arrástralo hasta el cuerpo del correo.

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

Si configuraste el módulo para filtrar datos por propiedades de contacto específicas, la vista previa del correo electrónico aparecerá en blanco. Esto se debe a que la herramienta de correo electrónico no se ha configurado para obtener una vista previa del correo por un contacto específico.

Para obtener una vista previa de cómo será el correo electrónico para un contacto específico:

* En la parte superior derecha, haz clic en **Acciones** y luego selecciona **Vista previa**.

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

* En la siguiente pantalla, haz clic en el menú desplegable **Ver como un contacto específico** y luego selecciona un **contacto**.

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

Ahora deberías ver solo los datos relevantes para el destinatario, filtrados por sus propiedades de contacto.

![Captura de pantalla de la vista previa del correo electrónico](https://f.hubspotusercontent00.net/hubfs/53/preview%20window.png)

Si una plantilla o módulo de correo electrónico contiene código personalizado con HubL no resuelto, aparecerá un módulo de marcador de posición en su lugar.

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

<Alert type="warning">
  Es importante tener siempre datos de reserva para enviar en el caso de que no haya filas de HubDB o registros de objetos personalizados que cumplan con los criterios que estableciste. De lo contrario, el destinatario podría recibir un correo electrónico en blanco.

  Esta versión beta puede causar problemas con las plantillas existentes. Es importante probar los cambios antes de publicar y enviar un correo electrónico en directo.
</Alert>

## Más tutoriales enfocados en HubDB

* [Desarrollo de páginas dinámicas con HubDB](https://developers.hubspot.com/docs)
* [Cómo unir varias tablas de HubDB](https://developers.hubspot.com/docs)
* [Cómo crear una página dinámica para miembros del equipo con HubDB](https://developers.hubspot.com/docs)
* [Cómo crear páginas dinámicas multinivel usando HubDB](https://developers.hubspot.com/docs)

## HubSpot Academy

* [Uso de HubDB y objetos personalizados en CMS Hub](https://academy.hubspot.com/lessons/other_data_sources_hubdb_and_custom_objects)
