Audience

Signup forms

Subscribe visitors from your website with a hosted page, an HTML form or a script

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.

Forms need a verified domain: they are served from its tracking subdomain, such as link.acme.com.

Create a form

Open Signup forms › New form and fill in:

SettingWhat it does
NameFor you only, to find the form in the dashboard
ListsThe lists the visitor joins. One confirmation email covers all of them
Double opt-inOn by default: the visitor confirms by email before being subscribed
Confirmation email subjectSubject of that email. Default: "Confirm your subscription"
Ask for the first nameAdds a first name field
Title, DescriptionShown above the fields on the hosted page and in the script version
Button labelDefault: "Subscribe"
Success messageShown after the visitor submits
Redirect URLOptional: 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.

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.

Keep the hidden 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

  1. Kula checks the address. An invalid one gets an error message.
  2. The contact is created, or updated if it already exists, with the source Signup form.
  3. 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.
  4. 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.

Lists

Subscription statuses and double opt-in

Welcome new subscribers

Greet everyone who signs up through your form