Idempotent upserts, custom property mapping, rate-limit backoff, dry-run mode, and a full audit trail. Run it twice, get the same result.
Most sync scripts just create contacts. If the script runs twice or crashes mid-batch, you get duplicates. Cleaning them up is manual, error-prone, and makes sales reps stop trusting the CRM data entirely.
Every upsert searches by email first. Contact exists? Update it. Doesn't exist? Create it. Run the sync ten times in a row and the CRM looks exactly the same. No duplicates, no matter what.
Map your data fields to CRM fields with optional transforms. Split a full name into first/last, cast strings to numbers, rename fields. All declarative.
Automatic exponential backoff on 429 responses. Configurable retries and base delay. Your sync doesn't crash when the API throttles you at 3am.
Set dryRun: true to see exactly what would happen without touching the CRM. Every planned action gets logged to the audit trail.
Every create, update, rate-limit hit, and dry-run action is timestamped and recorded. Pull the log any time for compliance reviews or debugging.
HMAC-SHA256 signature verification for incoming webhooks with timing-safe comparison. Rejects tampered payloads before they touch your data.
Tell the connector which of your fields map to which CRM fields. Add transforms if you need them: name -> firstname with a split on space, revenue -> annual_revenue with a Number cast.
Pass a base URL and API key. Works with HubSpot-style APIs out of the box. The mock server lets you test the full flow offline before touching production.
Run with dryRun: true and review the audit log. See every create and update that would happen. Catch field mapping mistakes before they hit real data.
Flip dry-run off and let it run. Idempotent upserts handle the rest. Rate limiting kicks in automatically if the API pushes back. The audit trail records everything.
One-time purchase. Full source code. Zero dependencies.
Tell us your CRM, your data source, and the fields you need mapped. We'll scope it within 24 hours.
Get in Touch