Delivery methods
The four ways a buyer can receive leads — email, webhook, Google Sheets, SMS — and how several delivery methods on one buyer work together.
A delivery method is how one buyer actually receives its leads. There are four types: email, webhook, Google Sheets and SMS. A buyer can have several, and they all fire for the same lead.
Manage them under Buyers → the buyer → Settings, in the Delivery methods card at the top.
Add delivery method opens a panel whose first question is Start from: a blank method, or a copy of one that already works — including one of this buyer's own. A blank method asks for a type and a name; a copy asks which method to copy. Either way you land on the method's page, where you set the destination, the fields to send and everything type-specific.
Give a blank method a name you'll recognise: two methods both called "Webhook" tell you nothing apart in the list.
The four types
| Type | What you set up | What the buyer gets |
|---|---|---|
| Recipients — To, plus optional Cc and Bcc, several addresses each (leave To empty to use the buyer's own address) — subject and body — see Email deliveries | One email per lead, to everyone listed | |
| Webhook | An https:// URL, optional headers, optional custom body — see Webhook deliveries | One POST with a JSON body per lead |
| Google Sheets | Share your sheet with the service account address shown on the page, then paste the spreadsheet ID and tab name | One row appended per lead; if the sheet is empty, column headers are created automatically on the first lead |
| SMS | Sending and receiving numbers, plus a message template using {{lead.<field>}}-style variables, one button per field your pipeline collects. Requires a Twilio account connected in Settings → Integrations | One text message per lead |
Every delivery method carries its own list of fields to send. That list, and the formatting of each value, is covered in Field mapping and transforms.
Delivering into a sheet that already has columns
A Google Sheets method writes each lead by position, column A onward, in the order of its Expected fields — it never matches on header names, and it never rewrites row 1 of a sheet that already has one. So when you point it at a spreadsheet that already exists (a client's sheet with its own id column, status columns, notes…), make the field list mirror the sheet's column order exactly:
- Reorder the Expected fields to match the sheet, left to right.
- For every column the sheet owns and LeadMove shouldn't fill, add an Empty column field (in Add field) at that position — it stays blank on every lead.
- Click Test Connection: below the result, a Column alignment table shows column by column what the sheet says and what LeadMove will write there, and flags anything that doesn't line up.
Columns to the right of your field list are never touched, so trailing columns the client fills by hand (status, notes) need no placeholder.
Every field's Label is editable, system fields included — it's the header LeadMove writes on an empty sheet and the name shown in emails, so you can rename Timestamp to whatever the sheet's existing header says. The field key underneath stays fixed; only the label is yours to change.
Several methods on one buyer
Delivery methods are not a fallback chain. A lead routed to the buyer is sent through every targeted active method at once — add an email and a Google Sheet and the buyer gets both.
- Priority (lower number first) sets the order they are listed and dispatched in.
- Active / Inactive is the on-off switch. An inactive method never receives anything.
- The delivery is marked delivered as soon as one method succeeds. If another failed, the delivery history shows
Partial: 1 of 2 endpoints failedwith the error. It only counts as failed when they all fail.
Which methods a routing rule targets
By default a routing rule delivers to all of the buyer's active methods. To send only to some of them, pick a subset under Delivery targets in the rule (Routing rules).
A method no rule targets shows a Not used — won't deliver warning in the list: it's configured but nothing reaches it yet. The ones that are targeted show how many pipelines use them.
Reuse and testing
Each type has a test action on its page — preview the exact webhook payload without sending, send a real test to the buyer's URL, send a test email, or check the Google Sheets connection.
Never rebuild a working setup by hand. Copying runs in both directions:
- Pulling one in — Add delivery method → Start from, then pick any buyer of your account and one of its methods. This is the usual case when you onboard a client on a CRM you already deliver to.
- Pushing one out — the ⋮ menu on any method in the list: Duplicate here makes a second copy on the same buyer (named
… (copy)), for two webhooks that differ only by a key or a second recipient list; Duplicate to another buyer… sends it to a different client.
To copy all of a buyer's methods at once, duplicate the buyer itself — see Adding buyers.
Copies are always created inactive, and their destination is copied as-is — the copy still points where the original did until you change it and switch it on.
Common questions
One method failed, another worked. Was the lead delivered? Yes. The delivery is delivered and billable as soon as one method succeeds; the failure is recorded next to it as a partial error.
Can I stop a buyer receiving leads without deleting anything? Switch its delivery methods to Inactive, or pause the buyer in the pipeline from its routing rule. Both are reversible and keep the configuration.
Why does my new delivery method say "Not used — won't deliver"? No routing rule targets it. Either the buyer isn't in a pipeline yet, or the rules that use it have an explicit delivery-target list that excludes it.
Which method is used when a buyer has three? All three, in parallel. Priority only orders them; it doesn't make one a backup for another.
I clicked away while editing — did I lose my changes? No. A delivery method is only saved when you press Save, and leaving a screen that still holds unsaved edits asks first: Keep editing stays put, Discard changes goes where you clicked. The same question guards every editing screen in the app, including closing the tab.