CRM Intake
Your CRM submits new exchanges via a signed API — each one lands in the CRM Intake queue for your team to accept.
Connect your CRM
Setup complete
Generate API credentials Step 1
Paste these into your CRM's outbound-webhook settings. Every event must be signed with the secret.
Intake endpoint
https://dev-api.open1031.ai/v1/intake/wh_7f3k92
Signing secret
whsec_9f3•••••••••••••••••••••••••••••••c41a
Shown in full only once at generation. Reveal and copy actions are audit-logged.
Map fields Step 2
Tell Open1031 which CRM fields feed each exchange. We auto-map standard payloads; adjust anything that differs.
Send test event Step 3
Fire a sample exchange from your CRM to prove the pipe end-to-end before going live.
Test exchange received
Signature verified · fields mapped cleanly · view in Intake
Connected
Your CRM → Open1031 intake
Webhook signature verified
HMAC-SHA256
Last event received
2 min ago
Received this week
23 exchanges
Intake enabled
Pausing holds events in a queue — nothing is lost.
Old secret stays valid for 24h so your CRM can cut over. Rotation is audit-logged.
Recent intake activity
Received CRM-88213
Accepted CRM-88201
Rejected CRM-88198
Accepted CRM-88196
Accepted CRM-88190
Build contract — CRM intake settings
1 · Tokens, never hex. Every colour on this surface resolves from
docs/mockups/tokens.css. When this is coded, the [PROPOSED] tokens
(--console-rail-*, --admin-*, the good/warn/bad triad) go into
packages/web-app/src/index.css under :root and .dark
first — never inlined at the call site. Light and dark are both designed here.2 · The nav rail is chrome, not a themed surface. It stays dark navy in both themes, so anything painted on it draws from
--console-rail-* and is measured
against the rail fill. The rail's own ink ramp bottoms out at 4.7:1 — never reach into
--ink-4 for rail text.3 · The signing secret is shown in full exactly once. The stored value is a hash; the panel renders a masked prefix/suffix. Reveal, Copy and Rotate each write an audit-log entry with actor, timestamp and IP — the copy on the surface states this, so the implementation must actually emit it.
4 · Rotation is additive, never destructive. Issuing a new secret leaves the prior one valid for 24 hours so the CRM can cut over without dropping events. A rotation that invalidates immediately is a defect, not a stricter setting.
5 · Inbound events are verified before they are trusted. Every request is HMAC-SHA256 signature-checked against the tenant's secret and rejected on failure — the Rejected row in the activity log is a real outcome, not decoration. Pausing intake queues events rather than dropping them.
6 · Intake creates a queued file, never an active exchange. A CRM payload lands in the intake queue for a coordinator to accept. It cannot assign a coordinator, clear KYC, or start any statutory clock — identity screening remains the first gate on every file and no integration may mark it satisfied.
7 · Field mapping is per-tenant configuration held in the database, not localStorage and not a build-time constant. Auto-mapped and manually-mapped are distinguished in the UI because only one of them is safe to re-derive when the payload shape changes.
All names, references, endpoints and secrets on this surface are synthetic demo data.