Every Ad Lead Arrives Complete, and Assigned to the Right Client
By Konstantinos Karamatzianis · Co-Founder, Dabster Labs · Client engagement, anonymised at the client’s preference
A video ad agency was running lead campaigns on Facebook and Instagram, and every new lead was landing in the CRM as an empty row with no owner. The team got the notification, opened the record, and found nothing to call. We changed the intake so each lead now arrives filled in, timed accurately, and already assigned to the client whose campaign produced it.
The situation
Leads from the platform’s lead-ad forms were saving blank. The reason sits in how the platform delivers them: its webhook carries only a lead id, not the name, email or phone the person actually typed into the form. Early builds took that delivery at face value and wrote an empty record. So the agency saw a fresh lead, opened it, and had no contact details to work with. Worse, the record arrived with no owner, so nobody could tell at a glance which client’s campaign it belonged to. For a business whose whole promise is fast follow-up on behalf of clients, a blank, unassigned lead is a dead lead.
What we built
The CRM now completes each incoming lead itself. When a lead-ad form is submitted, it calls the ad platform’s read-only Graph endpoint with the agency’s own connected ad token, reads back the real name, email and phone, and maps them onto the lead. It stamps the true submission time, so the speed-to-lead clock measures from the moment the person filled the form, not the moment the record happened to be created. And it resolves the owning client automatically from the lead’s campaign id, matched to the campaign already synced into the CRM.
We wrapped that in guardrails. The lookup runs only for deliveries whose signature verifies, so a forged post can never trigger an outbound call for real data. If the ad platform hits a transient error mid-delivery, the CRM returns a retryable status so the platform re-delivers, rather than the CRM saving a blank lead to get the message off its hands. And leads dedupe on the external lead id, so a re-delivery updates the same record instead of creating a second one.
What changed
- Leads arrive complete: real name, email and phone on every record, not an empty row to chase.
- Each lead lands assigned to the right client automatically, worked out from its campaign.
- The speed-to-lead clock is accurate, timed from the real form submission rather than record creation.
- Forged or unsigned submissions never trigger a data lookup, and transient platform errors retry instead of saving blanks.
- Re-deliveries dedupe on the lead id, so the same person never shows up twice.
How it works
A public receiver accepts the platform’s lead notification and checks its signature against the agency’s app secret. For a verified delivery, it calls the Graph endpoint for that lead id using the agency’s connected token, reads the submitted answers, and writes them onto the lead together with the true submission time and the resolved client. A separate verification handshake keeps the subscription live with the platform. Every step keys on the external lead id, which is what makes the dedupe and the retry-on-error behaviour safe.
Where it stands
Live and in use for Facebook and Instagram lead ads. Leads from other platforms feed the same pipeline through a scoped API key and the agency’s existing automation stack, and historical leads load by bulk import. Higher-volume ad accounts may need additional platform review, but the receiver itself is ready.
Work with us
If leads from your ad campaigns are arriving thin, late, or unassigned, we can fix the intake so every one lands complete and with the right owner. Talk to us.
Related service: Workflow Automation
Want this working in your business?
Book a free 30 minute discovery call. We map your workflows and tell you honestly what is worth automating. No commitment, no sales pressure.
Book a discovery call