# Spam protection
Every form falls victim to spambots at some point, how you handle them can affect your customers.
Formspark offers the following solutions to prevent spam:
- Botpoison (opens new window) integration
- reCAPTCHA (opens new window) integration
- hCaptcha (opens new window) integration
- Turnstile (opens new window) integration
- Akismet (opens new window) integration
- Custom spam words
- Honeypot technique
Formspark will not save submissions, send notifications or decrement your submission counter if any of the following conditions are true:
- The submission is empty
- The spam protection verification was unsuccessful
- The submission contains a honeypot
# Botpoison
Formspark integrates with Botpoison, an invisible, user-friendly anti-spam solution.
# Getting started
- Go to https://botpoison.com/start/ (opens new window).
- Create a new configuration.
- Integrate the
public key
on your website (instructions (opens new window)). - Copy the
secret key
. - Open Formspark.
- In your form's settings, select
Botpoison
underSpam Protection
. - Paste the
secret key
into theBotpoison secret key
field.
Your form is now protected by Botpoison ✔.
To stop using Botpoison, change your Spam Protection
to None
.
# Example
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://unpkg.com/@botpoison/browser" async></script>
</head>
<body>
<form
method="POST"
action="https://submit-form.com/your-form-id"
data-botpoison-public-key="your-botpoison-public-key"
target="_blank"
>
<textarea name="message" placeholder="Message"></textarea>
<button type="submit">Send</button>
</form>
</body>
</html>
# AJAX
If you're using AJAX, add the Botpoison response to your submission body via the _botpoison
property.
const body = {
email: "john.doe@example.com",
message: "Hello, World!",
_botpoison: "...",
};
# Recommended libraries
- JavaScript: @botpoison/browser (opens new window)
# reCAPTCHA
Formspark integrates with Google's reCAPTCHA v2 "I'm not a robot" checkbox.
# Getting started
- Go to https://www.google.com/recaptcha/ (opens new window).
- Navigate to the admin console.
- Create a new site.
- Make sure you select
reCAPTCHA v2
. - Make sure you whitelist your website's domain.
- Integrate the
site key
on your website (instructions (opens new window)). - Copy the
secret
key. - Open Formspark.
- In your form's settings, select
Google reCAPTCHA v2
underSpam Protection
. - Paste the
secret key
into thereCAPTCHA v2 secret key
field.
Your form is now protected by reCAPTCHA ✔.
To stop using reCAPTCHA, change your Captcha provider
to None
.
# HTML
Make sure your form's method
attribute is explicitly set to POST
.
<form method="POST">...</form>
# AJAX
If you're using AJAX, add the reCAPTCHA response to your submission body via the g-recaptcha-response
property.
const body = {
email: "john.doe@example.com",
message: "Hello, World!",
"g-recaptcha-response": "...",
};
# Recommended libraries
# Articles
# hCaptcha
Formspark integrates with hCaptcha, an independent alternative to Google's reCAPTCHA.
# Getting started
- Go to https://www.hcaptcha.com/ (opens new window).
- Create a new site.
- Integrate the
site key
on your website (instructions (opens new window)). You can find your site key here (opens new window). - Copy the
secret key
. You can find your secret key here (opens new window). - In your form's settings, select
hCaptcha
underSpam Protection
. - Paste the
secret key
into thehCaptcha secret key
field.
Your form is now protected by hCaptcha ✔.
To stop using hCaptcha, change your Spam Protection
to None
.
# HTML
Make sure your form's method
attribute is explicitly set to POST
.
<form method="POST">...</form>
# AJAX
If you're using AJAX, add the hCAPTCHA response to your submission body via the h-captcha-response
property.
const body = {
email: "john.doe@example.com",
message: "Hello, World!",
"h-captcha-response": "...",
};
# Recommended libraries
# Turnstile
Formspark integrates with Turnstile, Cloudflare's smart CAPTCHA alternative.
# Getting started
- Go to https://www.cloudflare.com/products/turnstile (opens new window).
- Create a new site.
- Integrate the
site key
on your website (instructions (opens new window)). - Copy the
secret key
. - In your form's settings, select
Turnstile
underSpam Protection
. - Paste the
secret key
into theTurnstile secret key
field.
Your form is now protected by Turnstile ✔.
To stop using Turnstile, change your Spam Protection
to None
.
# AJAX
If you're using AJAX, add the Turnstile response to your submission body via the cf-turnstile-response
property.
const body = {
email: "john.doe@example.com",
message: "Hello, World!",
"cf-turnstile-response": "...",
};
# Recommended libraries
# Akismet
Formspark integrates with Akismet, a spam filtering service.
This integration requires no additional setup, it is pre-activated for all accounts.
# Custom spam words
Custom spam words let you block submissions that contain specific words.
We scan all values in your form's submission body for the words you specify. If a word is found, the submission will be discarded as spam.
You specify the comma-separated list of words in your form's settings, under Custom spam words
.
The total length of the list must not exceed 2,500 characters.
# Honeypot
WARNING
While simple to implement, this technique is not the most effective.
The honeypot technique is a simple-to-implement spam prevention solution.
To enable this feature, add a field with the name _honeypot
or _gotcha
to your form and hide it with CSS (see example below). The submission will be silently ignored when a spam bot enters a value.
<form action="https://submit-form.com/your-form-id">
<input
type="checkbox"
name="_honeypot"
style="display:none"
tabindex="-1"
autocomplete="off"
/>
<input type="email" name="email" />
<button type="submit">Subscribe</button>
</form>
# Custom honeypot
Instead of using _honeypot
or _gotcha
, you can specify your own honeypot name in your form's settings.
<form action="https://submit-form.com/your-form-id">
<input
type="checkbox"
name="Paste your custom honeypot here"
style="display:none"
tabindex="-1"
autocomplete="off"
/>
<input type="email" name="email" />
<button type="submit">Subscribe</button>
</form>