Inbound capture

Every direction leads converge.

Outbound is wired. Inbound was missing. Five capture modes — hosted forms, chat handoff, email-to-lead, Zapier / Make trigger, QR intake — all feeding the same qualification engine.

📝

Hosted form

Drop a SourceDeck-hosted form on any page. Fields map to the lead object, Basin-delivered, de-duped against your workspace.

<script src="https://sourcedeck.app/assets/sd-form.js" data-workspace="ws_YOUR_ID" data-form="contact"></script>
💬

Chatbot handoff

Tidio or Intercom chat handoff — classified sessions land as source=chatbot leads with the conversation transcript attached.

Workspace webhook: events.sourcedeck.app/v1/inbound/chat/<workspace_id>
📧

Email-to-lead

Unique workspace email. Forward any inbound inquiry — the parser extracts name, company, intent, and attaches the source thread.

Forward to: lead+ws_YOUR_ID@in.sourcedeck.app

Zapier / Make trigger

Any external tool can push a lead into SourceDeck — Typeform, Jotform, HubSpot forms, Calendly bookings, Webflow intake, custom webhooks.

POST https://events.sourcedeck.app/v1/inbound/lead/<workspace_id>
Auth: X-SourceDeck-Signature HMAC-SHA256
Payload shape
{
  "source": "typeform",
  "external_id": "f_xxxx",
  "lead": {
    "email": "lead@company.com",
    "first_name": "Jane",
    "company_name": "Acme",
    "notes": "Downloaded white paper"
  },
  "timestamp": "2026-04-21T14:12:00Z"
}
📱

QR intake

Printable QR on business cards, trade-show booths, jobsite door hangers. Scan → hosted form → lead in your queue.

Scan destination: https://sourcedeck.app/f/<workspace_id>/formId
🔁

CSV import

One-time bulk. Drag a CSV with email + company columns. SourceDeck runs the full qualification chain (MX + role-block + dedup) and routes surviving rows to the active campaign.

Required cols: email · company · first_name (optional) · title (optional)

What happens to every inbound lead

Every inbound source feeds the same pipeline:

  1. Fingerprint hash sha1(lower(domain) + '|' + lower(company)) — dedupe against existing workspace leads
  2. MX validation + role-block regex + free-mailbox filter
  3. Score against your ICP using the compiled lead_rule
  4. Route to the active campaign if fit_score ≥ outbound_ready_score
  5. Fire lead_qualified event into the bus → Funnel Health dashboard updates