Skip to main content

Add a form to your pages

Contact, newsletter signup, feedback, survey, event registration — pretty much every site needs a form at some point. Flexweg has a built-in form system that lets you create a form once in the dashboard, drop a snippet into any page on your site, and start receiving submissions by email and in a searchable inbox.

This page explains what the system does for you, and walks through adding your first form without writing any back-end code.

What you get out of the box

When you use a Flexweg form, you don't just get a <form> tag — you get an entire stack that would normally require a server:

  • A submission endpoint — Flexweg hosts https://www.flexweg.com/f/<your-form-id> and accepts your visitors' data.
  • Email notifications — you get an email the moment a submission arrives.
  • A dashboard inbox — every submission is listed at flexweg.com/account/forms/<form-id>/submissions with search, filtering, pagination, archiving and deletion.
  • Spam protection, built-in — Flexweg runs 4 layers of anti-spam on every submission (hidden field trap, fill-time check, disposable-email detection, content scoring). Spam goes into its own bin, not your inbox.
  • CSV export — grab all your submissions as a spreadsheet with one click.
  • GDPR-friendly — visitor IP addresses are stored as one-way hashes, never in plain text.
  • Cross-site use — one form, reusable across every site in your account (main domain + subdomains + custom domains).

No server, no database, no third-party service (Formspree, Getform, Typeform) required — it all lives inside Flexweg.

How it works, in plain English

  1. You create a form in your Flexweg dashboard: pick a name, list the fields you want (email, name, message, …), set a thank-you message.
  2. Flexweg gives you an HTML snippet to paste into your page. The snippet is a normal <form> plus a short <script> that takes care of submitting the data to the right endpoint.
  3. A visitor fills the form on your site and clicks Send. The script POSTs the data to Flexweg.
  4. Flexweg runs anti-spam checks. If the submission looks legit, it's stored and you get an email. If it smells like spam, it goes into the spam folder of the dashboard (you're not bothered).
  5. You read submissions in your dashboard, mark what matters, archive the rest, export to CSV if you need to.

That's it. The visitor never knows they submitted to Flexweg — they just see your thank-you message.

Step 1 — Create a form in the dashboard

Log in to flexweg.com and open the forms section from your account menu — or go directly to Account → Forms → New.

The form builder asks for:

  • Form name — shown in the dashboard only (e.g. "Contact form — main site").
  • Description (optional) — a reminder for yourself.
  • Success message — what the visitor sees after a successful submission (e.g. "Thanks! We'll get back to you within 24 hours.").
  • Redirect URL (optional) — if you'd rather send the visitor to a thank-you page instead of showing an inline message.
  • Notification email — where the submission emails are sent. Defaults to your account email.

Then you add fields one by one. For each field:

  • Name — the internal identifier used in the emails and CSV export (e.g. email, full_name).
  • Label — what the visitor sees next to the input (e.g. "Your email address").
  • Type — pick from the list (see field types below).
  • Required or optional.
  • Placeholder (optional) — grey hint text inside the input.

Reorder fields with the up/down arrows, preview in real time, click Save. Your form now has a unique ID and submission URL — keep them handy for the next step.

Step 2 — Embed the form on your page

In the dashboard, open your form and click Embed. Flexweg generates three snippets — pick the one that matches your stack.

HTML + JavaScript (works anywhere)

A copy-paste block you drop into any HTML page. Works on any Flexweg-hosted site: plain HTML, a Docusaurus site, an Eleventy blog, anything.

contact.html
<form id="flexweg-form-abc123" data-form-uuid="abc123def456">
<label>
Your email
<input type="email" name="email" required />
</label>

<label>
Your message
<textarea name="message" required></textarea>
</label>

<!-- Anti-bot fields, don't remove -->
<input type="text" name="_t_trap" style="display:none" tabindex="-1" autocomplete="off" />
<input type="hidden" name="_t_start" value="" />

<button type="submit">Send</button>
</form>

<script>
// Flexweg's embed script handles submission,
// shows the success message, and fills the anti-bot timestamp.
</script>

The snippet generated by the dashboard includes the right field markup for your exact schema plus a short submit script — you just paste it as-is.

Style it to match your site

The snippet uses plain HTML elements, no CSS framework. Style it with your own CSS — the form will inherit the look of the rest of your page.

React component

If your site is built with React (Next.js, Remix, Docusaurus with React pages, Astro with React islands…):

ContactForm.jsx
import FlexwegForm from './FlexwegForm';

export default function ContactPage() {
return <FlexwegForm formUuid="abc123def456" />;
}

The dashboard gives you the full FlexwegForm component source — drop it into your src/components/ and import it.

Raw HTTP (for advanced integrations)

If you want to call the submission endpoint yourself — from a mobile app, a Node script, an automation tool like n8n or Zapier:

curl -X POST https://www.flexweg.com/f/abc123def456 \
-H 'Content-Type: application/json' \
-d '{
"email": "[email protected]",
"message": "Hello!",
"_t_trap": "",
"_t_start": 1711234567
}'

The _t_trap (honeypot) and _t_start (timestamp) fields are how Flexweg detects bots — leave _t_trap empty and set _t_start to the time when the form was shown to the visitor (Unix seconds).

Step 3 — Receive submissions

As soon as someone submits your form, three things happen:

  1. An email arrives at the notification address you set. It contains every field the visitor filled in.
  2. The submission appears in your dashboard at flexweg.com/account/forms/<form-id>/submissions. Each submission shows the data, submission date, and a spam score.
  3. Your visitor sees your success message (or is redirected to your thank-you URL).

From the dashboard you can:

  • Filter by spam / archived / unread / date range
  • Mark suspicious submissions as spam
  • Archive ones you've acted on
  • Export everything as CSV (for import into a CRM, spreadsheet, email tool…)
  • View per-submission metadata — user agent, referer, spam score and reasons
Read submissions programmatically

If you want to pull submissions into another tool, use the Forms API — same data, same filters, over JSON. See Connect to external databases for ways to wire this up from a build step or serverless function.

Supported field types

The visual form builder offers seven field types, all with built-in validation:

TypeUse it forNotes
textName, company, free textSingle-line input.
emailEmail addressBuilt-in format validation.
telPhone numberRenders the phone keyboard on mobile.
numberAge, quantity, ratingNumeric keypad on mobile.
urlWebsite URLBuilt-in format validation.
textareaLong message, description, feedbackMulti-line input.
selectCountry, plan, categoryDropdown — you configure the options.

Spam protection, without the CAPTCHAs

Flexweg runs 4 layers of anti-spam automatically on every submission — no CAPTCHA, no "click all the motorcycles" puzzle for your visitors:

  1. Honeypot field — a hidden input that only bots fill. Included in every snippet, invisible to humans.
  2. Timing check — submissions faster than 3 seconds after the form appeared are bots.
  3. Content scoring — spam keywords, excessive caps, suspicious patterns and disposable email addresses (mailinator.com, 10minutemail.com, …) increase the spam score.
  4. Sender signals — missing browser User-Agent, missing referer, bot-like User-Agent strings all add to the score.

A submission scoring 70+ out of 100 is auto-classified as spam and routed to the spam bin of your dashboard. You never see it in your inbox unless you look for it.

One form, every site in your account

Forms belong to your account, not to a specific site. That means:

  • Create one "Contact form" in the dashboard and embed it on your main site, your blog, your docs, your landing page — all with the same snippet.
  • Submissions from every site end up in the same inbox.
  • Flexweg automatically allows form submissions from every domain attached to your account (main subdomain, custom domains, extra Flexweg subdomains). You don't configure CORS.

Need different contact forms per site? Just create multiple forms — the dashboard stays organized.

Limits by plan

Plans determine how many forms you can create and how many submissions you receive per month (across all forms, across all sites).

PlanMax formsSubmissions / month
Free2100
Standard102,000
Premium105,000
Business5050,000
Enterprise50500,000

The dashboard shows a live quota gauge that turns orange at 80% and red at 100%. At 100%, new submissions are rejected until the first of next month (when the counter resets automatically) — or you upgrade your plan.

Common patterns

A few shapes that come up often:

  • Contact formfull_name (text, required), email (email, required), subject (text, optional), message (textarea, required).
  • Newsletter signupemail (email, required) and maybe first_name (text, optional).
  • Lead capture for a landing pagecompany (text, required), email (email, required), team_size (select: "1–10", "11–50", "51+"), project_budget (select).
  • Bug reporttitle (text, required), steps (textarea, required), browser (text, optional), url (url, optional).
  • Event RSVPfull_name (text, required), email (email, required), guests (number, optional), dietary_restrictions (textarea, optional).

For developers — automation and API

Everything the dashboard does, you can also do programmatically:

  • Create, update, list, delete forms via the Forms API. Good for bulk setup, syncing forms across environments, or building admin UIs.
  • Read submissions via the same API with filtering and pagination — pipe them into a CRM, Slack channel, or custom dashboard.
  • Use the MCP tools for forms to let an AI assistant (Claude, Cursor, ChatGPT) create and maintain your forms in plain language.

Where to next