Skip to content

Forms

SnipForm Forms give you a form backend without writing one. You supply the markup (or let the dashboard supply it), and SnipForm validates every submission on the server, scores it for spam, stores it, notifies your team, and records it in Signals as a form submit.

There are three clients. All three talk to the same server, share the same validation rules, and run the same session model.

HTML libraryReactManaged
You writeHTML with sf- directivesJSX with a hookNothing. Fields live in the dashboard
StylingYoursYoursDashboard theme, overridable with CSS variables
Works inStatic sites, Astro, Blade, WordPress, anything that renders HTMLReact 18+, Next.js, Remix, ViteAny page that can hold a script tag
Validation feedbackDirectives toggle classes, text and visibilityerrors in React state, optional validate-on-blurRendered for you
StartHTML libraryReactManaged forms

Use the HTML library unless React renders the form. The HTML library works by mutating the DOM, and React overwrites those mutations on its next render, which breaks the validation UI. The React package keeps values, errors and status in React state and never touches the DOM.

<snip-form key="YOUR_FORM_KEY">
<form>
<input type="email" name="email" sf-validate:required sf-validate:email />
<div if-error="email" then-show-text></div>
<button type="submit" on-submit-text="Sending...">Subscribe</button>
</form>
<sf-success style="display:none">
<h2>Thanks, %email% is on the list.</h2>
</sf-success>
</snip-form>
<script src="https://cdn.snipform.io/api/v2/sf.iife.js" defer></script>
  • Server validation. 35 Laravel rules, applied by the server, so the client can never disagree with what gets stored.
  • Spam protection without a CAPTCHA. A human gate, a honeypot and behavioural scoring. Spam is stored, labelled and kept out of your inbox, and the bot is never told.
  • Double-submit protection. Each form session is single use.
  • Domain lock. A form only initialises from its property’s domain (plus localhost when you switch that on).
  • Signals tracking. Every accepted submission is a form_submit event on the visitor’s session, usable as a conversion step and as an automation trigger.
  • Notifications. Submissions email the form’s notification list and can post to Slack, call a webhook or create a contact through Automations.
  • Style integrity. The HTML library never changes your CSS unless a directive tells it to. The React package renders nothing you did not write.