If you run Facebook or Instagram Lead Ads, you know the gap: a customer fills in the form, and then the lead just sits inside Meta's Ads Manager. By the time someone exports the CSV, it's hours later and the lead is cold.
We built Targenix to close that gap for businesses in Uzbekistan — deliver every Lead Ads lead to wherever the team actually works, in real time. This post is a quick tour of how it works, and why we decided to make lead forwarding completely free.
The problem: leads that arrive too late
Meta Lead Ads are excellent at collecting leads and poor at delivering them. The native options are a manual CSV export or a raw webhook you have to build and babysit yourself. Small teams and solo marketers don't have an engineer on call, so leads pile up and conversion drops the longer nobody calls back.
The pipeline
The core is boring on purpose — boring is reliable:
-
Webhook ingestion. Subscribe to Meta's
leadgenwebhook. Every submitted form fires an event with aleadgen_id; we fetch the full field set from the Graph API. - A queue, not a cron. Each lead becomes a job. That gives back-pressure, ordering, and somewhere safe to retry — instead of a giant loop that dies halfway.
- Adapters per destination. One small adapter per target: CRMs (Bitrix24, Kommo, amoCRM, Salesforce, Notion, Monday), Telegram, Google Sheets, and local CPA networks. Adding a destination means writing one adapter, not touching the core.
-
Idempotency + retries. Dedupe by
leadgen_idso a webhook re-delivery never double-sends. Failed deliveries retry with exponential backoff and a circuit breaker per connection, so one flaky CRM doesn't stall the rest. -
Conversions API. The same lead is sent back to Meta via the Conversions API (keyed by
leadgen_id) so the ad algorithm optimizes on real conversions, not just form-fills.
A few things we learned the hard way:
- Validate before you count. Duplicates, blacklisted numbers and malformed phones should never inflate your "delivered" rate. We separate real delivery failures from validation drops.
-
Health has to be truthful. A transient
502from a messenger API should not flip a connection to a permanent error state and silently drop leads. Transient == unchanged; only a provider rejecting credentials means "reconnect". - Attribution is a denominator problem. Spend ÷ captured leads and spend ÷ delivered leads are different numbers, and mixing them makes your cost-per-lead lie.
Why free?
The honest answer: forwarding a lead costs us very little, and charging per lead punishes exactly the small businesses we want using it. So lead routing and the core features stay free — no subscription, no card. We'd rather win the market on being genuinely useful and monetize higher up the stack later.
Try it
If you're running Lead Ads and tired of exporting CSVs, you can connect a page and pick a destination in a few minutes: targenix.uz. The full list of destinations lives at targenix.uz/integrations, and if you're curious whether it's really free, that's spelled out at targenix.uz/pricing.
Happy to answer questions about the pipeline in the comments.
Top comments (0)