| name | persona-webhooks-events |
| description | Handle Persona webhook events for inquiry and verification status changes.
Use when working with Persona identity verification.
Trigger with phrases like "persona webhooks-events", "persona webhooks-events".
|
| allowed-tools | Read, Write, Edit, Bash(curl:*) |
| version | 1.4.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","persona","identity","kyc","verification"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
persona webhooks events | sed 's/\b(.)/\u\1/g'
Overview
HMAC signature verification, inquiry.completed/approved/declined events, idempotent processing.
Prerequisites
- Completed
persona-install-auth setup
- Valid Persona API key (sandbox or production)
Instructions
Step 1: Configure Webhook in Dashboard
1. Dashboard > Settings > Webhooks > Add Webhook
2. URL: https://your-app.com/webhooks/persona
3. Events: inquiry.completed, inquiry.approved, inquiry.declined,
verification.passed, verification.failed
4. Copy the webhook secret for signature verification
Step 2: Webhook Endpoint with HMAC Verification
import express from 'express';
import crypto from 'crypto';
const app = express();
app.post('/webhooks/persona',
express.raw({ type: 'application/json' }),
async (req, res) => {
const signature = req.headers['persona-signature'] as string;
const secret = process.env.PERSONA_WEBHOOK_SECRET!;
const expectedSig = crypto
.createHmac('sha256', secret)
.update(req.body)
.digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(signature || ), .(expectedSig))) {
res.().({ : });
}
event = .(req..());
(event);
res.().({ : });
}
);