In the HubSpot Design Manager, create a new custom module and define a CRM object field that references the object type (e.g. Contact) to allow content editors to select a record
In the module's HubL template, use the crm_object() or crm_objects() functions to fetch CRM properties for the selected record at render time
Specify the properties to retrieve as a comma-separated list in the crm_object() call to avoid fetching all properties
Render the properties in the module's HTML using HubL variable references (e.g. {{ contact.properties.firstname }})
Test the module in the page editor by selecting a real contact record and previewing the rendered output
Known gotchas
The crm_object() HubL function is evaluated server-side at page render time and is subject to HubSpot's rendering cache — changes to the CRM record may not appear immediately on cached pages
Only properties explicitly requested in the crm_object() call are available in the template context; accessing unrequested properties returns an empty string, not an error
CRM object functions in HubL are not available in email templates — they are supported only in website pages and landing pages rendered by the HubSpot CMS
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp