Reference
Zapier
Trigger Zaps on verification outcomes, AML hits, review cases, or any platform event — and create sessions, tags, and AML checks from other apps.
The Zapier app connects the platform to 7,000+ apps with no code: post to Slack when a verification needs review, add approved users to your CRM, open a ticket on an AML hit, or kick off a verification session when a row lands in a spreadsheet.
The app lives in the repo at sdks/zapier/ (Zapier Platform CLI). Until it's
published to the public Zapier directory, push it to your Zapier workspace as
a private app:
cd sdks/zapier
npm install
npx zapier login
npx zapier register "ThirdFactor Obsidian" # once
npx zapier pushConnecting your account
The connection asks for two fields:
| Field | Value |
|---|---|
| Base URL | Your deployment's API origin, e.g. https://acme.thirdfactor.ai |
| API key | A tenant API key (sk_…) from Console → Settings → API keys |
Zapier validates the pair against GET /v3/automation/me/ and labels the
connection with your tenant name.
Note
If the connection test fails with a permissions error, the Connect feature isn't enabled for your account — it's switched on per account by the platform administrator. Nothing will trigger until it's enabled.
Triggers
All triggers are instant (REST hooks): turning a Zap on creates a
Connect subscription with source: "zapier"
(visible and debuggable on the console Connect page); turning it off
deletes the subscription.
Ready-made triggers for the highest-value events:
| Trigger | Fires on |
|---|---|
| Verification Completed | session.completed — any final outcome; branch on data.session.status in later steps |
| Verification Approved | session.approved |
| Verification Declined | session.declined |
| Verification Needs Review | session.in_review |
| Review Case Opened | case.created |
| AML Watchlist Hit | aml.hit |
| Module Completed | module.completed — with an optional module dropdown (ID check, liveness, AML, …) |
Plus a generic Platform Event trigger with a dynamic dropdown of the full
event catalog — anything in the catalog
(session.started, case.overdue, credits.low, …) can drive a Zap.
Most triggers accept an optional Workflow filter (a dynamic dropdown of
your workflows), so a Zap can react only to, say, your "High-value onboarding"
workflow. Sample data in the Zap editor comes from
GET /v3/automation/samples/<event>/ — your most recent real payloads
when any exist, a realistic static sample otherwise.
Actions
| Action | Does |
|---|---|
| Create Verification Session | POST /v3/session/ — pick a workflow from a dropdown, pass your user reference (vendor_data), contacts, expiry; returns the hosted verification url to send to the applicant |
| Add Tag to Session | POST /v3/session/<id>/tags/ |
| Run AML Check | POST /v3/tools/aml-check/ — standalone sanctions/PEP screen by name, DOB, country |
Search
Find Session — by session ID, or by your vendor_data reference (the
vendor-data variant scans the newest 200 sessions, which is fine for
automation-scale lookups; use the API directly for bulk reconciliation).
Example Zaps
- Verification Approved → Salesforce: update the lead to "KYC passed", attach the risk score.
- Verification Needs Review → Slack: post to
#compliancewith the hosted console link. - AML Watchlist Hit → Jira: open a ticket carrying
data.aml.matched_entities. - Google Sheets new row → Create Verification Session → Gmail: email the applicant their verification link.
- Module Completed (ID_VERIFICATION) → Airtable: log the OCR'd document fields the moment the document step finishes, before the session even completes.
Note
Zapier receives whatever the subscription allows — the payload is already
sanitized (no evidence images or secrets), and you can additionally scope the
subscription by workflow and module. Treat data in Zapier per your data-privacy
obligations; PII such as OCR'd document fields does flow through
module.completed events.