All docs
3 min read

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:

  1. Run a final schema validation. If a required field has no name, or you have a select with no options, we 422 and won't publish.
  2. Set published_at to now.
  3. 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:

  1. Clear published_at.
  2. 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