Última modificación: 28 de agosto de 2025
Las plantillas de cotización personalizadas pueden acceder a los datos de cotización y a algunos objetos asociados directamente desde las plantillas. Los datos disponibles dependen de los datos que tengas en tu CRM, así como de los datos agregados a la propia cotización. Mientras desarrollas una plantilla de cotización, puedes usar datos simulados proporcionados por HubSpot para completar la plantilla, lo que puede ayudar a obtener una vista previa de esta. En la carpeta @hubspot, navega a la carpeta cms-quotes-theme. En la carpeta de templates, consulta las plantillas bold.html o minimal.html. Estas plantillas contienen el siguiente bloque de código en la parte superior:
{% from "../imports/mock_data.html" import SAMPLE_TEMPLATE_DATA as mock_data %}
{% from "../imports/module_defaults.html" import MODULE_DEFAULTS as module_defaults %}
{% set QUOTE = template_data.quote || mock_data.quote %}
{% set CURRENCY = QUOTE.hs_currency || "USD" %}
{% set LOCALE = QUOTE.hs_locale || "en-US" %}
{% set ASSOCIATED_OBJECTS = QUOTE.associated_objects %}
{% set LINE_ITEMS = ASSOCIATED_OBJECTS.line_items %}
{% set ADDITIONAL_FEES = ASSOCIATED_OBJECTS.additional_fees %}
{% set TOTALS = ASSOCIATED_OBJECTS.totals || ASSOCIATED_OBJECTS.totals %}
{% set QUOTE_TOTAL = TOTALS.total %}
{% set SUB_TOTALS = TOTALS.subtotals %}
{% set DEAL = ASSOCIATED_OBJECTS.deal %}
Los datos simulados se importan primero desde el archivo mock_data.html y luego se establecen en la variable QUOTE para usar los datos que se encuentran en template_data si están disponibles. La variable QUOTE también se usa para rellenar las otras variables en esta lista, como ASSOCIATED_OBJECTS, para hacer que el acceso a esos datos sea menos verbal. Sin embargo, puedes estructurar tus datos de manera diferente, según tus preferencias. En el código anterior, notarás que template_data también se usa para establecer la variable QUOTE principal. template_data es un objeto que contiene todos los datos reales para la cotización y el negocio en la página. Si no se encuentra ese objeto en la plantilla, HubSpot carga los datos desde mock_data.html.

Objeto Template_data

A la gran mayoría de los datos se puede acceder directamente a través del objeto template_data. Puedes usar {{ template_data|pprint }} en tu plantilla para ver el objeto completo proporcionado.
VariableTypeDescription
template_datadictUn diccionario que contiene la cotización, quote.associated_objects y totaliza los diccionarios.

Variables de cotización

La información específica de esta cotización individual.
VariableTypeDescription
template_data.quotedictDiccionario que contiene todos los datos para la cotización en sí.
template_data.quote.associated_objects.deal.hs_object_idIntegerID del negocio
template_data.quote.hubspot_owner_idIntegerID del propietario del negocio
template_data.quote.hs_all_owner_idsinteger or array of integersID de propietarios de negocios
template_data.quote.hs_created_by_user_idIntegerUsuario que creó la cotización.
template_data.quote.hs_lastmodifieddatedatetimeFecha en que se modificó por última vez la cotización. En formato de época.
template_data.quote.hubspot_owner_assigneddatedatetimeFecha en que se asignó un propietario a la cotización. En formato epoch.
template_data.quote.hs_createdatedatetimeFecha y hora en que se creó la cotización. En formato epoch.
template_data.quote.hs_expiration_datedatetimeFecha en que vence. En formato epoch.
template_data.quote.hs_titleStringTítulo de la cotización
template_data.quote.hs_template_typeString”CUSTOMIZABLE_QUOTE_TEMPLATE”
template_data.quote.hs_slugStringSlug de URL para la página web de la cotización.
template_data.quote.hs_proposal_template_pathStringRuta del sistema de archivos del desarrollador a la plantilla. (incluye extensión de archivo)
template_data.quote.hs_quote_amountStringCantidad de dinero
template_data.quote.hs_currencyStringMoneda en la que se encuentra el importe de la cotización en código de moneda ISO 4217 de 3 caracteres.”USD”
template_data.quote.hs_languageStringCódigo de idioma”es”
template_data.quote.hs_localeStringCódigo de configuración regional”es-es”
template_data.quote.hs_termsStringTexto de términos proporcionado por el creador de cotizaciones
template_data.quote.hs_sender_firstnameStringNombre de la persona que envía la cotización.
template_data.quote.hs_sender_company_nameStringNombre de la empresa de la persona que envía la cotización
template_data.quote.hs_sender_company_image_urlStringLogotipo de la empresa para la persona que envía la cotización.
template_data.quote.hs_statusStringEstado de la cotización.”APPROVAL_NOT_NEEDED”
template_data.quote.hs_primary_colorstring/hex color code”#425b76”
template_data.quote.hs_quote_numberStringNúmero de identificación de cotización único.
template_data.quote.hs_payment_enabledbooleanSe utiliza para probar si se deben mostrar los campos de pago.
template_data.quote.hs_esign_enabledbooleanSe usa para probar si se deben mostrar los campos de firma electrónica.
¿No puedes encontrar una variable que estás buscando?Hay más variables a las que puedes acceder dentro de template_data. Usa |pprint para verlas. Además, algunas variables en las asociaciones de cotización solo pueden estar disponibles en función de la cotización/negocio.Estaremos repasando esta documentación para mostrar y explicar más datos a los que tienes acceso. Aparte de una bonita impresión, puedes ver el archivo de datos simulado dentro del cms-quote-theme, para ver lo que está disponible y la estructura en la que viene.

Objetos asociados

En una plantilla de cotización, puedes acceder a los datos de los registros asociados de una cotización, como operaciones o empresas, usando associated_objects. Por ejemplo, puedes agregar el logotipo del registro de empresa asociada del destinatario de la cotización a una cotización usando el siguiente código:
{% set company_avatar_url = template_data.quote.associated_objects.company.hs_avatar_filemanager_key %}
{% if company_avatar_url %}
  <img src="{{ template_data.quote.associated_objects.company.hs_avatar_filemanager_key }}" width="400" alt="{{ template_data.quote.associated_objects.company.name }}">
{% else %}
  <!-- company does not have an assigned image-->
{% endif %}

Nota:

Solo aparecerán logotipos establecidos manualmente. Los logotipos detectados automáticamente no aparecerán para evitar que aparezcan logotipos no intencionales en la plantilla de cotización.
El código anterior establece en primer lugar una variable que busca el logotipo de la empresa asociada a la cotización. Luego, usando una sentencia if, la plantilla muestra ese logotipo, si está disponible. Si no se ha establecido manualmente ningún logotipo para la empresa, no se muestra ninguno.

Objetos personalizados

Los datos de objetos personalizados se pueden mostrar o usar dentro de una cotización de un par de maneras diferentes. Debido a que la estructura de cada objeto personalizado puede variar, deberás obtener propiedades específicas en función de cómo hayas estructurado tu objeto personalizado. La cotización template_data por opción predeterminada tiene objetos asociados personalizados en ella. Por ejemplo, se incluyen objetos personalizados asociados con negocios. Para acceder a ellos, puedes usar el siguiente código:
{% set quote_associated_custom_objects = template_data.quote.associated_objects.deal.associated_objects.custom_objects %}

{{ quote_associated_custom_objects|pprint }}
{# |pprint is useful for understanding the structure of the data, you can leave it off when outputting values for display. #}

Nota:

Debido a que los objetos personalizados son únicos para cada cuenta, los datos simulados no incluyen un objeto personalizado de ejemplo. Esto significa que en la vista previa de la plantilla en el administrador de diseño puede ver un error o los datos del objeto personalizado simplemente no se muestran. En cambio, deberás obtener una vista previa de la plantilla con tus datos reales de CRM, lo que puedes hacer creando una cotización a partir de la plantilla.
Puedes entonces acceder a cada tipo de objeto personalizado agregando su ID de tipo de objeto personalizado con formato de guiones bajos. Por ejemplo: template_data.quote.associated_objects.deal.associated_objects.custom_objects._2_2193031 También puedes buscar un objeto personalizado usando las funciones crm_associations() y crm_objects(). Por ejemplo, si quisieras buscar un objeto personalizado asociado con un negocio, podrías pasar datos de template_data:
{% set quote_associated_object = crm_associations(template_data.quote.associated_objects.deal.hs_object_id, "USER_DEFINED", 152) %}
{# 152 is an example of an association type id, you would need to use the appropriate id for your use-case. #}
{{ quote_associated_object }}

Recursos relacionados