Have a link?
flnk.it /

Forms that turn submissions into contacts

Drag-and-drop builder with every field type you'd expect. Embed anywhere with one <script> tag. Every submission auto-creates a tagged contact ready for your drip campaigns.

Get Started Free See pricing
Available on Professional and Unlimited plans.

How it works

From blank canvas to first submission in five minutes.

1

Drag fields onto the canvas

Text, email, dropdowns, ratings, NPS, sliders, matrix, image picker. Twelve element types out of the box.

2

Pick a short code

Your form is hosted at flnk.it/form/{your-code}. Permanent, shareable, custom.

3

Embed or share

One <script> tag for iframe embed. Or share the URL. Or POST submissions via REST.

4

Watch contacts fill in

Every submission becomes a tagged contact, fires your drip, and pings the form.submitted webhook.

The whole point

Submissions become contacts. Tagged. Automatically.

Every form submission is upserted into your contact list under a source:form:{shortcode} tag — the same source-tag convention used by bookings, shop purchases, and the public subscribe widget.

Existing contacts (matched by email) get empty fields filled in — never overwritten. New contacts are created and surface in your contact list immediately.

Wire a drip sequence to the tag_added trigger with that source tag and you've got an end-to-end "form fills in → welcome series fires" pipeline with zero code.

// What happens when alice@example.com submits:
contact ← upsert("alice@example.com")
tag: source:form:contact-us
drip: trigger tag_added → ship Day 0 email
webhook: POST form.submitted → your endpoint
notif: in-app + email + push to you
email: branded confirmation back to alice

Embed anywhere — three ways

Pick the path that fits your stack.

Hosted URL

Share flnk.it/form/{shortcode} on social, in email, anywhere. Works everywhere, no embed required.

Iframe widget

One <script> tag. Mounts an iframe with full Survey rendering — every field type, real validation.

<script src="https://flnk.it/js/forms-widget.js"
    data-form="contact-us"
    data-height="600"></script>

REST submit

POST answers from a backend, Zapier flow, or custom integration. Anonymous + CORS-friendly.

POST /api/forms/contact-us/submit
Content-Type: text/plain

{"email":"alice@example.com",
 "comment":"hi"}

Built for integrations

Webhooks

Subscribe to form.submitted at /payments/webhooks — the same HMAC-signed bus that handles payment, contact, and mailing events. Every submission fires a POST with the full answers JSON.

Auto-disabled after 10 consecutive failures so a broken receiver doesn't back up the queue. Re-enable manually at any time.

REST API

List forms, read submissions, query schemas, delete forms — all via the REST API with a scoped forms API key.

Public submit is anonymous (CORS-friendly) so the widget and any third-party flow can post without exposing credentials. Per-IP-per-form 5-second rate limit catches accidental double-clicks.

Ship a form in five minutes

Available on Professional and Unlimited. Submissions, drips, webhooks, REST API — all included.

Get Started Free Compare plans

Frequently asked questions

What kind of forms can I build?

Contact forms, lead capture, surveys, NPS, feedback, event signups, RSVP, support intake — anything with text fields, dropdowns, checkboxes, ratings, NPS, sliders, matrix questions, image picker, and signature fields. The drag-and-drop designer covers the same field types as paid form-builder SaaS.

How do submissions become contacts?

Every submission auto-upserts a contact under a source:form:{shortcode} tag. Existing contacts get empty fields filled in — never overwritten. New contacts are created. Wire a drip sequence to the tag_added trigger with that source tag for an automatic welcome series.

Where do I embed the form?

Three options. (1) Share the hosted URL flnk.it/form/{shortcode}. (2) Embed the iframe widget with one <script> tag. (3) POST programmatically via the public REST endpoint.

Do I get notifications?

Yes — in-app bell, optional email, optional browser push. The submitter can also receive a branded confirmation email back. Both are toggleable per form.

Can external systems react to submissions?

Yes. Register a webhook with form.submitted in the event list. Every submission fires an HMAC-signed POST with the full answers JSON to your endpoint — perfect for CRM sync, Slack notifications, or any custom workflow.

What plan do I need?

Forms are available on Professional and Unlimited plans. Free / Starter / Basic users see an upgrade prompt on /forms.

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.