Every user who goes through KYC or signs an escrow must first exist as a Zquence user. Most integrations push users in two flows:
  1. Live sync - when a user signs up in your app, call add-user to mirror them.
  2. Nightly reconciliation - a batch job runs add-user-bulk to catch anything the live sync missed.

Live sync - single user

Use your internal user ID as the idempotency key suffix. Retries are then safe: if the sync job restarts, we’ll return the existing user instead of erroring.

Bulk sync - up to 10,000 users

For CRM snapshots, onboarding migrations, or reconciliation jobs, use the bulk endpoint.
Response:
skipped entries are users whose email already exists for this tenant - this is a no-op success. Inspect failed to see which rows couldn’t be ingested.

Nightly CRM sync pattern

1

Export delta

Grab users created or updated in the last 24 hours from your CRM.
2

De-duplicate by email

Guarantees the bulk endpoint’s skipped count is meaningful.
3

Chunk to 1,000

We accept up to 10,000 per call - 1,000 gives smaller retry units.
4

Retry on 429

Honor Retry-After. Use the rate-limit helper.
5

Log failed[] to your ops channel

So someone can fix invalid emails before the next run.

Event on success

Each added user fires a tenant.users.invite webhook. Subscribe if you want to drive downstream automation (welcome email, Slack alert, analytics event).