Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Supported products

Build custom React-based modules that sales reps and admins can add to quote templates and individual quotes. They give developers full control over a module’s appearance and behavior, while keeping the underlying code hidden from non-technical editors. This is distinct from legacy quote templates, which require the entire quote to be custom coded as a single HubL template. With custom coded modules, you build only the specific components you need. The rest of the quote can use standard HubSpot modules.
Please note: at this time, creating projects with quote modules isn’t supported through existing HubSpot CLI commands. Instead, use the example project to get started.

Use cases

Custom coded modules can address a wide range of quoting needs, including:
  • Custom line items table: replace the standard Line items module to match your branding or add functionality not natively supported, such as:
    • Sections: grouping line items into sections based on properties (e.g., products vs. services).
    • Optional line items: display optional line items that buyers can opt in to.
    • Billing schedule: display a billing schedule derived from the line items in the quote.
  • Custom parties section: replace the standard Parties module with one that pulls in additional data such as shipping addresses or child company properties.
  • Conditional terms and conditions: display specific terms based on quote properties or associations, such as buyer country or products selected.
  • Navigation menu: add a navigation menu for long quote documents so buyers can jump between sections.
  • Bespoke styling: apply custom image formatting, shadows, rounded corners, branding, and other visual treatments.
  • Mandatory acknowledgements: add interactive checkboxes or buttons for buyers to acknowledge specific sections before accepting the quote.
When creating a custom version of the Line items or Parties module, you’ll need to hide the default module on the quote rather than remove it to preserve functionality. Learn more about limitations below.

Data access

Custom coded modules can pull data from various sources using the following methods:
  • Object data: the quoteTemplateContext HubL variable provides quote-level data, including all standard and custom properties from the quote and associated objects (e.g., deal, line items, contacts, companies, and attachments).
  • External sources: call third-party APIs or internal data sources using serverless functions.
  • HubDB tables: if you have a Content Hub Professional or Enterprise account, use HubL functions such as hubdb_table_row to fetch data from the account’s HubDB tables.
Please note: passing the full quoteTemplateContext or any of its sub-objects (such as quoteTemplateContext.quote) as island props will expose all of that object’s properties in the published quote’s source code. Learn more about passing data props to avoid exposing sensitive information.

Limitations

  • Custom coded modules cannot be added to a quote via the quotes API. To use custom modules in quotes created via the API, you’ll need to select a quote template that already contains the custom module.
  • Only a single drag-and-drop area exists, which limits complex page layouts. For example, a module cannot be pinned as a persistent sidebar for the full height of the quote.
  • The status bar at the top of the quote cannot be customized without using custom CSS to hide it.
  • When creating a custom version of the Line items or Parties module, the default module can be hidden but must remain on the quote. This is because the default module is the only way to modify the underlying data, while the custom module displays that data. Users will still need to use the hidden module to update values (e.g., they’ll use the default Line items module to add, edit, or remove line items).

Next steps

To start building, learn how to create custom quote modules.
Last modified on May 18, 2026