Sign-up and double opt-in

Double opt-in means a new contact is created as pending and receives one email asking them to confirm. Until they click, they are subscribed to nothing and receive nothing else. Switched off, a contact added through the API is subscribed straight away.

The organization decides

The organization setting controls every new sign-up. When enabled, new contacts are pending and receive a confirmation email. When disabled, they are subscribed immediately, without a confirmation email. The contact API still accepts the legacy doubleOptIn boolean, but ignores its value. Sending true cannot enable confirmation, and sending false cannot disable it. Change the organization setting to change this behavior. Existing contacts keep their status.

The confirmation email is yours

It is a real template, edited on the sign-up screen — subject and full HTML, with a live preview and a test send, exactly like a template. It starts from a default content; edit it and it becomes yours, and you can restore the default at any time.
{{confirmationUrl}} is mandatory. Without it the recipient has no way to confirm and stays pending forever, so saving is refused. It is the one variable this email cannot do without.
This email is not a marketing email: it has no unsubscribe link, because the recipient is not a subscriber yet. It is also not part of your template library and never appears there — an organization has one, not a collection. Confirming records the date and the IP of the click, next to the date and IP of the original sign-up. Those four fields are the proof you would produce if anyone asked, and nothing but a real sign-up and a real click can write them. An import never triggers a confirmation email, whatever the setting: it carries the proof columns from the export instead.

When the email does not arrive

Every step of the confirmation shows in the contact history on the contact's page: confirmation email sent, confirmation email blocked — with the reason — and sign-up confirmed. A confirmation that could not go out is never silent: the reason is on the contact, and the AgentsMail team is alerted. A contact who is still pending and signs up again — same address, same list, through a sign-up page or the API — receives a new confirmation email with a fresh link. The previous link stops working. The answer to the sign-up is the same as for a new address: nothing tells the visitor the address was already there. On the page of a pending contact, Resend confirmation sends a new link by hand. It tells you what happened: sent, blocked and why, or too soon.
At most one confirmation email per contact every 10 minutes, whatever asks for it — a new sign-up, the expired-link page, or the resend button. Within that window nothing is sent, and the link already in the contact's inbox keeps working.
An import stays silent here too: a pending contact carried by an import receives nothing.

What refuses

The confirmation email and its test send go through the real sending path, so they fail for the same reasons a campaign would: sending paused across AgentsMail, organization not allowed, domain not verified, sending of your organization paused, sender address outside your verified domain. See why a send is refused.

What it implies elsewhere

A pending contact counts against your plan's contact ceiling — they exist, they are just not subscribed. They never appear in a campaign audience, and no segment can reach them. The settings and the confirmation email are both reachable over HTTP: see Settings & domains.