Publishing
Publishing matters for hosted forms — the kind we render at formspring.io/p/{slug}. It's the gate between draft (only you see it) and live (anyone with the URL can submit).
Legacy forms — where you write your own HTML and POST at the endpoint URL — don't have a publish step. Their endpoint is live the moment you create the form, and stays live until you archive it.
Hosted vs legacy: what changes when you publish
| Legacy | Hosted (draft) | Hosted (published) | |
|---|---|---|---|
| Endpoint URL accepts POSTs | Yes | Yes | Yes |
Public page at /p/{slug} |
N/A | 404 | Renders |
| Visible in dashboard | Yes | Yes | Yes |
| Counts toward submission quota | Yes | Yes | Yes |
The endpoint URL works for hosted-draft forms too — you can test with curl before going public. Only the rendered page is gated.
How to publish
In the builder, click Publish in the top-right header. We:
- Run a final schema validation. If a required field has no name, or you have a
selectwith no options, we 422 and won't publish. - Set
published_atto now. - Make
formspring.io/p/{slug}start rendering.
There's no separate "review" step. Publish is immediate.
Via the API: POST /forms/{form}/publish. Via MCP: publish_form.
The hosted URL
Every hosted form gets a public slug:
https://formspring.io/p/contact-acme-2026
Slugs default to a slugified version of the form name. Edit it in Settings → Slug. Slugs must be unique across the platform; we'll error if you pick one that's taken.
The slug is independent of the public_id — that's the random ID in the endpoint URL (/f/r2EdO-orF-3S). The endpoint never changes; the slug is only for the public page.
Unpublishing
Click Unpublish in the builder header. We:
- Clear
published_at. - The public page starts returning 404.
Important: the endpoint URL keeps working. Unpublishing is a UI-visibility change, not a kill switch. Anyone who already has the endpoint URL (legacy mode, your own HTML, an embedded iframe) can still POST to it.
If you want to actually stop accepting submissions, archive the form. See Archive & restore →.
What stops, what doesn't
When you unpublish a hosted form:
| Stops | Keeps working | |
|---|---|---|
formspring.io/p/{slug} |
Yes — returns 404 | |
formspring.io/f/{public_id} POSTs |
Yes — endpoint live | |
| Existing iframe embeds | Yes — they hit /p/{slug}, will 404 |
|
| Notifications & autoresponder | Yes, on any submission that does come in | |
| Webhooks | Yes |
To fully stop accepting submissions: archive. See the next page.
Re-publishing
Click Publish again on a previously-published form. Same gate, same effect. We don't track publish history — there's no "publish #3" notion. Just published_at flipped on, then off, then on again.
What's next
- Archive & restore → — actually stop accepting submissions
- Form builder → — design before you publish
- Forms overview → — legacy vs hosted, lifecycle table