append
Adds a single item to the end of a list.- HubL
- Output
blog_all_posts_url
Theblog_all_posts_url function returns a full URL to the listing page for all blog posts for the specified blog.
The example below shows how this function can be used as an anchor’s href.
- HubL
- Output
blog_author_url
Theblog_author_url function returns a full URL to the specified blog author’s listing page.
The example below shows how this function can be used as an anchor’s href. This can be combined with blog_authors as shown in that function’s examples.
- HubL
- Output
blog_authors
Theblog_authors function returns a sequence of blog author objects for the specified blog, sorted by slug ascending. This sequence can be stored in a variable and iterated through to create custom author post filters.
The number of live posts by each author can be accessed with author.live_posts.
The first line of the example below shows how the function returns a sequence of author objects. The rest of the example shows a use case of saving a sequence into a variable and then iterating though the author objects, printing a set of author listing links. The example assumes that the blog has 4 authors.
- HubL
- Output
blog_by_id
Theblog_by_id function returns a blog by ID. The below example code shows this function in use to generate a hyperlinked list item.
- HubL
- Output
blog_page_link
Theblog_page_link function generates the URL of a paginated view of your blog listing. The function takes a numeric parameter, which allows you to generate links for current, next, previous, or a specific page. This function is generally used in the href attribute of pagination anchor tags and must be used on your blog listing template.
The examples below show this function in use as an anchor href. The first example outputs the current page. The second example takes the number 7 parameter to specify the seventh page. The third example uses the next_page_num variable to generate a link that is relative to the current page number (you can also use the last_page_num variable for the previous page). The final example uses the current_page_num variable and a + operator to create a link that is 4 greater than the current page.
- HubL
- Output
blog_popular_posts
This function renders a set number of popular posts into a sequence. The sequence can then be saved into a variable and iterated through with a for loop, creating a custom post listing of your most popular posts. Results from this function are cached for six hours. To retrieve blog posts using HubL in a way that avoids caching, you may want to use blog_recent_tag_posts instead. In the example code below, the first line shows how the function returns a sequence. The sequence is saved as a variable which is then used in a for loop. Any blog post variables should use the name of the individual loop item rather thancontent.. In the example, pop_post.name is used. This technique can be used on blog templates and website pages.
- HubL
- Output
blog_post_archive_url
Theblog_post_archive_url function returns a full URL to the archive listing page for the given date values on the specified blog.
The example below shows how this function can be used as an anchor’s href.
- HubL
- Output
blog_recent_author_posts
Theblog_recent_author_posts function returns a sequence of blog post objects for the specified author, sorted by most recent. This sequence of posts can be saved into a variable and iterated through with a for loop, creating a custom post listing of posts by a particular author.
The first line of the example below demonstrates how the function returns a sequence of posts by an author. In this example, rather than specifying an exact author name, the current post author is used. The sequence is saved in a variable and looped through. Any blog post variables should use the name of the individual loop item rather than content.. In the example, author_post.name is used. This technique can be used on blog and page templates.
- HubL
- Output
blog_recent_posts
Theblog_recent_posts function returns a sequence of blog post objects for the specified blog, sorted by most recent first. This sequence of posts can be saved into a variable and iterated through with a for loop, creating a custom post listing of your most popular posts.
The function takes two parameters. The first parameter specifies which blog to collect popular posts from. The value should be "default" or the blog ID of a particular blog (available in the URL of the Blog dashboard). The second parameter specifies how many posts are retrieved.
The first line of the example below demonstrates how the function returns a sequence. The sequence is saved in a variable and looped through. Any blog post variables should use the name of the individual loop item rather than content.. In the example, rec_post.name is used. This technique can be used, not only on blog templates, but also regular pages.
- HubL
- Output
blog_recent_tag_posts
Theblog_recent_tag_posts function returns a sequence of blog post objects for a specified tag or tags, sorted by most recent first. This sequence of posts can be saved into a variable and iterated through with a for loop, creating a custom post listing of posts by a particular tag or tags.
In the example code below:
- The first line shows how the function returns a sequence of posts by tag.
- The second line shows how to save the function in a sequence variable. The rest of the code then uses a for loop to cycle through the variable values. Any blog post variables should use the name of the individual loop item rather than
content.. In the example,tag_post.nameis used. You can use this technique on both blog and website pages.
- HubL
- Output
blog_tag_url
Theblog_tag_url function returns a full URL to the specified blog tag’s listing page.
This function accepts two parameters. The first parameter specifies which blog the tag’s listing page exists in. The second parameter specifies which tag to link. This parameter can use the topic.slug for a particular tag from content.topic_list or accepts a lowercase hyphenated name such as "marketing-tips".
The example below shows how this function can be used as an anchor’s href.
- HubL
- Output
blog_tags
Theblog_tags function returns a sequence of the 250 most blogged-about tags (based on number of associated blog posts) for the specified blog, sorted by blog post count.This sequence can be stored in a variable and iterated through to create custom tag post filters. The number of posts for each tag can be accessed with tag.live_posts.
This function accepts two parameters. The first parameter specifies which blog to fetch tags from. The second parameter sets a limit on the number of tags fetched.
The first line of the example below demonstrates how the function returns a sequence of tag objects. The rest of the example demonstrates a use case of saving a sequence into a variable and then iterating though the tag objects, printing a set of tag links. The example assumes that the blog has 4 tags.
- HubL
- Output
blog_total_post_count
This function returns the total number of published posts in the specified blog. If no parameter is specified, it will count your default blog posts. Alternatively, you can specify"default" or a blog ID of a different blog to count. The blog ID is available in the URL of your blog dashboard for a particular blog.
- HubL
- Output
clear
Removes all items from a list. Unlikepop(), it does not return anything.
- HubL
- Output
color_contrast
This function validates color contrast based on WCAG standards. You’ll need to include two colors as arguments, and you can include an optional argument to specify the rating (AA or AAA). Returns true or false based on whether the colors meet/exceed the standard.
- HubL
- Output
color_variant
This function lightens or darkens a hex value or color variable by a set amount. The first parameter is the hex color (for example (“#FFDDFF”) or a variable storing a hex value. The second parameter is the amount to adjust it by, from 0 to 255. This function can be used in CSS files to create a color variation. Another good use case is to use it with a color parameter of a color module, to allow users to specify a primary color that automatically generates a color variation. In the example below, the hex color #3A539B is stored in a variable calledbase_color. The color is modified by -80 resulting in a darker blue (#00034B).
- HubL
- Output
content_by_id
Returns a landing page, website page or blog post by ID. The only parameter accepted by this function is a numeric content ID. The below example code shows this function in use to generate a hyperlinked list item.- HubL
- Output
content_by_ids
Given a list of content IDs, returns a dict of landing page, website page or blog posts matching those IDs. This function takes one parameter, a list of page or blog post IDs to look up, placed within an array. Up to 100 content objects can be passed. The below example code shows this function in use to generate a list of hyperlinked list items.- HubL
- Output
copy
Return a shallow copy of the list. Equivalent toa[:].
A shallow copy constructs a new compound object and then (to the extent possible) inserts references into it to the objects found in the original.
- HubL
- Output
count
Returns the number of times a variable exists in a list.- HubL
- Output
crm_associations
Gets a list of CRM records associated with another record by its record ID, association category, and association definition ID.- HubL
- Output
crm_object
Gets a single CRM record by query or by its ID. Records are returned as a dict of properties and values. This function can also be used with custom and integrator objects.- HubL
- Output
crm_objects
Gets a list of records for a specific object type from the HubSpot CRM. Results can be sorted using at least one order parameter in the query. For example,crm_objects("contact", "firstname=Bob&order=lastname&order=createdate") will order contacts with the first name "Bob" by last name and then by createdate. To reverse a sort, prepend - to the property name (e.g., order=-createdate). The CRM objects function can also be used with custom and integrator objects.
- HubL
- Output
crm_property_definition
Get the property definition for a given object type and property name. Supported object types are HubSpot standard objects (e.g., contacts), account-specific objects, and integrator objects.- HubL
- Output
crm_property_definitions
Get the property definitions for a given object type and set of property names. Supported object types are HubSpot standard objects (e.g. contacts), account-specific objects, and integrator objects.- HubL
- Output
cta
Because CTA modules have so many parameters that contain variations of their code, you can use the CTA function to easily generate a particular CTA in a template, page, or email. This function is what the rich text editor uses when you add a CTA via the editor.- HubL
- Output
extend
Extend a list by appending all items from an iterable. In other words, insert all list items from one list into another list.- HubL
- Output
file_by_id
This function returns the metadata of a file by ID. It accepts a single parameter, the numeric ID of the file to look up. To retrieve multiple files at once, use the files_by_ids function instead.- HubL
- Output
files_by_ids
Returns the metadata of multiple files by ID. It accepts an array of file IDs.- HubL
- Output
For example, you can use this function, to loop through a contact’s uploaded files. To loop through results, you’ll need to use the split HubL filter, as the CRM property will be returned as a semicolon-separated string.
flag_content_for_access_check
When a blog post is configured for self-registration access, visitors will need to register or log in to view the full post content. HubSpot’s default blog listing assets automatically include this functionality, and will also include a lock icon indicator for posts that require self-registration to access. Learn more about building custom solutions using this function and its corresponding API. This function checks whether a blog post can be accessed by the current visitor. When called, the function is replaced with the following attribute:hs-member-content-access=<true/false>
A value of true indicates that the blog post requires the visitor to log in to view the full content.
- HubL
- Output
follow_me_links
Returns the social media account links set in account settings. Used in the default follow_me module.- HubL
- Output
format_address
Formats an address based on the context’s locale.- HubL
- Output
format_company_name
Formats a company’s name by adding Japanese honorifics where appropriate.- HubL
- Output
format_name
Formats a person’s name by putting the surname before the first name and adds Japanese honorifics where appropriate- HubL
- Output
format_datetime
Formats both the date and time components of a date object, similar to the format_datetime HubL filter. This function replaces the deprecateddatetimeformat function.
- HubL
- Output
geo_distance
This function contains 4 parameters and calculates the ellipsoidal 2D distance between two points on Earth. Use this function as a filter query for getting HubDB data.- HubL
- Output
get_asset_url
This function returns the public URL of a specified template or code file. The parameter of this function is the asset’s path in the design manager. Coded file URLs update each time you publish them; therefore, by using this function your ensure you are always using the latest version of the file. You can automatically generate this function in the app, by either right-clicking a file and selecting Copy public URL, or by clicking Actions, then selecting Copy public URL. The example below gets the URL of a Javascript file authored in Design Manager that can be included as thesrc of a <script> tag.

- HubL
- Output
get_public_template_url_by_id
This function works just likeget_public_template_url, returning public URL of a specified template or code file. The only difference is the parameter of this function is the template ID (available in the URL of the template or coded file), instead of the design manager path.
- HubL
- Output
hubdb_table
Thehubdb_table function can be used to get metadata from a HubDB table, specified by table ID. You can access the follow metadata attributes via dot notation:
name: the name of the table.columns: a list of column information.created_at: the timestamp of when this table was first created.published_at: the timestamp of when this table was published.updated_at: timestamp of when this table was last updated.row_count: the number of rows in the table.
- HubL
- Output
hubdb_table_column
Retrieves metadata about a column in a given HubDB table. the function accepts two parameters: the table ID or name, followed by the column ID or name. Column names are not case sensitive. For example,HS_ID and hs_id are both valid.
The following metadata is available:
name: the name of the column.label: the label to be used for the column.type: the type of the column.options: for columns of typeselect, a map ofoptionIdto option information.foreignIds: for columns of typeforeignId, a list offoreignIds(withidandnameproperties).
getOptionByName("<option name>") for select type columns. This method retrieves information for the specified option.
- HubL
- Output
hubdb_table_row
Thehubdb_table_row function can be used to pull a single row from a HubDB table. From a row, you can pull information from each table cell by calling on the corresponding attribute:
hs_id: the globally unique id for this row.hs_created_at: a timestamp representing when this row was created.hs_path: when used with dynamic pages, this string is the last segment of the url’s path for the page.hs_name: when used with dynamic pages, this is the title of the page.<column name>or["<column name>"]: get the value of a column for this row, specified by thenameof the column. Column names are not case sensitive. For example,HS_IDandhs_idare both valid.
- HubL
- Output
hubdb_table_rows
Thehubdb_table_rows function can be used to query rows of a HubDB table, which can be useful for iterating through row values.
By default, this function will return a maximum of 1,000 rows. To retrieve more rows, specify a limit in the query, as shown in the code below.
- HubL
- Output
include_default_custom_css
This function generates a link tag that references the Primary CSS file (default_custom_style.min.css). This file is designed to be a global CSS file that can be added to all templates. To render, the function requires a boolean parameter value of True.
- HubL
- Output
index
Returns a number representing the location of the first matching item in a 0-based array. This function accepts 3 parameters:- The item in the array that you want to find (required)
- The starting index of the slice of the array to search
- The ending index of the slice of the array to search
- HubL
- Output
insert
Places an element into a list at the specific index provided. This function accepts two parameters:- Index: the position where an element is to be inserted.
- Element: the item to be inserted.
- HubL
- Output
locale_name
Returns a human-readable string representation of a language code, optionally translated to a target language.- HubL
- Output
load_translations
Loads translations from a given_locales folder path and returns a map of the values.
Learn more about including field translations in custom modules and themes.
- HubL
- Output
menu
Returns the nested link structure of an advanced menu. Menu nodes have a variety of properties that can be used on objects that are returned. If you passnull to the menu function it will return an empty pylist. You can also specify a menu by name. In most cases it’s safer to use the menu id, as a menu being renamed won’t affect the id. If building for the marketplace it makes sense to default to "default" if menu is null.
- HubL
- Output
module_asset_url
Gets the URL for an asset attached to a custom module via Linked Files > Other Files.- HubL
- Output
namespace
Creates a namespace object that can hold arbitrary attributes. It can be initialized from a dictionary or with keyword arguments.- HubL
- Output
oembed
Returns OEmbed data dictionary for given request. Only works in emails.- HubL
- Output
personalization_token
Returns the value of a contact or contact related property, or a default.- HubL
- Output
pop
Removes the item at the index from the list. Also returns the removed item if printed.- HubL
- Output
postal_location
Thepostal_location function returns the latitude/longitude location pair for a given postal code and country code (limited to US, CA, and GB).
- HubL
- Output
put
Similar to the update function, which updates a dict with the elements from another dict object or from an iterable of key-value pairs, except thatput supports variable names in dicts.
- HubL
- Output
range
Returns a list containing an arithmetic progression of integers. With one parameter, range will return a list from 0 up to (but not including) thevalue. With two parameters, the range will start at the first value and increment by 1 up to (but not including) the second value. The third parameter specifies the step increment. All values can be negative. Impossible ranges will return an empty list. Ranges can generate a maximum of 1000 values.
Range can be used within a for loop to specify the number of iterations that should run.
- HubL
- Output
require_css
This function enqueues a CSS file to be rendered in thehead element. All CSS link tags are grouped together and render before any JavaScript tags. The HubL is replaced with an empty line and then a link tag is added to {{ standard_header_includes }}. This method requires an absolute URL; CMS content with a known relative URL can be required by using the get_asset_url() function.
To enqueue an inline style to be rendered in the head via a style tag element, use the {% require_css %} and {% end_require_css %} tag instead with your style tags and CSS inside of that.
The second parameter is a dictionary of options to modify generated tag. Supports async (true/false) a technique described on web.dev and any other key-value pair will be added as HTML attributes to the style tag.
- HubL
- Output
require_personalization_properties
Allows you to personalize content while still permitting prerendering options. Provide any contact or company properties you wish to expose via thecontact_properties and company_properties parameters.
- The function will then generate a signed URL that can be run in a template or executed for a one-time use (which allows you to hardcode the URI).
- Whenever these properties change, the function must be run again to generate a new signature, which will appear as a
sigquery parameter in the<script>tag that gets added to your content’s HTML.
<script> tag in your HTML will include a personalization_api_url value, which should be appended to the content domain where you plan on using your endpoint.
For example, consider the HubL block and rendered HTML below:
- HubL
- Output
website.com, the associated API endpoint would be:
GET request to this endpoint, which would return a response that resembles the following:
require_js
Specifies whether a script should be enqueued to render in the head or footer (default). Specify the render location by including thehead or footer parameter. The HubL will be replaced by an empty line, and included in either the header or footer includes.
To enqueue an inline script to be rendered in the footer via a script element, wrap your <script> tags with {% require_js %} and {% end_require_js %}.
You can also include additional render options in this function. These will be added as HTML attributes in the script tag. Render options include:
- position:
head/footer - defer:
true/false - async:
true/false - type:
string
- HubL
- Output
resize_image_url
Rewrites the URL of image stored in File Manager to a URL that will resize the image on request. The function accepts one required parameter, and five optional parameters. At least one optional parameter must be passed.- HubL
- Output
reverse
Reverses the order of items in a list. Doesn’t take any parameters. To reverse an object or return an iterator to iterate over the list in reverse, use|reverse
- HubL
- Output
super
This function prints content from the parent template into a child template using the extends tag. For example, in the code below, a basic HTML template has been created with a HubL block namedsidebar and saved as parent.html. A second template file is created that will extend that parent file. Normally, the <h3> would be printed in the parent HTML’s sidebar block. But by using super, content from the parent template sidebar block is combined with the content from the child template.
- HubL
- Output
today
Returns the start of today (12:00am). Optionally you can add a parameter to change the timezone from the default UTC.- HubL
- Output
to_local_time
Converts a UNIX timestamp to the local time, based on your HubSpot Report Settings. You can then apply a datetimeformat filter to format the date.- HubL
- Output
topic_cluster_by_content_id
Returns a HubL dict representing the topic cluster associated with a piece of content (determined by the passed content id), including metadata about the associated pillar page, core topic, and subtopics. Can be used to “auto-link” a piece of content with its associated pillar page [if it exists]. Available metadata can be found in: attachableContent (the current content’s metadata), topic (the current content’s associated topic metadata), coreTopic (the associated cluster’s core topic metadata), and pillarPage (the associated pillar page’s metadata). Use{{ topicCluster|pprint }} to see a full a display of available properties/attributes.
- HubL
- Output
truncate
The truncate function works just like the truncate filter, but uses function syntax instead of filter syntax. The first parameter specifies the string. The second parameter specifies the length at which to truncate. The final parameter specifies the characters to add when the truncation occurs.- HubL
- Output
type
This function accepts one argument and returns the type of an object. The return value is one of:"bool", "datetime", "dict", "float", "int", "list", "long", "null", "str" or "tuple".
- HubL
- Output
unixtimestamp
This function returns a unix timestamp when you supply a datetime object.- HubL
- Output
update
Updates the dict with the elements from another dict object or from an iterable of key-value pairs. Use this function to combine or merge objects.- HubL
- Output