How do I stop fake and duplicate leads from Facebook lead forms?
Filter at the routing layer, not in your CRM, and record why each one was rejected. The common cases are accidental one-tap submissions, the same household submitting to several forms, invalid or unreachable numbers, and out-of-area requests. Dedupe on normalized phone and email within a window, validate the number format, and check the address against your service area. Then feed the disposition back so delivery learns which submissions were worthless.
Know which problem you have
Operators lump everything into fake, but the categories have different fixes and different costs.
- Accidental submissions. Prefill plus a large button means people submit without deciding to. These are real people with no intent. Form friction fixes them.
- Duplicates. The same person submitting to two forms, or twice in a week. Harmless if deduped, expensive if two CSRs both call.
- Out of area. A real prospect you cannot serve. Fix the location setting, not the form.
- Unreachable contact data. A stale profile number, a typo, a disconnected line. Validation catches some of it.
- Genuinely malicious. Bots and competitors. Real but far less common than the other four, and usually identifiable by bursts at implausible hours.
Filter in the middle, and keep what you filtered
The right place for this logic is the routing layer between Meta and your CRM, because that is the only place that sees the raw payload and can act before a record exists. Normalize the phone number to a canonical format before comparing. Compare emails case-insensitively with common aliasing removed. Use a lookback window rather than an all-time check, so a legitimate repeat customer next season is not suppressed.
Never silently discard. Store every rejected submission with the reason. Without that log you cannot tell a filter that is protecting you from a filter that is deleting your best leads, and you cannot reconcile your counts against Meta's. That storage-then-decide pattern is standard in the integration layer.
Validation that is worth the effort
Format checking catches typos cheaply. Line-type lookups can tell you whether a number is a mobile, a landline or a non-routable number, which is useful when your follow-up depends on texting. Address checks against a service-area polygon are more reliable than radius math for companies whose territory follows real boundaries.
Be careful about how aggressive you get. Every filter has a false positive rate, and a homeowner rejected because their number formatted oddly is a real job you threw away. Log, review the rejects weekly for the first month, and tune.
The fix that compounds: feed dispositions back
Filtering protects your CSRs' time. It does not stop the ads from producing junk. The only thing that changes the input is telling the delivery system which submissions turned out to be worthless and which turned into work.
That means every lead needs an outcome recorded, and those outcomes need to flow back as events. Over time, optimizing toward the qualified outcome shifts delivery away from the population that generates accidental taps. This is the same loop described for booked-job feedback, and it is the practical reason to connect the CRM to the ad platform through Meta integration rather than treating lead quality as a filtering problem alone.
Topics: lead quality · deduplication · validation · routing · Meta
Have a version of this question about your own business?
The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.