# Webflow
- Copy your form's action URL.
- Paste the action URL into Webflow's
action
field in the form element’s settings in the Designer. - Copy-paste the code below into
Project Settings > Custom Code > Footer Code
.
<!-- Project Settings > Custom Code > Footer Code -->
<script src="https://unpkg.com/@formspark/formson"></script>
<script type="text/javascript">
$('form[action^="https://submit-form.com"]').each(function (i, el) {
var form = $(el);
form.submit(function (e) {
e.preventDefault();
form = $(e.target);
var action = form.attr("action");
var data = Formson.toJSON(new FormData(e.target));
$.ajax({
url: action,
method: "POST",
data: data,
dataType: "json",
success: function () {
var parent = $(form.parent());
parent.children("form").css("display", "none");
parent.children(".w-form-done").css("display", "block");
},
error: function () {
var parent = $(form.parent());
parent.find(".w-form-fail").css("display", "block");
},
});
});
});
</script>
# Redirect after submission
<!-- Project Settings > Custom Code > Footer Code -->
<script src="https://unpkg.com/@formspark/formson"></script>
<script type="text/javascript">
$('form[action^="https://submit-form.com"]').each(function (i, el) {
var form = $(el);
form.submit(function (e) {
e.preventDefault();
form = $(e.target);
var action = form.attr("action");
var data = Formson.toJSON(new FormData(e.target));
$.ajax({
url: action,
method: "POST",
data: data,
dataType: "json",
success: function () {
window.location.href = "https://your-website.com/thanks"; // Replace with your success URL
},
error: function () {
window.location.href = "https://your-website.com/error"; // Replace with your error URL
},
});
});
});
</script>
# Botpoison spam protection
<!-- Project Settings > Custom Code > Footer Code -->
<script src="https://unpkg.com/@formspark/formson"></script>
<script src="https://unpkg.com/@botpoison/browser" async></script>
<script type="text/javascript">
$('form[action^="https://submit-form.com"]').each(function (i, el) {
var form = $(el);
form.submit(function (e) {
e.preventDefault();
form = $(e.target);
var action = form.attr("action");
var botpoison = new Botpoison({
publicKey: "your-public-key",
});
botpoison
.challenge()
.then(function (result) {
var data = Formson.toJSON(new FormData(e.target));
data["_botpoison"] = result.solution;
$.ajax({
url: action,
method: "POST",
data: data,
dataType: "json",
success: function () {
var parent = $(form.parent());
parent.children("form").css("display", "none");
parent.children(".w-form-done").css("display", "block");
},
error: function () {
var parent = $(form.parent());
parent.find(".w-form-fail").css("display", "block");
},
});
})
.catch(function () {
var parent = $(form.parent());
parent.find(".w-form-fail").css("display", "block");
});
});
});
</script>
# Tips and tricks
TIP
- How to submit Webflow forms to your own backend (opens new window)
- How to disable the submit button while a form is submitting in Webflow (opens new window)
- How to pre-fill Webflow form input fields at page load (opens new window)
- How to clear all fields of a Webflow form (opens new window)
- How to automatically disable a Webflow button or input (opens new window)