You want to embed or integrate HubSpot registration forms—linked to Zoom webinars—within Webflow’s CMS-powered pages. Here's how you can implement this workaround.
1. Understand the Challenge
- HubSpot forms connected to Zoom are static forms generated via HubSpot.
- Webflow’s CMS Collection Pages do not allow native dynamic embed code fields unless you use Custom Code fields or script-based workarounds.
- The issue is dynamically changing the HubSpot form (which is linked to a specific Zoom webinar) per CMS item.
2. Set Up Webflow CMS Collection
- In your Webflow project, create a CMS Collection for webinars or events.
- Include fields such as:
- Webinar Title
- Date & Time
- HubSpot Form Embed Code (Plain Text Field or Custom Code Field)
- This way, each CMS item stores its associated HubSpot form code.
3. Embed HubSpot Form in CMS Template Page
- Open the CMS Template Page (e.g., Webinar Template).
- Drag an Embed Element into the desired location.
- Inside the embed element, use Webflow’s field referencing to insert the dynamic embed code:
- Click the + circle inside the embed code.
- Bind it to the CMS field that contains your HubSpot form embed.
⚠️ Webflow does not support script tags inside rich text fields. The embed code must be inserted in a “Custom Code” field or directly into the embed element using bindings.
4. HubSpot Form Embed Notes
- HubSpot form embed codes include a
<script> that loads the form dynamically. - Example embed code you're working with:
- Include this format inside the Embed Element:
<script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script><script>hbspt.forms.create({ region: "na1", portalId: "XXXXXX", formId: "{{dynamic-from-CMS}}" });</script>
- To inject the
formId dynamically: - Store the formId only in the CMS field (not full script).
- In Webflow, insert static parts of the script and interpolate the
formId using CMS bindings.
5. Workaround Using Custom Attributes + Script
If script limitations block dynamic embed inside the Webflow designer:
- Add a DIV with a custom attribute, e.g.,
data-formid="{{formId from CMS}}" - In the Page Settings > Before </body>, add a global script that reads the
data-formid and injects the HubSpot form. - Example logic:
- On page load, select the target div.
- Use
hbspt.forms.create() and pass the dynamic data-formid from the CMS. - This allows full script control and avoids Webflow’s no-
<script> restrictions in bindings.
6. Sync Webflow CMS with HubSpot
- Optionally, automate form and webinar creation by:
- Using Zapier or Make/Integromat to send new Zoom webinars to HubSpot.
- Then populate that data into your Webflow CMS using Webflow API.
This is useful if you want to maintain a scalable, automated setup for multiple webinars.
Summary
You can display HubSpot forms linked to Zoom on Webflow CMS pages by storing the formId in the CMS and injecting it using a script on the frontend. Since Webflow limits script usage in dynamic content, using a DIV + data attribute + global script is the most stable and flexible solution.