Embed forms on your website

Iframe embed kit, HTML form action with Turnstile and honeypot, JSON fetch, and Success/Error URLs.

9 min readUpdated August 2026

Before you begin

  • Create and publish a form
  • Open form detail → Copy → Embed code
  • Ask your website admin where the form should appear
  • For form action redirects, set Success URL and Error URL (https only) in form Settings
Video walkthrough placeholder for embedding Flowforce forms on a website.
Video: Embed forms on your website
Video walkthrough placeholder for embedding Flowforce forms on a website.

Choose an embed style

  • Website (iframe kit) — keep Flowforce UI and branding; Turnstile and honeypot run inside the iframe
  • Form action (IDX for listing inquiry) — custom HTML on your site; browser redirects after submit; snippet includes honeypot + Turnstile
  • JSON (fetch) — stay on the same page with a status message; snippet includes honeypot + Turnstile
Embed settings showing Website, Form action, and JSON tabs for a Flowforce form.
Embed settings showing Website, Form action, and JSON tabs for a Flowforce form.
Website preview showing an embedded Flowforce form on a page.
Website preview showing an embedded Flowforce form on a page.

Security (form action + JSON)

Every public submit is checked server-side for rate limits, required fields, marketing consent, a honeypot field named website (must stay empty), and Cloudflare Turnstile when Turnstile is enabled on Flowforce. The Form action and JSON paste snippets include the honeypot and Turnstile widget. Do not remove those fields — a bare action URL without Turnstile fails when Turnstile is enforced.

  • Honeypot — hidden input name="website"; leave empty
  • Turnstile — Cloudflare widget sends cf-turnstile-response (JSON also sends turnstileToken)
  • Prefer Copy embed code over hand-rolled HTML so security fields stay in sync

Basic iframe

Use the Website tab for most sites. It keeps the public form hosted by Flowforce while showing it on your page.

Website embed failure state caused by a blocked iframe or incorrect public form ID.
Website embed failure state caused by a blocked iframe or incorrect public form ID.
iframe embed
<iframe
  src="https://app.flowforce.app/f/PUBLIC_ID?embed=1"
  width="100%"
  height="520"
  frameborder="0"
  title="Contact form"
></iframe>

HTML form action

  • Set optional Success URL and Error URL in Settings
  • Copy Embed → Form action (or IDX for listing inquiry)
  • Paste the snippet; keep honeypot and Turnstile blocks
  • Visitor POST goes to /f/{publicId}/submit, then redirects to your Success or Error URL
Form action shape
<form action="https://app.flowforce.app/f/PUBLIC_ID/submit" method="POST">
  <input name="firstName" required />
  <input type="email" name="email" required />
  <input type="hidden" name="marketingConsent" value="true" />
  <!-- honeypot + Turnstile included in Embed → Form action snippet -->
  <button type="submit">Submit</button>
</form>

JSON / fetch (stay on page)

Use Embed → JSON. The script posts JSON with Accept: application/json, shows a short status message, and resets Turnstile after success or failure. Field name attributes must use Flowforce keys (firstName, email, country, budget, need, …).

Listing inquiry

  • Pass listingPublicId for each property page
  • Use a default listing for single-property forms
  • Test every IDX template after publishing
Listing iframe
<iframe
  src="https://app.flowforce.app/f/PUBLIC_ID?embed=1&listingPublicId=LISTING_PUBLIC_ID"
  width="100%"
  height="520"
  frameborder="0"
  title="Contact about this property"
></iframe>

What you should see

A visitor should be able to submit the embedded form. Custom form action or JSON embeds should show Turnstile when configured. The resulting Contact or Lead should show the correct form source and page or listing context.

Common issues

  • iframe blocked — host site CSP must allow Flowforce
  • Security verification failed — keep Turnstile from the snippet; do not use a bare action URL alone
  • Wrong listing attribution — verify listingPublicId
  • Embed blank — confirm the form is published and the public ID is correct
  • Redirected to Flowforce thanks — set Success/Error URLs in form Settings for classic form posts

Ready to try this in FlowForce?

Start free — set up your workspace and follow along with this guide.