Forms + Pages

Headless Tools

Forms that manage themselves. Pages that test themselves. Zero backend to build, zero JavaScript to write.

Forms

Your HTML is the form engine

Wrap your form with <snip-form> tags, add your key, include the ~8KB library. You now have a complete backend — validation, state management, AJAX, spam protection, and data storage. No JavaScript to write.

1

Get your key

Create a form in your dashboard. Grab the secure key.

2

Wrap your form

Wrap with <snip-form> tags. Backend done.

3

Customise with directives

Add validation, states, and custom UX — all in markup.

Basic form — that's it, you're done
<!-- Wrap your existing form -->
<snip-form key="your-form-key">
<form>
<label>Name</label>
<input type="text" name="name">
<label>Email</label>
<input type="email" name="email">
<button type="submit">Send</button>
</form>
</snip-form>
<!-- ~8KB gzipped, zero dependencies -->
<script src="https://cdn.snipform.io/api/v2/sf.iife.js"></script>

Directive-Driven

Everything declared in markup

Validation, error states, loading states, custom success content — all as HTML attributes. The ~8KB library handles state management, AJAX, and reactive UI. No JS to write.

Server-side validation

30+ validation directives — sf-validate:required, sf-validate:email, sf-validate:min, and more. Validated server-side, untamperable.

Error & valid states

Show inline errors with if-error="name" then-show-text. Toggle CSS classes with error-class and valid-class.

Submit states

Button text updates during submission with on-submit-text="Sending...". No spinners to code.

Custom success content

Replace the form with custom HTML on success using <sf-success>. Inject submitted values with %name% variables.

Full-featured form — still just markup
<snip-form key="your-key">
<form>
<input
sf-validate:required
name="name"
error-class="border-red-500"
valid-class="border-green-500">
<!-- Inline error message -->
<span if-error="name" then-show-text></span>
<input
sf-validate:email="Not a valid email"
name="email"
error-class="border-red-500"
valid-class="border-green-500">
<span if-error="email" then-show-text></span>
<textarea sf-validate:required name="message"></textarea>
<!-- Submit with loading state -->
<button type="submit"
on-submit-text="Sending...">
Send
</button>
</form>
<!-- Custom success content -->
<sf-success>
Thanks %name%, we'll be in touch!
</sf-success>
</snip-form>

Spam Protection

Behavioral spam scoring

Not honeypots. Not CAPTCHAs. Real behavioral analysis that scores every submission. Spam is silently dropped. Real users are never bothered.

Keystroke & mouse patterns

Real users type and move differently than scripts.

Scroll behavior analysis

Bots don't scroll. Real visitors do.

WebDriver detection

Identifies automated browsers and headless tools.

Datacenter IP identification

Flags submissions from known cloud and datacenter ranges.

The trick

Bots get a fake success response. They think it worked — nothing was saved. They never adapt because they never know they failed.

For you?

Nothing to do. No reCAPTCHA to integrate. No honeypot fields to add. No spam rules to maintain. Every submission is scored automatically. You only see real submissions.

Spam verdict
Keystroke score 0.92 human
Mouse entropy high
WebDriver not detected
IP type residential
Verdict PASS — saved

Zero Config

Backend? Done.

No servers to set up. No database to connect. No API to build. SnipForm gives you a feature-rich backend the moment you paste the script.

No servers

We host the backend. You host the form.

No database

Submissions stored and searchable. Exports too.

No validation code

Directives handle it. Server-side. Secure.

No email setup

Email notifications built in. Just toggle on.

Integrations

Slack

Submissions posted to your channels instantly.

Webhooks

Send data to any endpoint. Your backend, your rules.

Zapier

Connect to 5,000+ apps. CRMs, email, spreadsheets.

Works on any site

HTML WordPress Webflow Shopify Squarespace Wix Next.js React Astro

Pages

A/B testing.
Built in.

Create landing pages, add multiple versions, set traffic weights, and track conversions per variant. No third-party tools. No extra scripts.

1

Create a page

Set a slug, pick a domain. Your page is live at that URL.

2

Add versions

Each version is a full HTML page with its own content. Set one as the control.

3

Set traffic weights

Control how much traffic each version gets. 50/50, 80/20, or any split you want.

4

Track conversions

Views and conversions tracked per version. See which variant actually converts.

Page versions
A Hero with video control
active
Weight: 50% 1,234 views · 4.2% CVR
B Hero with testimonial
active
Weight: 30% 741 views · 5.8% CVR
C Minimal CTA
active
Weight: 20% 493 views · 3.1% CVR
Total: 2,468 views Winner: B (+38% vs control)
Hosted

Pages served from our CDN. Fast, reliable, no hosting to manage.

Weighted

Control traffic distribution per version. Adjust anytime.

Tracked

Views and conversions per variant. Clear winner identification.

Build forms. Test pages.
Ship faster.

Full form backend, spam protection, and A/B testing. Free up to 10,000 sessions. No credit card required.