Hi @SyN-Thmn and Happy Friday!
Great questions, thanks for asking the HubSpot Community!
Here’s how the supported HubSpot embed behavior applies:
1. How does an embedded form determine language?
It doesn’t auto-detect the page’s language. The embed code accepts a locale parameter that sets the language for built-in validation messages, date pickers, and field labels, not the form’s own content (consent text, subscription text, submit button). Here is the documentation about it: Form embed configuration
2. Can Umbraco page language be passed to the embed?
Yes, for the technical embed pieces: locale (built-in translations) and translations (custom overrides for labels/messages) can be set dynamically in the hbspt.forms.create() call, e.g. populated by your CRM supplier’s existing JS that already injects brand/country/language. However, this only affects field labels, validation, and submit text, not consent/subscription checkbox text, which lives in the form’s legal consent configuration itself.
3. Can one form dynamically display correct localized consent/subscription text per page?
Not via documented embed parameters. Consent text (consentToProcessText, communicationConsentText, checkbox labels/subscription text) is configured as static content on the form definition itself, not passed or overridden through embed code, locale, or URL parameters.
4. Should your supplier use a separate form per language?
Given #3, yes, since consent text is static per form, you need one form variant per language (matching your existing pattern of 19 localized page routes → 19 form instances), each with its own consent/subscription text authored in that language.
5. Can the same subscription type be reused across language variants?
Yes, subscription types (like OneTremco Updates) are account-level definitions referenced by subscriptionTypeId/subscriptionId in a form’s legalConsentOptions.communicationsCheckboxes. Multiple forms (one per language) can reference the same subscription type ID while displaying different translated checkbox text.
6. Can DACH forms require DOI while others don’t?
Double opt-in is configured against subscription types/definitions (LANGUAGE_NOT_CONFIGURED errors reference language settings per subscription type), not against individual forms. Let me double check on the per-form DOI override, in the documentation I didn’t find a reference about a per-form-instance DOI flag.
7. Does DOI apply globally or per instance?
The DOI/confirmation behavior is tied to the subscription type/definition, which is account-wide, I could not find a documented mechanism to scope DOI to specific external pages or specific form instances only. If DACH needs different DOI behavior than non-DACH while sharing “OneTremco Updates,” your supplier would likely need a separate DACH-specific subscription type (or separate form-to-subscription mapping) rather than relying on per-instance control, but let me double check on this.
8. Supported implementation pattern for external Umbraco pages:
You can use the documented external/raw-HTML embed pattern: load //js.hsforms.net/forms/embed/v2.js, then call hbspt.forms.create({ portalId, formId, region, target, locale, translations, ... }) per page, one formId per language/consent variant, with your supplier’s existing JS populating hidden fields and setting locale/target dynamically. Self-hosting or copying the embed HTML outside this pattern isn’t supported. Here is more information on this: Form embed configuration
Now, let’s also consult our Top Experts: Hi @Anton, @evaldas and @SteveHTM do you have additional insights or helpful tips to share with @SyN-Thmn, please?
Thanks so much and have a wonderful weekend!
Bérangère
This post was created with the assistance of AI tools