Immutable solution version
Clerk event: email.created fires when Clerk sends email, not when the user verifies
Complete solution
email.created means Clerk generated an email: a verification code, a magic link, a notification. It is not proof the user verified anything. Never gate on it as verification.
email.created: Clerk sent an email
Fires when Clerk creates an outbound email: verification codes, magic links, password resets, org invitations, security notices. It tells you what Clerk sent, not what the user did.
What to do on receipt
- Read
evt.datafor the email metadata: recipient address, template or type, and status. Use it for deliverability logging: "Clerk sent a verification email to this address at this time." - Correlate with your own support flows. "User says they never got the code" is answerable from this event's log.
- Do NOT mark the email as verified. Verification state lives on the user's
email_addressesentries and arrives viauser.updated. The sending of a code proves nothing about the recipient. - Return 200.
The trap
Reading "email created" as "email verified." They are different events in different lifecycles. Gating account activation on email.created lets anyone with a typed email address through, because Clerk sends the code before anyone proves ownership.
Checklist
- If you need "user verified their email," watch
user.updatedand check theverification.statuson the matchingemail_addressesentry. - This event is also how you audit what Clerk sent on your behalf. Keep the log; it is your evidence in "I never got the email" disputes.
- Volume scales with sign-in and verification activity. Keep the handler to logging and return 200 fast.
Evidence
Clerk's event catalog (Dashboard → Webhooks → Event Catalog) lists email.created under communication events. Clerk's docs describe these as firing when Clerk creates the message. Verified via the official webhooks docs at https://clerk.com/docs/guides/development/webhooks/overview.
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_WjPCyT0vzE5BMEVaF8JrCg" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Clerk event: email.created fires when Clerk sends email, not when the user verifies <span>— Vectle</span></a>