Publishing & Sharing
Once you’ve built your form, it’s time to make it available to respondents. This guide covers everything about publishing, your Formspace subdomain, access controls, and the different ways to share your form.
How publishing works
Section titled “How publishing works”Formspace uses a draft → publish workflow. When you edit a form in the builder, your changes are saved as a draft. Respondents only ever see the published version of your form.
To publish your form:
- Open your form in the builder.
- Switch to the Publish tab.
- Click Publish to make your form live.
If this is the first time publishing, your form’s status changes from Draft to Live. If you’ve already published and made changes since, you’ll see an Unpublished changes detected banner with a Publish Changes button.
Form statuses
Section titled “Form statuses”| Status | Meaning |
|---|---|
| Draft | The form has never been published. Only you can see it. |
| Live | The form is published and accepting responses. |
| Live · Draft Changes | The form is live, but you’ve made edits that haven’t been published yet. Respondents still see the previous published version. |
| Closed | The form is no longer accepting responses. |
Your Formspace subdomain
Section titled “Your Formspace subdomain”Every Formspace (organization) gets its own dedicated subdomain where published forms are hosted. The URL structure is:
https://{your-slug}.forms.space/{form-path}For example, if your Formspace slug is acme and you have a form with the path customer-feedback, the form URL would be:
https://acme.forms.space/customer-feedbackCustomizing your subdomain
Section titled “Customizing your subdomain”On a Premium plan, you can customize your Formspace subdomain:
- Go to Settings → Details tab.
- Find the Domain card.
- Click Customize and enter your preferred slug.
Subdomain slugs must be at least 4 characters, start and end with a letter or number, and can contain lowercase letters, numbers, and hyphens.
Customizing form paths
Section titled “Customizing form paths”By default, each form is accessible via its unique ID. On a Pro plan, you can set a custom, human-readable path for each form:
- Open your form and go to the Publish tab.
- In the link bar at the top, hover over the URL and click the edit icon.
- Enter a friendly slug like
customer-feedbackor2025-survey.
Form paths follow the same rules as subdomains — at least 4 characters, alphanumeric with hyphens.
Access controls
Section titled “Access controls”The Access card on the Publish tab lets you control who can respond to your form. There are four access modes:
Email verified
Section titled “Email verified”The default mode. Respondents can view the form immediately, then must verify their email address before saving progress or submitting. They can sign in with Microsoft, Google, or verify via a one-time email code. This lets you know who submitted each response and enables respondent features like progress saving and My Submissions.
Anyone with the link
Section titled “Anyone with the link”Anyone who has the form URL can submit a response anonymously with no sign-in or verification required. Use this mode only when you specifically do not need to identify respondents. Progress saving, thank-you emails, and respondent submission history are not available for anonymous forms.
Organization
Section titled “Organization”Only people who belong to a specific organization can respond. After selecting this mode, click to configure the verification method:
- Email domain — Allow responses from specific email domains (e.g.
@acme.com). - Microsoft tenant — Restrict to a specific Microsoft Entra ID (Azure AD) tenant.
- Google Workspace — Restrict to a specific Google Workspace hosted domain.
Invite only
Section titled “Invite only”Only people you explicitly invite can respond. This is the most restrictive mode — see Invitations below for details.
Sharing your form
Section titled “Sharing your form”Once your form is published, you have several ways to share it.
Copy the link
Section titled “Copy the link”The link bar at the top of the Publish tab shows your form’s full URL. Click Copy URL to copy it to your clipboard, or Open to view it in a new tab.
Pre-fill answers with a URL
Section titled “Pre-fill answers with a URL”For advanced use cases, you can append pre-fill query parameters to a published form URL. This lets you open the form with specific answers already filled in, which is useful when the link comes from a CRM, internal tool, or another external system.
There are two supported formats:
- For one or a few values, use namespaced query parameters keyed by the form’s question names. Dots create nested objects, and repeating the same key creates an array:
https://acme.forms.space/customer-feedback?prefill.firstName=Ava&prefill.address.city=Perth&prefill.tags=vip&prefill.tags=betaconst url = new URL("https://acme.forms.space/customer-feedback");url.searchParams.set("prefill.firstName", "Ava");url.searchParams.set("prefill.address.city", "Perth");url.searchParams.append("prefill.tags", "vip");url.searchParams.append("prefill.tags", "beta");This produces pre-fill data like:
{ "firstName": "Ava", "address": { "city": "Perth" }, "tags": ["vip", "beta"]}- For typed or more complex values such as booleans, numbers, or mixed nested structures, use a
prefillparameter containing either:
- a URL-encoded JSON object
- or a URL-safe base64-encoded JSON object
Both forms are supported. The base64 form is usually better for advanced integrations because it avoids query-string parsing edge cases in some tools.
URL-encoded JSON example:
https://acme.forms.space/customer-feedback?prefill=%7B%22firstName%22%3A%22Ava%22%2C%22optIn%22%3Atrue%2C%22preferences%22%3A%7B%22channels%22%3A%5B%22email%22%2C%22sms%22%5D%7D%7Dconst url = new URL("https://acme.forms.space/customer-feedback");url.searchParams.set( "prefill", JSON.stringify({ firstName: "Ava", optIn: true, preferences: { channels: ["email", "sms"], }, }),);URL-safe base64 example:
https://acme.forms.space/customer-feedback?prefill=eyJmaXJzdE5hbWUiOiJBdmEiLCJvcHRJbiI6dHJ1ZSwicHJlZmVyZW5jZXMiOnsiY2hhbm5lbHMiOlsiZW1haWwiLCJzbXMiXX19const toBase64Url = (value) => { const bytes = new TextEncoder().encode(JSON.stringify(value)); const binary = Array.from(bytes, (byte) => String.fromCodePoint(byte)).join("");
return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");};const url = new URL("https://acme.forms.space/customer-feedback");url.searchParams.set( "prefill", toBase64Url({ firstName: "Ava", optIn: true, preferences: { channels: ["email", "sms"], }, }),);Notes:
- Use question
namevalues, not the visible question titles. - Respondents can still change pre-filled answers before submitting.
prefill.field=valueparameters are merged with the decodedprefillobject, and they override overlapping values.- Invite links ignore any additional URL pre-fill parameters and use the pre-fill data configured on the invite itself.
- File upload and signature questions cannot be pre-filled.
- Do not mix the same path as both a value and an object. For example,
prefill.customer=avacannot be combined withprefill.customer.email=.... - Keep prefill payloads small so the final URL remains practical to share.
QR code
Section titled “QR code”Click the QR Code button to generate a QR code for your form. You can:
- Preview the QR code in a dialog.
- Download it as a PNG image for printing or embedding in documents.
Embed on your website
Section titled “Embed on your website”Click the Embed button to choose an embed style and get a ready-to-paste code snippet. Formspace provides a lightweight embed script that handles everything — iframe creation, dynamic resizing, loading states, and more.
All embed modes use a single script tag:
<script src="https://getformspace.com/embed.js" defer crossorigin></script>Inline
Section titled “Inline”Renders the form directly in your page. By default, the iframe automatically resizes to fit its content so there are no inner scrollbars.
<div data-formspace="https://acme.forms.space/customer-feedback"></div><script src="https://getformspace.com/embed.js" defer crossorigin></script>If you prefer a fixed-height inline embed, disable dynamic height and provide an explicit height:
<div data-formspace="https://acme.forms.space/customer-feedback" data-formspace-dynamic-height="false" data-formspace-height="600px"></div><script src="https://getformspace.com/embed.js" defer crossorigin></script>data-formspace-height accepts any valid CSS height value, such as 600px or 100%. Percentage heights require the parent container to have an explicit height.
Opens the form in a centered modal overlay when the user clicks a trigger element.
<button type="button" data-formspace-popup="https://acme.forms.space/customer-feedback" data-formspace-close-on-submit="true"> Give Feedback</button><script src="https://getformspace.com/embed.js" defer crossorigin></script>Slider
Section titled “Slider”Slides the form in from the right side of the screen on click — great for feedback or contact forms that shouldn’t take over the whole page.
<button type="button" data-formspace-slider="https://acme.forms.space/customer-feedback" data-formspace-close-on-submit="true"> Contact Us</button><script src="https://getformspace.com/embed.js" defer crossorigin></script>Use data-formspace-close-on-submit="true" on popup, slider, or widget embeds when the overlay should close automatically after a successful submission.
Widget
Section titled “Widget”Adds a floating button to the corner of the page (similar to a chat widget) that opens the form in a popup or slider when clicked.
<div data-formspace-widget="https://acme.forms.space/customer-feedback" data-formspace-button-text="Feedback" data-formspace-button-color="#0152cb" data-formspace-button-icon="chat" data-formspace-close-on-submit="true"></div><script src="https://getformspace.com/embed.js" defer crossorigin></script>The widget supports several configuration options:
| Attribute | Description | Default |
|---|---|---|
data-formspace-button-text | Button label text | Contact us |
data-formspace-button-color | Button background color (any CSS color) | #0152cb |
data-formspace-button-icon | Icon preset or custom SVG (see below) | chat |
data-formspace-widget-mode | popup or slider | popup |
data-formspace-widget-position | left or right | right |
data-formspace-close-on-submit | Close the overlay after form submission | false |
Built-in icon presets: chat, mail, help, pencil, plus, none. You can also pass raw SVG markup as the value for a fully custom icon.
Listening for form submissions
Section titled “Listening for form submissions”The embed script dispatches a formspace:submit event on document whenever a respondent completes a form. You can use this to trigger analytics, close a modal, redirect, or run any custom logic:
<script> document.addEventListener("formspace:submit", function (e) { console.log("Form submitted:", e.detail.slug); // e.g. fire an analytics event, redirect, etc. });</script>If your site renders content after the initial page load, such as a React/Vue app, CMS block, or tabbed section, newly inserted Formspace embed elements are initialized automatically. You can also call window.FormspaceEmbed.init(element) after rendering a specific container.
Invitations
Section titled “Invitations”When your form uses Invite only or any authenticated access mode, you can send invitations directly from Formspace.
Sending invites
Section titled “Sending invites”- On the Publish tab, scroll to the Invites card.
- Click Invite in the bottom-right corner.
- Enter one or more email addresses.
- Optionally configure expiration and whether the invitee can submit multiple responses.
- Click Send.
Each invitee receives an email with a unique link to your form. Invite links use the pre-filled data configured on the invite itself and ignore any additional prefill query parameters.
Managing invites
Section titled “Managing invites”The Invites card shows all invitations with their current status:
| Status | Meaning |
|---|---|
| Sent | The invitation email was sent and the link hasn’t been opened yet. |
| Active | The invitee has opened the form link. |
| Responded | The invitee has submitted a response. |
| Expired | The invitation link has expired. |
You can filter invitations by status and search by email. For each invitation, you can:
- Re-send the invitation email.
- Delete the invitation (revokes access).
Form settings
Section titled “Form settings”The Settings card on the Publish tab provides additional controls:
Formspace branding
Section titled “Formspace branding”By default, published forms display a small “Made with getformspace.com” badge. On a Pro plan, you can toggle this off for a clean, branded experience.
Closing a form
Section titled “Closing a form”Toggle Close form to stop accepting responses. You can close immediately or schedule a specific date and time. Optionally provide a custom message that respondents see when they visit a closed form.
Closed forms display a Closed badge in your forms list. You can re-open a form at any time by toggling the setting off.
Preventing multiple responses
Section titled “Preventing multiple responses”Toggle Prevent multiple responses to ensure each person can only submit once. You can add a custom message that’s shown if someone tries to submit again.
Progress saving
Section titled “Progress saving”Toggle Progress saving to let respondents save an in-progress response and continue later. This setting is available for Email verified, Organization, and Invite only forms, and is disabled for anonymous forms because Formspace needs a verified identity to reconnect a respondent with their saved work.
When progress saving is enabled:
- Respondents see a Save button on the form.
- Saved progress is marked In progress in the submissions table.
- In-progress saves do not count toward monthly response limits and do not trigger response notification or thank-you emails.
- When a respondent saves progress, Formspace sends them an email with a continue link and a link to My Submissions.
- If a respondent already has saved progress for the form and opens the form without a resume link, they can choose whether to continue an existing save or start a new response.
Respondents can have more than one in-progress save for the same form. A saved response becomes a normal submitted response when the respondent completes it.
Email notifications
Section titled “Email notifications”The Email Notifications card lets you send automated emails when responses come in.
Notification emails
Section titled “Notification emails”Enable notifications and select which team members should receive an email each time a response is submitted. Only team members with verified email addresses are available as recipients.
On a Pro or Premium plan, you can also attach a PDF copy of the submitted response to each notification email.
Thank-you emails
Section titled “Thank-you emails”When your form uses an authenticated access mode, you can enable thank-you emails that are automatically sent to respondents after they submit.
On a Pro or Premium plan, you can attach the same PDF copy to the thank-you email as well.
Custom email content
Section titled “Custom email content”On a Pro plan, you can customize the subject line and body text for both notification and thank-you emails. Use {form} and {number} placeholders to include the form name and submission number.
PDF settings
Section titled “PDF settings”The PDF Settings card on the Publish tab lets you configure how responses are exported as PDF documents. These settings apply to all PDF exports for this form — including single downloads, bulk exports, and exports triggered from the response detail panel.
Choose which font to use when generating PDFs. The default Standard font (Helvetica) offers the best performance with no extra download, but only supports basic Latin text. If your form collects responses in other scripts, select the appropriate font:
| Font | Supported scripts |
|---|---|
| Standard | Basic Latin (Helvetica). Best performance, no extra download. |
| International | Latin, Arabic, Hebrew, Thai, Devanagari, Bengali, Tamil, and Telugu. |
| Japanese | Hiragana, katakana, kanji, plus Latin characters. |
| Korean | Hangul, hanja, plus Latin characters. |
| Chinese (Simplified) | Simplified Chinese characters plus Latin characters. |
| Chinese (Traditional) | Traditional Chinese characters plus Latin characters. |
Right-to-left
Section titled “Right-to-left”Enable the Right-to-left toggle to render the PDF in an RTL layout. Use this for forms that collect responses in Arabic, Hebrew, or other right-to-left languages.
Page numbers
Section titled “Page numbers”The Page numbers toggle controls whether “Page X of Y” is shown in the footer of each page. This is enabled by default.
Header title
Section titled “Header title”Set a custom title that appears in the header of every page. If left blank, the form’s title is used automatically. The header displays the title alongside the submission number, separated by a · dot (e.g., “Customer Feedback · #42”).
Margins
Section titled “Margins”Adjust the top, right, bottom, and left margins in millimeters. The defaults are 20 mm top/bottom and 10 mm left/right.
What’s next?
Section titled “What’s next?”- Managing Responses — View, filter, and export the data you collect.
- Formspace Settings — Configure your organization’s domain, logo, and more.