Publishing & Sharing
Edits to a form never go live until you publish. The public URL serves a frozen snapshot of the last published version. This is the same pattern Tally and Typeform use — it lets you redesign in peace without breaking anything for respondents.
The Draft / Published Model
| State | What /f/{slug} returns | Submissions accepted? |
|---|---|---|
| Draft (never published) | 404 | No |
| Published (synced) | The latest published snapshot | Yes |
| Published (with unpublished changes) | The last snapshot (your edits aren't live yet) | Yes |
| Closed | A "no longer accepting submissions" message with the form's title | No |
The publish bar in the top-left of the designer reflects this state in real time.
Publishing for the First Time
- Build the form.
- Click Publish in the top-left.
- The button changes to Published, and a "View live" link appears in the top-right.
- Click View live to open
/f/{slug}and verify the form looks right.
The first publish creates the publishedSnapshot — a frozen copy of every field, content block, and rule at that moment.
Editing a Published Form
Once a form is published, the publish button changes its behaviour:
- Edit anything in the designer → the button becomes Unpublished changes (orange).
- Click it to Publish changes — re-snapshot the draft into the published copy.
- Click the chevron next to it for more options:
- Discard changes — reset the draft back to the published version
- Unpublish — take the form private (status → draft, snapshot kept)
- Close form — stop accepting submissions (status → closed)
Edit safely under load
Because the public URL serves the snapshot, you can spend an hour rebuilding a live form without anyone seeing a half-finished version. They keep getting the old form until you click Publish changes.
Unpublishing vs. Closing
| Action | Public URL behaviour | Use when |
|---|---|---|
| Unpublish | 404 | You want the form gone temporarily, no record of it visible |
| Close | Branded "no longer accepting submissions" message with the form's title | The campaign ended cleanly — keep the URL as a polite dead-end |
Both keep the published snapshot, so re-publishing restores the form exactly as it was. Closed forms can be reopened from the publish-bar menu.
Preview vs. View Live
| Button | What it shows |
|---|---|
| Preview | Your current draft, including unpublished edits. URL: /forms/{id}/preview. Owner-only — submissions are disabled and produce a toast. |
| View live | The published snapshot at /f/{slug}. What respondents see. |
Use Preview while you build. Use View live to verify after you publish.
The Public URL
https://your-app.example/f/{slug}
The slug is an opaque 8-character base62 code. It is not derived from the form title — competitors can't enumerate /f/quarterly-survey-2026. The slug is global (not per-team) so links never collide across teams.
You can find the slug:
- In the publish bar's View live link
- Via Settings → Form URL (copy button)
- In the URL bar after clicking View live
You can't change the slug
Once a form is created, its slug is permanent. If you need a vanity URL, use a redirect from your own domain.
Sharing the Designer with a Teammate or Client
The publish bar's Share button opens the same share-link dialog used for Pages and Databases. Anyone with the link can edit the form definition (no view-only mode for forms — yet).
Use this when:
- A client wants to tweak the wording without you in the loop
- A teammate without database edit permission needs to update the form
- You want a contractor to set up a form without giving them full team access
Share-link permissions on a form mirror the edit-on-form check: the link grants whatever the form owner has — typically full edit on the form and its backing database.
See Sharing for the full share-link feature reference.
Embedding the Form
The publish bar's Embed button (next to Share) opens the embed dialog. It generates an <iframe> snippet with auto-resize, theme control (auto/light/dark), and a chromeless layout — drop it into any website or blog post.
See Embedding for the full reference, including settings, snippet anatomy, and revocation.