DocsAutomationsAutomation Basics

Automation Basics

Automate your workflows with triggered webhooks, emails, Slack messages, and Google Sheets updates on every lead, call, and destination event. Full automation guide for Lead Distro AI.

Last updated:

What are Automations?

Automations are actions that fire automatically when a lead event occurs. They run in the background and never block the lead distribution flow.

Trigger Events

Triggers come in three families. Lead triggers fire on a lead campaign, call triggers fire on a Calls campaign, and destination triggers fire on a destination's own account activity.

Lead triggers

  • Lead Ingested (lead.created) — every new lead received, before routing.
  • Lead Accepted (lead.accepted) — the lead was sold to a destination.
  • Lead Rejected (lead.rejected) — no destination accepted it, distribution failed.
  • Duplicate Detected (lead.duplicate) — the lead matched an existing record.
  • Lead Converted (lead.converted) — the destination marked it converted.
  • Not Qualified (lead.not_qualified) — the destination marked it not qualified.
  • Status Changed (lead.status_changed) — any manual status change on a lead.
  • Outcome Stage Changed (lead.outcome_stage_changed) — the lead moved stages; you can limit it to specific stages.
  • Lead Queued (lead.queued) — a queue rule held the lead for later release.
  • Lead Reached X Days Old (lead.aged) — fires once when a lead passes the age you set, for reselling aged leads. Needs Track Lead Age on in campaign settings.

Call triggers (Calls campaigns)

  • Call Connected (call.connected) — a destination just answered. Fires while the call is live, carrying the caller's info including any pre-call data, so you can email or webhook the details to the destination in real time.
  • Pre-Call Data Received Late (call.enriched) — a source posted caller info through the Enrich API after the call had already started. Fires again with the updated info so nothing is missed.
  • Call Completed (call.completed) — a call connected to a destination and ended normally.
  • Call Qualified (call.qualified) / Call Not Qualified (call.not_qualified) — the destination marked the call.
  • Call No Answer (call.no_answer) — no destination picked up.
  • Call Billable (call.billable) — a destination was charged for the call.

Destination triggers

  • Wallet Balance Below $X (buyer.wallet_balance_below) — a destination's wallet dropped below your threshold.
  • Cap Reached X% (buyer.cap_threshold_reached) — a destination's lead or budget cap crossed your percentage.
  • Destination Paused Delivery (buyer.delivery_paused) / Destination Resumed Delivery (buyer.delivery_resumed) — a destination paused or resumed their own delivery from the Partner Portal.

Action Types

ActionWhat It Does
WebhookSends a POST (or PUT / GET) with the full payload to any URL, with your own headers and body template.
EmailSends an email to any address, with a subject and rows you build from merge fields.
SlackPosts a message to a Slack channel via an incoming webhook URL.
Google SheetAppends a row to a connected Google Sheet.
Re-distributeSends the lead to another campaign or destination. Lead triggers only — it self-skips on call and destination triggers.

Conditions

Add conditions to automations so they only fire when specific criteria are met — for example, only send a Slack notification when a lead from California is accepted.

Use the AI Assistant to set up automations conversationally — just say "Set up a Slack notification when a lead is accepted" and it will handle the configuration.

Frequently Asked Questions

What events can trigger an automation?
Three families. Lead events (lead.created, lead.accepted, lead.rejected, lead.duplicate, lead.converted, lead.not_qualified, lead.status_changed, lead.outcome_stage_changed, lead.queued, lead.aged), call events on a Calls campaign (call.connected, call.enriched, call.completed, call.qualified, call.not_qualified, call.no_answer, call.billable), and destination events (buyer.wallet_balance_below, buyer.cap_threshold_reached, buyer.delivery_paused, buyer.delivery_resumed). Automations are decoupled from distribution — they run in the background and never block delivery.
What action types are supported in automations?
Five: Webhook (POST/PUT/GET to any URL with the full payload), Email (to any address, with merge fields in the subject and rows), Slack (post to a channel via an incoming webhook URL), Google Sheet (append a row to a connected sheet), and Re-distribute (send the lead to another campaign or destination — lead triggers only). Multiple automations can fire from one event — a single lead.accepted can notify Slack, update a Sheet, and post to a CRM webhook at the same time.
Can I send the caller's details to my client the moment a call connects?
Yes. Use the Call Connected trigger on a Calls campaign — it fires while the call is still live and carries the caller's phone and location plus every field your source posted through the Enrich API. Pair it with the Email action to email your client the lead info, or the Webhook action to post it into their system. Turn on Pre-call Data in Campaign Settings first, or the payload only carries the caller's phone and location. For a per-destination version that fires only to whoever actually answered, use Data Delivery on the destination instead — see Warm & Live Transfers.
Can I add conditions to automations?
Yes. Add any number of conditions per automation — e.g., state == CA AND case_type == auto_accident. Conditions reference any field on the lead (system or custom). Nested AND/OR groups are supported for complex routing logic. The automation only fires when all top-level conditions are true.
What does a webhook automation payload look like?
JSON. Top-level system fields include lead_id, event_type (e.g., lead.accepted), event_at timestamp, campaign_id, buyer_id, supplier_id, status. Standard contact fields (first_name, last_name, email, phone, state, zip_code) are top-level when in your campaign's field mapping. Custom fields are nested under custom. The X-LeadDistro-Signature header carries an HMAC-SHA256 signature so receivers can verify authenticity.
What happens if an automation webhook fails?
Lead Distro AI retries with exponential backoff — 3 attempts over ~15 minutes. After final failure, the automation is marked failed in the in-app log and (if configured in the Notifications tab) you get a Slack or email alert. Importantly, automation failures never block lead distribution — the lead still gets delivered to its buyer through the primary delivery channel even if a parallel automation can't reach its destination.
Can I send a different message to different team members on the same event?
Yes — via the Notifications tab. Set per-alert routing: who gets notified on lead.created (e.g., on-call AM), lead.rejected (compliance team), delivery failures (engineering), and so on. Each route can be Slack, email, or SMS. Granular routing prevents alert fatigue — your distribution engineer doesn't need to see every lead.accepted notification, just the failures.
How do I test an automation before going live?
Use Test Send on the automation — it fires the action with a sample lead payload so you can confirm webhook URLs are reachable, Slack channels accept the message, and Sheets append correctly. Combined with a Test Mode supplier (every test lead is real but flagged is_test: true), you can end-to-end validate an automation chain before exposing it to production traffic.

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