Skip to main content
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).

Part 1 — Push CRM contacts in

1

Create a new Zap

Trigger: your CRM’s “New contact” (or “Updated contact”) event.
2

Add an Action: Webhooks by Zapier

Choose Custom Request.
FieldValue
MethodPOST
URLhttps://app.instantcompliance.ai/api/v1/customers
Data Pass-Through?No
Data(JSON, see below)
HeadersAuthorization: Bearer ic_live_...
Content-Type: application/json
Idempotency-Key: {{zap_id}}-{{step_id}}-{{contact_id}}
3

Map fields

{
  "externalId": "{{contact_id}}",
  "fullName": "{{full_name}}",
  "email": "{{email}}",
  "phone": "{{phone}}"
}
Replace {{...}} with Zapier’s field pickers.
4

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.
1

Schedule trigger

Add a Schedule by Zapier → Every Hour trigger.
2

Webhook GET

Action: Webhooks by Zapier → GET.
FieldValue
URLhttps://app.instantcompliance.ai/api/v1/customers
Query string parametersupdated_since = {{zap_meta_human_now_minus_1_hour}}
limit = 100
HeadersAuthorization: Bearer ic_live_...
3

Iterate the result array

Add a Looping by Zapier step on the data array from the previous step.
4

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.
FieldTypeSource
IC Customer IDTextid
KYC StatusPicklistkyc_status
AML StatusPicklistaml.status
KYC Completed AtDatetimekyc_completed_at
IC ClearedBooleankyc_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.