The simplest integration: Zapier triggers off a contact in your CRM and
sends it to Instant Compliance as a customer, then polls back to update
the CRM contact with the verification result.
Prerequisites
- An Instant Compliance API key with scopes
customers:write customers:read aml:read. See Authentication.
- A Zapier account.
- A CRM connected to Zapier (HubSpot, Salesforce, Pipedrive, Airtable,
Google Sheets — anything Zapier supports).
Create a new Zap
Trigger: your CRM’s “New contact” (or “Updated contact”) event.
Add an Action: Webhooks by Zapier
Choose Custom Request.| Field | Value |
|---|
| Method | POST |
| URL | https://app.instantcompliance.ai/api/v1/customers |
| Data Pass-Through? | No |
| Data | (JSON, see below) |
| Headers | Authorization: Bearer ic_live_...
Content-Type: application/json
Idempotency-Key: {{zap_id}}-{{step_id}}-{{contact_id}} |
Map fields
{
"externalId": "{{contact_id}}",
"fullName": "{{full_name}}",
"email": "{{email}}",
"phone": "{{phone}}"
}
Replace {{...}} with Zapier’s field pickers.Test
Run the Zap once. Verify the customer appears at
https://app.instantcompliance.ai/customers tagged “Integration”.
The Idempotency-Key header makes Zapier’s automatic retries safe —
if the same trigger fires twice we won’t create a duplicate.
Part 2 — Sync results back
Set up a second Zap that polls Instant Compliance for status changes
and updates your CRM.
Schedule trigger
Add a Schedule by Zapier → Every Hour trigger.
Webhook GET
Action: Webhooks by Zapier → GET.| Field | Value |
|---|
| URL | https://app.instantcompliance.ai/api/v1/customers |
| Query string parameters | updated_since = {{zap_meta_human_now_minus_1_hour}}
limit = 100 |
| Headers | Authorization: Bearer ic_live_... |
Iterate the result array
Add a Looping by Zapier step on the data array from the
previous step.
Update the CRM contact
Inside the loop, look up the CRM contact by external_id and write
kyc_status + aml.status into a custom field. Mark the contact
as cleared when kyc_status = VERIFIED AND aml.status = CLEAR.
Recommended CRM custom fields
| Field | Type | Source |
|---|
| IC Customer ID | Text | id |
| KYC Status | Picklist | kyc_status |
| AML Status | Picklist | aml.status |
| KYC Completed At | Datetime | kyc_completed_at |
| IC Cleared | Boolean | kyc_status == VERIFIED && aml.status == CLEAR |
Going further
- When webhooks ship in v2, you can drop the
polling Zap entirely — we will push the update to your Zap webhook
trigger the moment KYC completes.
- For higher-volume workloads, replace Zapier with a tiny scheduled
script. See Polling for status.