DocsCampaignsInbound Filters

Inbound Filters

Use inbound filters to reject leads at the campaign level before distribution. State allowlists, custom field rules, AND/OR groups, scheduling, and FAQs for Lead Distro AI.

Last updated:

What Are Inbound Filters?

Inbound filters reject leads at the campaign level before they're distributed to any buyer. Leads that fail an inbound filter are marked `REJECTED` with the specific filter that caught them, returned to the supplier with status `400`, and never touch any buyer's webhook.

They're your first line of defense against off-vertical leads, geographic mismatches, missing data, and obvious fraud — saving you the cost of distributing junk leads to buyers and protecting your acceptance rate.

Common Filter Patterns

PatternExample rule
State allowlist`state IN [TX, FL, CA, NY]`
Required custom field`case_type IS NOT EMPTY`
Numeric range`monthly_electric_bill >= 150`
Boolean check`home_ownership == 'owner'`
Format check (post-transform)`phone matches E.164`
Recency check`incident_date >= 730 days ago`
Block known-bad domains`email NOT CONTAINS 'mailinator.com'`

AND/OR Group Logic

Filters support nested AND/OR groups for complex routing. Top-level rules combine with AND by default — every rule must pass. Wrap rules in an OR group to allow either branch to pass. Nest groups for branching logic like `(A AND B) OR (C AND D)`.

Example: Compound Rule

Accept leads from Texas OR Florida, that have a case_type set, AND were filed within the last 2 years:

(state == TX OR state == FL)
AND case_type IS NOT EMPTY
AND incident_date >= 730 days ago

Scheduling Filters

Each filter can be active on a schedule — set days of the week and hour ranges when the filter applies. Useful when staffing or compliance requirements vary by time:

  • Route leads only during your buyers' staffing hours (M-F 8am-6pm).
  • Apply stricter TCPA rules outside daytime hours.
  • Pause an inbound filter during a known maintenance window without disabling it.

Difference: Campaign Inbound Filters vs Buyer Filters

Filter typeScopeWhen it runsOn rejection
Campaign inbound filterAll buyersOnce, on ingestLead is REJECTED — never reaches any buyer
Buyer filterOne buyerPer buyer during distributionLead is routed to next eligible buyer; if all reject, marked UNMATCHED

Use **campaign inbound filters** for off-vertical or compliance rejections you'd never want any buyer to see. Use **buyer filters** for per-buyer eligibility (states they cover, case types they handle, etc.). The two layers compose — campaign filter runs first, then per-buyer filters.

Frequently Asked Questions

What's the difference between campaign inbound filters and buyer filters?
Inbound filters run once at the campaign level on ingest — failures mark the lead REJECTED and return a 400 to the supplier without ever reaching any buyer. Buyer filters run per-buyer during distribution — failures route the lead to the next eligible buyer. Use inbound filters for off-vertical or fraud rejections; buyer filters for per-buyer eligibility like state coverage.
Can a single filter rule reference multiple fields?
Yes — use AND/OR groups to combine rules across fields. Example: `(state == TX AND case_type == auto_accident) OR (state == FL AND case_type == truck_accident)` combines state + case_type with branching logic. Build the structure visually in the filter UI by dragging rules into and out of groups.
What happens when a lead fails an inbound filter?
Status `REJECTED` with reason code naming the failed filter (e.g., `filtered_state`, `filtered_case_type`). The supplier's API call returns 400 with `filter_errors` listing every rule that caught the lead — useful for ping-post flows where the supplier wants to know *why* a ping was rejected before posting the full lead.
Can I schedule a filter to only run during specific hours?
Yes. Each filter has a schedule setting — pick days of the week and hour ranges when the filter is active. Outside those hours, the filter doesn't apply (leads pass through). Use this to enforce stricter rules during off-hours, apply daytime-only state filters, or pause a filter during a maintenance window without deleting it.
Can I see which filter rejected a specific lead?
Yes. Open the lead detail page in the dashboard — the Timeline section shows the full lifecycle including which filter caught it (campaign-level inbound or per-buyer), the rule that failed, and the field value that triggered the rejection. The timeline is especially useful for diagnosing supplier misconfiguration where the supplier insists they sent good data.
Do inbound filters apply to ping-post pings?
Yes. The ping endpoint validates the partial lead data against all inbound filters before returning availability. A ping that fails an inbound filter returns `accepted: false` with `reason: filtered` and a `filter_errors` array — the supplier knows immediately the lead won't be accepted and doesn't waste bandwidth on a post that would also fail.
Can I bulk-update inbound filters across multiple campaigns?
Not natively — each campaign has its own filter set. For cross-campaign rules (e.g., a global TCPA scrub or domain blocklist), use the Blacklist Alliance integration or upload a master suppression list at the agency level. For campaign-specific rules that should be identical, duplicate the campaign and customize the buyer side — the duplicated campaign keeps the filter set.

If you have any questions, send us an email at support@leaddistro.ai