Signup forms
A signup form subscribes visitors to one or more lists. Kula hosts it on your own tracking domain, sends the confirmation email and protects it from bots.
link.acme.com.Create a form
Open Signup forms › New form and fill in:
| Setting | What it does |
|---|---|
| Name | For you only, to find the form in the dashboard |
| Lists | The lists the visitor joins. One confirmation email covers all of them |
| Double opt-in | On by default: the visitor confirms by email before being subscribed |
| Confirmation email subject | Subject of that email. Default: "Confirm your subscription" |
| Ask for the first name | Adds a first name field |
| Title, Description | Shown above the fields on the hosted page and in the script version |
| Button label | Default: "Subscribe" |
| Success message | Shown after the visitor submits |
| Redirect URL | Optional: send the visitor to your own thank-you page instead |
Keep double opt-in on: it keeps typos, fake addresses and bots out of your list. Double opt-in.
Add it to your site
The Embed panel of the form gives its URL and an HTML snippet.
Link to the hosted page
The form has its own page at:
https://link.acme.com/f/<form-id>
Share it in your social bio, a QR code or a button. Click Copy the URL or Open the page.
Paste the HTML form
Paste the snippet from the dashboard in your page and style it with your own CSS:
<form method="post" action="https://link.acme.com/f/<form-id>">
<input type="email" name="email" placeholder="you@example.com" required>
<input type="text" name="first_name" placeholder="First name">
<!-- Leave this field hidden and empty: it catches bots -->
<input type="text" name="website" tabindex="-1" autocomplete="off" aria-hidden="true" style="position:absolute;left:-9999px">
<button type="submit">Subscribe</button>
</form>
After submitting, the visitor sees the success message on your tracking domain, or lands on your redirect URL.
website field. Bots fill every field they find: a submission with website filled is answered as a success and silently dropped.Load it with a script
The script draws the form, with your title, description and brand color, and submits it without leaving the page:
<script src="https://link.acme.com/f/<form-id>/embed.js"></script>
The form appears where the script tag stands. To place it elsewhere, add an empty element with the id mailler-form-<form-id> and the script fills it.
Submit from your own code
You can also post to the form from JavaScript, as JSON or form data, with the fields email, first_name and website (empty). With Accept: application/json, the answer is:
{ "ok": true, "pending": true, "message": "Thanks! Check your inbox to confirm." }
pending is true when the visitor still has to confirm by email. To create contacts from your backend, use the contacts API instead.
What happens on submit
- Kula checks the address. An invalid one gets an error message.
- The contact is created, or updated if it already exists, with the source Signup form.
- With double opt-in, the visitor receives the confirmation email and the subscription stays Pending until they click. Without it, they are subscribed right away.
- A confirmed subscription starts the flows triggered by the list, such as your welcome sequence.
Special cases:
- Someone who unsubscribed and fills the form again always confirms by email, even with double opt-in off.
- An address that bounced or complained gets the same success message as anyone else, but nothing is stored. The form never reveals what Kula knows about an address.
- Each visitor can submit at most 10 times per minute.