What is HubL?
HubL is a templating language based on Jinja2 that allows you to:- Add dynamic content to templates
- Create reusable template components
- Access HubSpot data and functionality
- Build flexible, content-editor-friendly themes
Template Structure
Every HubL template starts with metadata:Template Types
page- Standard page templateblog_listing- Blog listing pageblog_post- Blog post templateglobal_partial- Reusable partialnone- Base layout (not directly usable)
Template Inheritance
Use{% extends %} to inherit from a base template:
Base Layout Example
Fromtheme/templates/layouts/base.html:
Variables and Expressions
Outputting Variables
Use double curly braces:Variable Filters
Transform values with filters:Control Structures
If Statements
If-Else
For Loops
Loop Variables
Access loop information:Real Example: FAQ Schema
From the accordion module:Including Partials
Global Partials
Reusable across all templates:Include DND Partials
Include drag-and-drop sections:Modules
Include HubSpot modules:Module Variables
Access module fields:Conditional Module Output
DND Areas
Create drag-and-drop content areas:Setting Variables
Create custom variables:Comments
Asset Functions
CSS Assets
JavaScript Assets
Image Assets
Required Variables
Every template must include:- Meta tags
- HubSpot tracking code
- Required scripts
- Analytics