HomeGuides › Building and placing forms

A newsletter signup form in WordPress

A signup form needs little more than an email address and a clear, unticked consent box. The important part is what happens next: the signup should be stored with the exact consent wording, and reach your mailing list reliably. Mailbag Contact Form's Newsletter signup template handles the first part for free; Mailbag Pro handles the second.

The form

  • Email — required.
  • First name — optional; it lets your emails greet people by name.
  • A consent box — required, unticked, with plain wording about what they'll receive.

Mailbag's Newsletter signup template is exactly that, with the consent text “Yes, send me the newsletter. I can unsubscribe at any time.” and the notification subject New newsletter signup: {field:email}.

Consent you can show

When someone ticks Mailbag's consent box, the entry stores the text they agreed to, so a signup from months ago still shows the wording that was on the page that day. See GDPR consent.

Getting signups into your mailing list

The free plugin saves every signup under Mailbag → Entries and emails you, and you can export them to CSV and import that into your newsletter service. That's fine for a handful a month.

For anything more, the paid add-on Mailbag Pro sends each signup straight to Mailchimp, Brevo, Kit, MailerLite, ActiveCampaign or HubSpot, using an API key from your own account. You choose the list, which field goes where, and whether to send only when the consent box is ticked. If the service refuses signups — a revoked key, a deleted list — Pro keeps them, emails you, and sends them once it works again.

Double opt-in

Many newsletter services can send a confirmation email before adding someone. With Mailchimp, Pro can add new subscribers as pending so Mailchimp sends its own confirmation; with other services, double opt-in is set up in the service itself. The consent box on your site is the first step, not a replacement for it.

Mailbag Contact Form is a free contact form that saves every entry before it sends anything, and shows you what happened to each email.

See what it does