Meta sees one in four of your booked calls. SIGIL sends it the other three.
When the sale closes in your CRM days after the click, on another device, Meta never learns which ad paid for it. SIGIL stores every funnel step, sends the booked call and the sale back to Meta server-side with the click that earned it, and shows you Meta's numbers next to what actually happened, per ad.
Three steps. Then Meta optimises on reality.
Your site tells SIGIL about the click
After your opt-in form succeeds, one extra request carries the ad id and click id. Nothing on your lead path changes, and if SIGIL is ever down your lead still lands.
Your CRM tells SIGIL about the stage
Booked a call, paid, signed a retainer: your CRM posts an email and a stage name. SIGIL finds the person, finds the ad that earned them, and queues the event.
SIGIL tells Meta, server-side
Every stage reaches the Conversions API with the click id, hashed email and phone, and a dedup id. Meta counts each booking once and learns which ads produce money, not just form fills.
Meta's numbers on the left. The truth on the right. The gap in violet.



Any site that can call one URL after opt-in. Any CRM that can fire a webhook on a stage change: GoHighLevel (step-by-step in the app), HubSpot, Close, Zapier, Make, a Stripe relay, or ten lines of your own code. Meta Conversions API and Marketing API.
Connect the SIGIL MCP to Claude Code, paste your key, and say “set up SIGIL”. It pastes your tokens, wires your site's opt-in route, adds the CRM webhook, fires a test event and reads Meta's answer back to you.
Beta is invite-only.
Running Meta ads into a call or a sale that closes in a CRM? That is who this is for. Ask for an invite, get a link, create your workspace in a minute, and follow six plain steps in the app.