Before you start
You need:
- A form that already exists in your Hubstream instance (see Form Management).
- Access to the HubstreamFORMS application settings in the Azure portal (the Static Web App’s Environment variables page). If someone else operates the portal for you, send them the setting from step 2.
Pick a public ID
Each published form gets a public ID that appears in its link. Generate a random lowercase UUID (with uuidgen or any UUID generator):
9f2c1e4a-7b3d-4c88-a1f0-2e5d6b9c0d11
A random ID is what keeps the link unguessable — never use a meaningful name.
Register the form
Add one application setting per form (Azure portal → the Static Web App → Environment variables), named EMBED_FORM_<id>. Azure setting names don’t allow hyphens, so write the ID’s hyphens as underscores in the setting name — the link itself keeps the hyphens.
Name: EMBED_FORM_9f2c1e4a_7b3d_4c88_a1f0_2e5d6b9c0d11
Value: { "type": "viewform", "name": "ComplaintForm", "entityName": "Complaint", "server": "dssbdev" }The value is a small JSON entry:
type—"viewform"for a view form,"entity"for an entity’s new-record form.name— the view form or entity name exactly as it exists in Hubstream. Forms created in the management UI get aHubUIprefix (and sometimes random trailing characters), so copy the real name from the app rather than typing it — a near-miss likeATestImagesforHubUIATestImagemakes the form fail to load.entityName— for"viewform"entries: the form’s root entity. A composite form creates a record per entity and links them to this root. Without it, every submission fails.server— which Hubstream server receives submissions (see step 3). Omit it to use the default server.
Each form has its own setting, so a typo in one never affects the others.
The form goes live as soon as the setting is saved — no rebuild or deployment. Watch the portal’s double save: confirm the variable’s edit dialog and click Apply on the Environment variables page. Until the second save, the old value stays live.
Check the server is configured
The entry’s server name must match a server configured in the same Environment variables page, in the HUBSTREAM_SERVERS setting — one JSON value keyed by server name:
{
"dssbdev": { "url": "https://…", "apiKey": "…" }
}If your server is already listed there (it usually is), skip this step. To add one, edit the setting and add its entry — this also applies without a redeploy. API keys live only in these settings; the person filling out the form can never see them.
Share the link or embed it
The form is now live at:
https://forms.hubstream.one/embed/<uuid>
Share that link directly (email, QR code), or embed the form in any web page with an iframe:
<iframe
src="https://forms.hubstream.one/embed/9f2c1e4a-7b3d-4c88-a1f0-2e5d6b9c0d11"
style="width: 100%; height: 900px; border: none;"
title="Complaint form">
</iframe>Adjust height to fit the form — there’s no auto-resize, so pick a height that avoids scrolling inside the frame.
You can also customize the link with URL parameters — prefill fields, hide the logo. See Customizing the Link.
Verify
Open the link in a private/incognito window (the form is anonymous — no login needed) and check that:
- The form loads with the expected fields.
- The security check widget appears above the Submit button.
- A test submission shows the “Thank you” message and the record appears in Hubstream.
If anything’s off, see Troubleshooting.
Retiring a form
Delete the form’s EMBED_FORM_<id> setting and save (both saves). The link immediately returns “Form not found”. The form’s data in Hubstream is untouched.