Double opt-in
Turn on Double opt-in in Quizably to email each lead a confirmation link. What visitors see, the email, the confirmation page, lead status, webhooks and testing.
Double opt-in asks a visitor to confirm their email address by clicking a link before they count as a subscriber. In Quizably the visitor is never blocked: they carry on to their result while the confirmation email is on its way. What waits for the click is everything that treats them as a captured lead: the lead webhook, the “new lead” email to you, and the lead counts in Analytics.
Turn it on
- Open Quiz Builder, then All Quizzes, and edit the quiz.
- Open the Form tab.
- Set Show the form to Before quiz or End of quiz. If it is Off, the toggle does not appear.
- In the properties panel, open Advanced.
- Turn on Double opt-in. The help text reads: “Send a confirmation email and only mark the lead as confirmed once they click the link.”
- Save the quiz.
The setting is per quiz. To start new quizzes with the form on, see Plugin settings. The other form options are in The lead capture form.
What happens, step by step
- The visitor submits the form.
- Quizably saves the lead with the status Pending and sends the confirmation email.
- The visitor goes on to their result. On the result screen, or on the thank-you screen if the quiz has no result, a notice sits above the content: Check your inbox. followed by “We sent a confirmation link to ann@example.com. Click it to finish subscribing.” This works in every template, including Full Screen.
- The visitor opens the email and clicks the link. They land on a plain confirmation page (below).
- The lead becomes Verified. At that moment Quizably fires the lead webhook and the “new lead” email, if you have them on.
If the same person submits the form again on the same quiz before confirming, they get another email. If they already confirmed on that quiz, they are not asked again and the lead is captured straight away.
The confirmation email
| Part | Value |
|---|---|
| Subject | Confirm your subscription |
| Format | Plain text |
| Body | “Please click the link below to confirm your subscription:” followed by the link |
| Link | Your home page address followed by /?quizably_doi= and a signed token |
| Sender | WordPress defaults. Quizably sets no From header on this email. |
The link works every time it is clicked and does not expire. The token is signed with a secret that Quizably creates on your site the first time it is needed, so nobody can make a valid link for a lead by guessing.
The text of the email cannot be edited in the admin. If you need to change it, use the quizably_doi_email filter, described in Hooks and filters.
The email is sent with the standard WordPress mail function, the same as all other site email. If your host sends mail poorly, confirmations will land in spam or never arrive. An SMTP plugin with a proper sender address is strongly recommended. Note that the visitor sees the Check your inbox. notice even when the email could not be sent, so test delivery yourself.
The confirmation page
Clicking the link opens a plain WordPress message page, not a page from your theme. It has a Back to the site link to your home page.
| Case | Page title | Message |
|---|---|---|
| First click | Subscription confirmed | Thank you. Your email address is confirmed. |
| Clicked again | Subscription confirmed | This email address is already confirmed. |
| Link damaged, or the lead was deleted | Confirmation link not valid | This confirmation link is not valid. It may have been copied incorrectly. |
The invalid case also returns HTTP status 400.
Lead status
| Stored value | Meaning | In the CSV double_optin_status column | In the webhook lead.double_optin_verified |
|---|---|---|---|
| Empty | The quiz does not use double opt-in | not_required | null |
| 0 | Waiting for the click | pending | false |
| 1 | Confirmed | verified | true |
In the admin, open Leads, select a lead and look at the Double opt-in line under the contact details. It shows Pending or Verified, and it is hidden when double opt-in was not used. The leads table itself has no status column. Pending leads are listed on the Leads screen like any other lead, so filter the CSV on double_optin_status when you want confirmed contacts only.
What waits for the click, and what does not
| Thing | When it happens |
|---|---|
| Lead saved and listed in Leads | When the form is submitted, as Pending |
Webhook with event set to lead_captured | When the visitor confirms |
| “Email me on new leads” notification | When the visitor confirms |
Webhook with event set to submission_completed | When the quiz is completed. Its lead object shows double_optin_verified as false until the click. |
| “Email me on new submissions” notification | When the quiz is completed |
| Lead counts in Analytics | After the click. Pending leads are not counted. |
If you send leads to an email platform, act on the lead_captured webhook for confirmed contacts only. The submission_completed webhook is sent right away, so check lead.double_optin_verified before you subscribe anyone. See Webhooks.
For developers
Two hooks run on confirmation, in this order: the action quizably_lead_confirmed and then quizably_lead_captured. The email can be changed with the filter quizably_doi_email. Signatures are in Hooks and filters.
There is also a public endpoint that completes the same step:
GET /wp-json/quizably/v1/public/confirm-optin?token=TOKEN
A valid token returns {"confirmed":true,"lead_id":5,"already_confirmed":false}. A repeat click returns the same with already_confirmed set to true. An invalid token returns HTTP 400 with the code quizably_invalid_token and the message “Invalid confirmation token”. The email does not link to this endpoint. It links to the page on your home address described above. See the REST API reference.
Test it on your own site
- Create a test quiz with the form at End of quiz and Double opt-in on. Use an email address you can read.
- Optionally add a webhook to a request catcher. See Webhooks.
- Publish the quiz, take it in a private window and submit the form.
- Check that your result appears with the Check your inbox. notice above it.
- Open the email with the subject Confirm your subscription. If it does not arrive, check your spam folder and your site’s mail setup.
- In Leads, select the lead and check that Double opt-in shows Pending. Your request catcher should have received no
lead_capturedmessage yet. - Click the link in the email. You should see “Thank you. Your email address is confirmed.”
- Reload the lead. It should show Verified, and the
lead_capturedmessage should now have arrived withdouble_optin_verifiedset totrue. - Click the link again and check for “This email address is already confirmed.”
- Delete the test lead from Leads when you are done.
Related
Last updated October 4, 2026.