Contact confirmation lets you verify that a phone number or email address actually belongs to the customer who provided it.
Don’t confuse contact confirmation with subscription confirmation (double opt-in / DOI). DOI captures a customer’s consent to receive campaigns and is tied to subscriptions. Contact confirmation just verifies ownership of the contact itself.
Email and mobile phone confirmation is configured at the integration level under Contact confirmation settings.
Once enabled, any contact that comes in through that integration will carry a confirmation flag, and Maestra will take that flag into account when processing requests.
Turning the setting on does not affect contacts that are already in your database — only new and updated contacts coming through the integration.
After you turn it on
Email addresses and mobile numbers get icons in the customer profile:
- Pending confirmation
- Confirmed
Contacts with no confirmation data are shown without any icon.
On projects with confirmation enabled, contacts are split into primary and non-primary (pending confirmation).
Primary contact. Can be either confirmed or pending confirmation. It behaves like a standard contact: it must be unique within the project, you can send standard campaigns to it, and you can use its value in filters and queries.
Non-primary contact — always pending confirmation. Its use is heavily restricted: you can only send campaigns to it with specific settings. It does not need to be unique, so it can duplicate someone else’s primary contact or be shared by multiple customers.
Why does a customer have two email addresses or phone numbers?
When someone tries to change a confirmed contact, the old confirmed contact stays primary until the new one is confirmed. You can only send a message with a confirmation code or link to the pending email or number — it isn’t a second full-featured contact.
A primary contact, whether confirmed or not, must be unique within the project. So if one customer confirms a given email, that same contact becomes non-primary and pending confirmation on every other customer profile that has it.
Non-primary contacts don’t have to be unique. If several customers entered the same contact, it can sit as non-primary on all of their profiles. Even after one customer confirms that email or phone, the contact still stays on the other customers’ profiles with the option for them to confirm it as well.
On projects with confirmation enabled, a contact can be in one of three states:
- Pending confirmation
- Confirmed
- No confirmation data
Which state it lands in depends on how the contact entered the database.
Integration point with email or mobile confirmation
| Scenario | Resulting status |
|---|
| Contact filled in | Pending confirmation |
| Pending-confirmation contact edited | Pending confirmation |
| Unconfirmed contact (no data) edited | Pending confirmation |
| Unconfirmed contact not edited but passed in an import or call | Pending confirmation |
| Confirmed contact edited | Old contact stays primary; new contact is pending confirmation |
Exception: the Create and subscribe step in an operation ignores integration settings — the contact arrives with no confirmation data.
Integration point without confirmation
| Scenario | Resulting status |
|---|
| Contact filled in | No confirmation data |
| Any contact edited | No confirmation data |
| Contact with confirmation not edited but passed in an import or call | Existing status is preserved |
| Scenario | Resulting status |
|---|
| Contact added while creating a new customer | Pending confirmation |
| Contact filled in on an existing customer | No confirmation data |
| Unconfirmed contact edited | No confirmation data |
| Pending-confirmation contact edited | Pending confirmation |
| Confirmed contact edited | Old contact stays primary; new contact is pending confirmation |
You can send campaigns to a primary contact — confirmed or pending — just like any other contact. The only thing that matters is whether the contact is valid.
To a non-primary, unconfirmed contact, you can only send transactional campaigns through a flow or an operation, with the appropriate contact type specified.
Confirming an email
From a campaign
Add the Ticket.EmailConfirmationLinkTicket ticket to the confirmation link. Clicking the link confirms the contact and, if DOI is enabled on the project, the subscription as well.
Example link with a ticket:
https://mysite/?direct-crm-ticket=${Ticket.EmailConfirmationLinkTicket}
Through a flow
Use the Confirm email step in your flow.
Through an import
In your import or edit job, add the IsEmailConfirmed field with any positive value (1 / true / yes).
Make sure to use the integration that has the confirmation flag set for the corresponding contact type.
Confirming a mobile phone
From an operation
Call an operation that uses one of these steps:
- Confirm mobile phone and SMS subscription
- Confirm mobile phone on the customer side
Through an import
In your import or edit job, add the IsMobilePhoneConfirmed field with any positive value (1 / true / yes).
Make sure to use the integration that has the confirmation flag set for the corresponding contact type.
The customer profiles get merged. Contacts that grant account access have some specifics during deduplication.
After confirmation
The confirmation is recorded in the change history.
You can trigger a flow off this event for both email and mobile phone confirmations.