Engineering · 2026-03-07
Building an Identity Threat Playbook in Under 10 Minutes
By J. W. Bouckaert
The finished pipeline
In this tutorial, you'll configure a complete identity threat response pipeline:
- Create a PasskeyBridge account and get your API key
- Set up a webhook source for carrier signal ingest
- Build a playbook that responds to SIM-swap signals
- Test with a simulated signal and watch the response execute
By the end, you'll have a working playbook that detects a SIM swap and automatically revokes sessions, freezes credentials, and notifies your team, all in one pass, inside the request.
Step 1: Create your account
Sign up at passkeybridge.io/auth. The Starter plan is free forever with 100 signals per month, no credit card required. See our full platform overview for details on all plans.
Step 2: Create a webhook source
In your dashboard, navigate to the Settings tab and create a new webhook source. PasskeyBridge generates a unique ingest URL and signing secret for each source.
Point your carrier provider's webhook configuration at this URL. PasskeyBridge supports Vonage, Twilio, Sinch, and custom sources.
Step 3: Build your playbook
Navigate to the Playbooks tab and click "Create Playbook." Configure the following:
- Name: SIM Swap Response
- Trigger Type: Signal match
- Signal Type: SIM swap
- Actions (in order):
- Revoke sessions—invalidate all active sessions for the affected user
- Freeze passkey credentials—suspend all WebAuthn credentials (Pillar III)
- Suspend agent delegates—pause all scoped AI agent delegates issued by the user
- Webhook callback—POST the event to your application's incident handler
- Notify team—send an alert to your configured Slack channel or PagerDuty service
Each action executes in order. If an action fails, PasskeyBridge retries with exponential backoff (configurable max attempts).
Step 4: Test with a simulated signal
Use the PasskeyBridge API to send a test signal. The public ingest URL is https://api.passkeybridge.io/v1/shield-ingest. Authenticate with your tenant API key (x-pb-api-key) and, when a per-source signing secret is configured, sign the body with HMAC-SHA-256 and pass it via x-pb-signature:
PAYLOAD='{"event_type":"sim_swap","phone_hash":"a1b2c3d4...","carrier":"vonage","confidence":0.95,"timestamp":"2026-03-07T12:00:00Z"}'
SIG=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$SIGNING_SECRET" -hex | awk '{print $2}')
curl -X POST https://api.passkeybridge.io/v1/shield-ingest \\
-H "Content-Type: application/json" \\
-H "x-pb-tenant-id: $TENANT_ID" \\
-H "x-pb-api-key: $PB_API_KEY" \\
-H "x-pb-signature: $SIG" \\
-d "$PAYLOAD"
Check the Events tab in your dashboard. You'll see the signal arrive, match your playbook, and execute all five actions, with per-action latency metrics.
Under the hood
The entire flow, from signal receipt to final action, runs inside a single request:
- API-key authentication and per-tenant rate limiting
- HMAC-SHA-256 payload verification (when a signing secret is configured)
- PII scrubbing (phone number normalized to SHA-256 hash)
- Signal normalization to one of the seven canonical types
- Playbook matching and ordered action execution
- Append-only audit logging
All of this runs with zero PII storage and full SOC 2 alignment.
Next steps
- Add verifiable credential verification (Pillar II) for identity re-verification after threats
- Configure AI agent delegates with behavioral trust scoring
- Explore Reg S-ID compliance for financial accounts
- Read Why SIM-Swap Detection Is Not Enough for the strategic context