An inbound sales team
One Normalized Lead Intake for Every Source
Every lead source feeds the CRM through one mapped, secured intake. Lost leads found, campaign attribution restored on older deals, and the CRM record ID written back to the website.
- Webhooks
- Zapier
- Salesforce
- Slack
The problem
Leads arrived from paid ads, the website, and referrals through different paths, each mapped a little differently. Some never made it into the CRM at all. Older deals carried no record of the campaign that produced them, so there was no way to connect ad spend to revenue.
What I built
- A single intake. Every source posts to one secured webhook, which normalizes the answers and creates or updates the CRM record with full field mapping.
- A reconciliation. I compared the ad partner’s lead list against the CRM, record by record, to find leads lost in transit, then replaced the path that dropped them.
- Restored attribution. Campaign, ad set, and ad were backfilled onto older deals wherever the data existed, and corrected where it was wrong.
- A write-back. The CRM record ID goes back to the website, so later form activity lands on the same person instead of creating a duplicate.
- Locked-down sensitive fields. Only the roles that need sensitive answers can see them.
How it works
The website form posts to a webhook. Zapier normalizes the payload and upserts the lead in Salesforce by a stable external ID, so a resubmission updates the record instead of duplicating it. A monitor posts every failed run to a Slack channel, so a broken path gets noticed in minutes, not weeks.
The reconciliation is the step most teams skip. Until you compare the source list with the CRM line by line, you do not know how many leads you paid for and never saw.
Stack
Website form webhooks, Zapier, Salesforce, Slack error alerts.
Where it stands
Built in August 2026 and running. Everything downstream depends on it: the scoring model, the lead queue, and campaign reporting all assume leads arrive complete and on time.
Have the same problem?
Twenty minutes is usually enough to tell whether it is the same leak and what fixing it would take.
Related builds
An inbound sales team
Lead Queue & Speed-to-Lead Engine in Salesforce
Round-robin lead assignment with availability, a five-minute first-dial clock, automatic reassignment, and nightly recycling, so no inbound lead waits on someone to notice it.
An inbound sales team
CRM Blueprint & a “Who Do I Call Today” Sales Cockpit
A short paid blueprint first, then a Salesforce sales cockpit: priority call lists, a callback engine, a call-prep screen, clean lead-to-deal conversion, and dashboards.
Soko Healthcare
Soko Healthcare: Website, Intake & Speed-to-Lead System
Moving a South Florida nurse recruitment firm onto Cloudflare with two-sided intake forms, 60-second lead alerts, a recruiting CRM design, and pages built to show up in AI search.
OpsPal
OpsPal Client Portal & E-Signature
An invite-only portal where OpsPal clients see their work log, hour balances, requests, quotes, agreements, and payments, with every request checked on the server.