NetSendo

How-to · Lists, forms and contacts

Turn on double opt-in for a NetSendo list

Create an email list in NetSendo, switch on Double Opt-in, pick a mailbox that sends system emails, and edit the confirmation email and confirmation pages.

For NetSendo 2.7.0, checked against its source code on 2026-11-08.

In short

Create the list under Contact Lists → Email Lists, then turn on Double Opt-in on its Settings → Subscription tab. People who sign up through a NetSendo form get the Signup Confirmation email and join the list only after they click its link. The email and the pages around it are edited under Address List → System Emails and System Pages.

Before you start

  • A mailbox that may send system emails. Under Settings → Mailboxes, the mailbox's Allowed Message Types must include System (new mailboxes have it ticked). NetSendo sends the confirmation through the list's default mailbox, then your default mailbox, then any of your active mailboxes allowed to send system emails. With none of these it falls back to the MAIL_* server in .env. On a default Docker install that is Mailpit, so the email never reaches the subscriber. See Mailboxes and Connect Amazon SES.
  • Double opt-in covers NetSendo subscription forms only. Contacts you import, add with Add Subscriber, or add through the API (which the WordPress plugin also uses) go onto the list as active, with no confirmation email.
  • No licence plan is needed for anything on this page.

Steps

  1. In the sidebar open Contact Lists → Email Lists and click New List.
  2. On the General tab, type a List Name, for example Newsletter.
  3. Open the Settings tab. In its left menu, Subscription is selected.
  4. Turn on the Double Opt-in switch ("Require email confirmation after signup").
  5. Optional: turn on Delete unconfirmed addresses and set Delete after (default 7 days, allowed 1–365). The daily maintenance job at 04:00 removes addresses that have not confirmed within that time from the list.
  6. Click Create List. You return to Email Lists.
  7. Click the new list's name to open it, then go to Settings → Sending.
  8. In Default Outbound Mailbox (SMTP), choose a mailbox that is allowed to send system emails.
  9. Optional: in Settings → Pages, find Subscription Confirmation Page (confirmation required), click Custom URL and enter your own "check your inbox" page, for example https://example.com/check-inbox.
  10. Click Save.
  11. Open Address List → System Emails. Under Show for: pick your list.
  12. In the row Signup Confirmation (identifier signup_confirmation), click Customize.
  13. Edit Email Subject and Email HTML Content. Keep the [[activation-link]] placeholder: it is the confirmation link. Leave Sending Enabled on.
  14. Click Save. NetSendo creates a copy of the email for this list only; other lists keep the global template.
  15. Optional: open Address List → System Pages and pick your list under Show for:. Click Customize in the row whose Page Title is "Email Needs Activation" (/signup_exists_inactive, shown after a form signup) or "Activation Successful" (/activation_success, shown after the link is clicked). Edit Page Title and HTML Page Content, then click Save.

Check that it works

  1. Make a form for the list and set it to Active (see Create a signup form). Open its hosted page, the address in the iFrame code under Get code, and sign up with an address you can read.
  2. You see "Email Needs Activation", or your own page if you set one in step 9. (A form embedded with the JavaScript code shows the form's Success Message in place instead.)
  3. The email "Please Confirm Your Subscription" arrives (the default subject, unless you changed it).
  4. Before you click, the address is not in Contact Lists → Subscriber List: that screen shows active members only. The form's Statistics page (under Address List → Forms) counts the signup as Pending, and keeps it there after confirmation.
  5. Click the link. You see "Activation Successful", the contact appears in Subscriber List for that list, and NetSendo sends the "Subscription Confirmed" email. Autoresponders for the list start at this moment, not at signup.

In the logs, a sent confirmation shows as System email sent: signup_confirmation:

docker compose exec app grep "signup_confirmation" storage/logs/laravel.log

If it doesn't work

The confirmation email never arrives

  • The log says No mailbox configured for system email. No mailbox of yours is allowed to send System messages, so NetSendo used the .env server. On Docker, look in Mailpit (by default http://127.0.0.1:5031 on the server). Fix: tick System in the mailbox's Allowed Message Types, or set the list's Default Outbound Mailbox (SMTP).
  • The log says System email not found: signup_confirmation. The list's own copy of Signup Confirmation has sending switched off. A switched-off copy does not fall back to the global template. Turn it back on in System Emails.
  • The log says Failed to send system email. The mailbox's provider refused the message. Follow Emails are not sending.
  • The address was already active on the list. NetSendo does not ask an active member to confirm again. It sends the "already subscribed" email instead.

A new contact is active without confirming

The contact did not come through a NetSendo form: import, Add Subscriber and the API skip double opt-in. A form created through the API or the MCP server can also carry its own double_optin value, which overrides the list.

The link is valid for 7 days and is signed, so an edited or truncated link fails too. The same page appears if the address was removed from the list, for example by Delete unconfirmed addresses. Ask the person to sign up again.

The visitor is sent somewhere else after signup

A Redirect URL set on the form wins over the list's confirmation page. Clear it in the form's Settings tab to use the list's page.

Do it with an AI assistant

The NetSendo MCP server has create_contact_list and update_contact_list (settings.subscription.double_optin, or the double_opt_in shortcut), get_system_email and update_system_email for signup_confirmation, and update_system_page for the pages.

Create an email list "Newsletter" with double opt-in and mailbox 3 as default mailbox. Then rewrite its signup_confirmation email in a friendly tone and keep the [[activation-link]] placeholder.

Something different in your panel? Your instance may run another release; see the release notes or write to support@netsendo.com. Every page of these docs is also available as Markdown for AI assistants: request https://netsendo.com/en/docs/how-to/double-opt-in-list with Accept: text/markdown.