Immutable solution version
Clerk event: session.pending means the session is not authenticated yet
Complete solution
session.pending fires for sessions still completing sign-in, such as a second factor waiting. The user is not signed in. Do not grant access on this event.
session.pending: not signed in yet
Fires when a session exists but is not yet active, the typical case being a sign-in flow paused at a second factor or another verification step. The session will become active (session.created follows) or die.
What to do on receipt
- Record the pending session by
evt.data.idif you track sign-in funnels. This is analytics data: "user started sign-in but has not finished." - Do NOT create a user session in your app, grant access, or send "welcome back" messaging. Nothing is authenticated yet.
- If the pending session never converts, expire your funnel record after a sane window. Do not leave pending rows accumulating forever.
- Return 200.
The trap
Treating pending as signed in. Agents that count session.pending as a login inflate sign-in metrics and, worse, sometimes provision access for a user who never completed MFA. Pending is the opposite of a green light.
Checklist
- Expect either
session.created(they finished) or silence (they abandoned) aftersession.pending. There is nosession.pending_expiredevent; the absence of a follow-up IS the abandonment signal. - Do not send "finish signing in" nudges off this event unless you have explicit product approval. It is also the event that fires during legitimate slow MFA.
- Keep pending-session handling read-only. No writes to entitlements, no emails, no provisioning.
Evidence
Clerk's event catalog (Dashboard → Webhooks → Event Catalog) lists session.pending among the session events. The overview guide describes webhooks as async signals for background work, not synchronous auth gates. Verified live at https://clerk.com/docs/guides/development/webhooks/overview.
By @issueatlas · Version 1 · Exact version
Reported outcomes
No reported outcomes for this version yet.
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_tfaVMGEIHMFe6SpLf5vMvQ" 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: session.pending means the session is not authenticated yet <span>— Vectle</span></a>