boxli is CRM-native, not CRM-adjacent. Engagement signals stream into HubSpot and Salesforce as contact properties, timeline events, and deal-linked records — in real time, with sub-500ms latency. Slack pings your reps the second a box is opened. Webhooks let you wire boxli into anything else.
Native integrations across your CRM, alerts, billing, and fulfillment — plus an open webhook surface to wire boxli into anything else.
Native OAuth. Sends post as contact properties + timeline events. Deal attribution via hubspot_deals link. List-based campaign triggers.
Lead and contact sync, custom object for sends, and opportunity attribution back to closed-won.
Per-org incoming webhook or org-wide fallback. Triggers post to chosen channel with rep mention, contact context, and deep-link to send.
Track API webhooks fire on delivery, exception, and undeliverable events, and page the assigned rep in Slack on every status change.
Subscription billing + per-design inventory line items. Webhooks reconcile inventory balance + send receipts. Org-scoped customer records.
Transactional email for delivery, scan alerts, low-credit warnings, team invites. Templated, per-org branded.
Video brochure hosting and per-recipient AI personalization, with telemetry posting to /api/ingest/engagement via HMAC.
Outbound webhooks on every signal. Inbound HMAC-signed ingest at /api/ingest/engagement. CSV fallback for batch loads.
Trigger boxli sends from any Zap, or wire it directly through our webhook surface.
Native step type for boxli sends inside Outreach sequences, or wire it through our webhook today.
Native cadence step, or wire it through our webhook today.
Two-way sync of engagement signals as program-member custom fields.
Inbound engagement events are HMAC-SHA256 signed on every request and idempotent on external_event_id. Outbound webhooks fire on every signal, with retry-with-backoff.
POST /api/ingest/engagement
Headers:
content-type: application/json
x-boxli-signature: sha256=<hmac of body>
Body:
{
"external_event_id": "vendor_evt_abc123",
"external_send_id": "<sends.id or sends.external_ref>",
"event_type": "session_end",
"occurred_at": "2026-04-22T18:14:00Z",
"duration_sec": 142,
"lat": 39.7392, "lng": -104.9903,
"place_id": "ChIJ...", "place_label": "Denver, CO",
"play_sequence_num": 3
}Signature verification is timing-safe; replays land on the same row via the partial unique index on external_event_id. Sub-200ms happy path: insert plus counter RPC are synchronous, trigger evaluation runs in the background.
Configure per-trigger webhooks in the campaign builder. boxli POSTs the rollup row, the touched send, and the originating event. Retries on 5xx with exponential backoff. Dispatch failures are logged in trigger_fires for audit.
Full reference at /docs/api. CSV fallback at POST /api/ingest/engagement/csv for vendors that can't hit our webhook directly.
If your sales stack runs on something we haven't shipped yet — Apollo, Common Room, Default, Clay, Gong — and you're willing to be a design partner on the integration, we'll prioritize it.