Hmm… there was supposed to be a {{ contentType | default('content') }} here
+
+ To load this {{ contentType | default('content') }}, please accept Analytics cookies.
+ If that doesn't work, try adjusting your privacy settings, or switching browsers.
+
To load the booking calendar, please accept Analytics cookies.
-
-
-
-
+{% set fallbackId = 'meetings-consent-placeholder' %}
+{% set contentType = 'meeting calendar' %}
+{% include "hubspot/consent-fallback.njk" %}
diff --git a/src/_includes/hubspot/hs-form.njk b/src/_includes/hubspot/hs-form.njk
index d342f38d16..22216b4882 100644
--- a/src/_includes/hubspot/hs-form.njk
+++ b/src/_includes/hubspot/hs-form.njk
@@ -1,15 +1,20 @@
-
-
diff --git a/src/_includes/hubspot/hs-newsletter.njk b/src/_includes/hubspot/hs-newsletter.njk
index 690e249a44..8292e7015d 100644
--- a/src/_includes/hubspot/hs-newsletter.njk
+++ b/src/_includes/hubspot/hs-newsletter.njk
@@ -1,13 +1,16 @@
-
-
diff --git a/src/_includes/layouts/base.njk b/src/_includes/layouts/base.njk
index 8c409ea1b2..4c2ff42f91 100644
--- a/src/_includes/layouts/base.njk
+++ b/src/_includes/layouts/base.njk
@@ -153,7 +153,7 @@ eleventyComputed:
- {%- if not DEV_MODE -%}
+
- {%- endif -%}
+
@@ -398,7 +398,7 @@ eleventyComputed:
-{%- if not DEV_MODE -%}
+
@@ -549,5 +549,5 @@ eleventyComputed:
addHubSpotConsentListener();
});
-{%- endif -%}
+
diff --git a/src/_includes/migration.njk b/src/_includes/migration.njk
index a7bb5e66d6..3a3a5abb08 100644
--- a/src/_includes/migration.njk
+++ b/src/_includes/migration.njk
@@ -113,16 +113,19 @@
event.preventDefault();
}
- function displayHubSpotForm() {
- hbspt.forms.create({
- target: '#hs-user-form',
- region: "eu1",
- portalId: "26586079",
- formId:"968a9ab6-3dd8-45b2-991c-3f055dc18787",
- onFormSubmitted: function ($form) {
- migrateFile()
- }
- });
- }
-
+{% set fallbackId = 'hs-user-form-fallback' %}
+{% set contentType = 'form' %}
+{% include "hubspot/consent-fallback.njk" %}
+
diff --git a/src/blog/2025/07/certified-nodes-v2.md b/src/blog/2025/07/certified-nodes-v2.md
index 080643ef91..f1fb4b55c7 100644
--- a/src/blog/2025/07/certified-nodes-v2.md
+++ b/src/blog/2025/07/certified-nodes-v2.md
@@ -81,9 +81,14 @@ industry's leading experts.
### Contact us to discuss your node certification
-
-
diff --git a/src/_includes/hubspot/hs-newsletter.njk b/src/_includes/hubspot/hs-newsletter.njk
deleted file mode 100644
index 8292e7015d..0000000000
--- a/src/_includes/hubspot/hs-newsletter.njk
+++ /dev/null
@@ -1,16 +0,0 @@
-
-{% set fallbackId = 'hs-form-newsletter-blog-fallback' %}
-{% set contentType = 'form' %}
-{% include "hubspot/consent-fallback.njk" %}
-
diff --git a/src/_includes/migration.njk b/src/_includes/migration.njk
index 3a3a5abb08..8fb6b2e182 100644
--- a/src/_includes/migration.njk
+++ b/src/_includes/migration.njk
@@ -20,8 +20,11 @@
-
-
+
+ {% set formId = "968a9ab6-3dd8-45b2-991c-3f055dc18787" %}
+ {% set targetId = "hs-user-form" %}
+ {% set onFormSubmitted = "function () { migrateFile(); }" %}
+ {% include "hubspot/hs-form.njk" %}
@@ -114,18 +117,3 @@
}
-{% set fallbackId = 'hs-user-form-fallback' %}
-{% set contentType = 'form' %}
-{% include "hubspot/consent-fallback.njk" %}
-
diff --git a/src/blog/2025/07/certified-nodes-v2.md b/src/blog/2025/07/certified-nodes-v2.md
index f1fb4b55c7..e30ef0460d 100644
--- a/src/blog/2025/07/certified-nodes-v2.md
+++ b/src/blog/2025/07/certified-nodes-v2.md
@@ -2,9 +2,13 @@
title: "Curated Node-RED Integrations: FlowFuse Certified Nodes 2.0"
subtitle: "FlowFuse Unveils Certified Nodes Program to Reward Quality and Ensure Long-Term Support"
description: "FlowFuse announces Certified Nodes v2.0 - connecting enterprises with the highest quality Node-RED nodes, built and maintained by recognized experts in their fields."
+templateEngineOverride: njk,md
date: 2025-07-01
authors: ["zeger-jan-van-de-weg"]
image: blog/2025/07/images/certified-nodes-v2.png
+certificationHubspot:
+ formId: "6e02fe34-13c3-442b-8c27-9a12e72bba37"
+ targetId: "hs-form-certified-nodes-contact"
tags:
- flowfuse
- node-red
@@ -81,16 +85,8 @@ industry's leading experts.
### Contact us to discuss your node certification
-
-{% set fallbackId = 'hs-form-certified-nodes-contact-fallback' %}
-{% set contentType = 'form' %}
-{% include "hubspot/consent-fallback.njk" %}
-
+{% set formId = certificationHubspot.formId %}
+{% set targetId = certificationHubspot.targetId %}
+{% set cta = "cta-certified-nodes-contact" %}
+{% set reference = "certified-nodes-v2" %}
+{% include "hubspot/hs-form.njk" %}
diff --git a/src/js/cookieconsent-config.js b/src/js/cookieconsent-config.js
index 0a543f31d7..a00c83368e 100644
--- a/src/js/cookieconsent-config.js
+++ b/src/js/cookieconsent-config.js
@@ -219,7 +219,7 @@ CookieConsent.run({
en: {
consentModal: {
title: "This site uses cookies",
- description: "We use cookies to ensure this site works properly and, with your permission, to improve your experience and enable features like analytics and live chat support.",
+ description: "We use cookies to ensure this site works properly and, with your permission, to improve your experience and enable features like analytics and live chat support.",
acceptAllBtn: "Accept all",
showPreferencesBtn: "Settings",
footer: "Privacy Policy\n"
From 9bcd7666a003ac17a153a41e2a2f9d2a17620973 Mon Sep 17 00:00:00 2001
From: Yndira-E
Date: Tue, 3 Mar 2026 17:04:53 +0100
Subject: [PATCH 3/5] Restore DEV_MODE guards
---
src/_includes/layouts/base.njk | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/_includes/layouts/base.njk b/src/_includes/layouts/base.njk
index 4c2ff42f91..8c409ea1b2 100644
--- a/src/_includes/layouts/base.njk
+++ b/src/_includes/layouts/base.njk
@@ -153,7 +153,7 @@ eleventyComputed:
-
+ {%- if not DEV_MODE -%}
-
+ {%- endif -%}
@@ -398,7 +398,7 @@ eleventyComputed:
-
+{%- if not DEV_MODE -%}
@@ -549,5 +549,5 @@ eleventyComputed:
addHubSpotConsentListener();
});
-
+{%- endif -%}
From 8722d002657a00badbbae8bece8eb19138966e62 Mon Sep 17 00:00:00 2001
From: Yndira-E
Date: Tue, 3 Mar 2026 18:51:10 +0100
Subject: [PATCH 4/5] Remove HS forms shortcode
---
.eleventy.js | 20 --------------------
src/pricing/index.njk | 16 ++++++++++++++--
2 files changed, 14 insertions(+), 22 deletions(-)
diff --git a/.eleventy.js b/.eleventy.js
index 533264e8e3..3630c618e7 100644
--- a/.eleventy.js
+++ b/.eleventy.js
@@ -656,26 +656,6 @@ module.exports = function(eleventyConfig) {
}
});
- eleventyConfig.addShortcode("hubspotForm", function(formId, cta, reference, functionName = 'displayHubSpotForm') {
- return `
-
-
- `;
- });
-
eleventyConfig.addPairedShortcode("navoption", function(content, label, link, depth, icon, iconSolid, addClasses) {
let svg, iconSvg = '', classes, chevron
if (icon) {
diff --git a/src/pricing/index.njk b/src/pricing/index.njk
index 2ff3c4af59..294dc6a3e4 100644
--- a/src/pricing/index.njk
+++ b/src/pricing/index.njk
@@ -304,7 +304,13 @@ hubspot:
To learn more about our plans, discuss your specific needs, or get advice on the best fit for your project, please fill out the form and we will get back to you as soon as possible.
+ {% set formId = hubspot.cloud.formId %}
+ {% set cta = hubspot.cloud.cta %}
+ {% set reference = hubspot.reference %}
+ {% set targetId = 'hs-form-pricing-cloud-contact-us' %}
+ {% include "hubspot/hs-form.njk" %}
+
@@ -320,7 +326,13 @@ hubspot:
Unlock the complete potential of FlowFuse with a complimentary 30-day Enterprise license. This trial gives you the chance to explore all the features and functionalities of FlowFuse in your own environment. To start your trial, simply fill out the form. Our sales team will reach out to you to discuss your needs and provide the license.
- {% hubspotForm hubspot.selfHosted.formId, hubspot.selfHosted.cta, hubspot.reference, 'trialLicenseForm' %}
+
+ {% set formId = hubspot.selfHosted.formId %}
+ {% set cta = hubspot.selfHosted.cta %}
+ {% set reference = hubspot.reference %}
+ {% set targetId = 'hs-form-pricing-self-hosted-trial-license' %}
+ {% include "hubspot/hs-form.njk" %}
+
From 873f8a616e1e70a64a074506df1224eeef1bf87a Mon Sep 17 00:00:00 2001
From: Yndira-E
Date: Tue, 3 Mar 2026 21:06:36 +0100
Subject: [PATCH 5/5] Render forms by default and add it as necessary cookie
---
src/_includes/hubspot/consent-fallback.njk | 33 ++++++++++++++--------
src/_includes/hubspot/hs-form.njk | 22 +++++++++------
src/js/cookieconsent-config.js | 6 ++--
3 files changed, 37 insertions(+), 24 deletions(-)
diff --git a/src/_includes/hubspot/consent-fallback.njk b/src/_includes/hubspot/consent-fallback.njk
index 9be1b2efaa..83fedb6b67 100644
--- a/src/_includes/hubspot/consent-fallback.njk
+++ b/src/_includes/hubspot/consent-fallback.njk
@@ -1,15 +1,24 @@
Hmm… there was supposed to be a {{ contentType }} here
-
- To load this {{ contentType }}, please accept Analytics cookies.
- If that doesn't work, try adjusting your privacy settings, or switching browsers.
-
-
-
-
+ {% if contentType == 'form' %}
+
+ If this form does not load, try adjusting your privacy settings or switching browsers.
+
+ {% else %}
+
+ To load this {{ contentType }}, please accept Analytics cookies.
+ If that doesn't work, try adjusting your privacy settings, or switching browsers.
+
+
+
+
+
+ Alternatively, you can send us a message through our contact form.
+
+ {% endif %}
diff --git a/src/_includes/hubspot/hs-form.njk b/src/_includes/hubspot/hs-form.njk
index 650be23b99..1f96cd94c6 100644
--- a/src/_includes/hubspot/hs-form.njk
+++ b/src/_includes/hubspot/hs-form.njk
@@ -1,13 +1,17 @@
-{% set hubspotFormId = formId or hubspot.formId %}
+{% set hubspotData = hubspot or {} %}
+{% set hubspotFormId = formId or hubspotData.formId %}
{% set formTargetId = targetId or ('hs-form-' + (hubspotFormId | replace('-', ''))) %}
{% set fallbackId = formTargetId + '-fallback' %}
{% set contentType = 'form' %}
-{% set hubspotRegion = region or hubspot.region or 'eu1' %}
-{% set hubspotPortalId = portalId or hubspot.portalId or '26586079' %}
-{% set onFormSubmittedHandler = onFormSubmitted or hubspot.onFormSubmitted %}
+{% set hubspotRegion = region or hubspotData.region or 'eu1' %}
+{% set hubspotPortalId = portalId or hubspotData.portalId or '26586079' %}
+{% set onFormSubmittedHandler = onFormSubmitted or hubspotData.onFormSubmitted %}
+{% set ctaValue = cta or hubspotData.cta %}
+{% set referenceValue = hubspotData.reference or title %}
+
{% include "hubspot/consent-fallback.njk" %}
-
diff --git a/src/js/cookieconsent-config.js b/src/js/cookieconsent-config.js
index a00c83368e..ecfcf1a24f 100644
--- a/src/js/cookieconsent-config.js
+++ b/src/js/cookieconsent-config.js
@@ -219,7 +219,7 @@ CookieConsent.run({
en: {
consentModal: {
title: "This site uses cookies",
- description: "We use cookies to ensure this site works properly and, with your permission, to improve your experience and enable features like analytics and live chat support.",
+ description: "We use cookies to ensure this site works properly, forms render properly, and, with your permission, to improve your experience and enable features like analytics and live chat support.",
acceptAllBtn: "Accept all",
showPreferencesBtn: "Settings",
footer: "Privacy Policy\n"
@@ -238,7 +238,7 @@ CookieConsent.run({
},
{
title: "Strictly Necessary Cookies Always Enabled",
- description: "Essential cookies are crucial for the basic functionality of our website. Without these cookies, our website could not function properly.",
+ description: "Essential cookies are crucial for core website functionality, including security, anti-spam protection (Google reCAPTCHA), and technical form delivery. Without these cookies, key features of the website, such as secure contact forms, could not function properly.",
linkedCategory: "necessary"
},
{
@@ -248,7 +248,7 @@ CookieConsent.run({
},
{
title: "Analytics Cookies",
- description: "We use tools including Google Analytics, HubSpot, PostHog, and warmly.ai to understand how visitors interact with our website. This category also enables HubSpot forms, meeting embeds, and the chat widget.",
+ description: "We use tools including Google Analytics, HubSpot tracking, PostHog, and warmly.ai to understand how visitors interact with our website. This category enables HubSpot tracking, meeting embeds, and the chat widget.",
linkedCategory: "analytics"
},
{