Webhook deliveries
Posting leads to a buyer's API — URL, headers, the standard payload, custom body templates with merge codes, and what a failure looks like.
A webhook delivery method POSTs one JSON body per lead to the buyer's URL. You set the URL, optional headers, and — when the buyer has their own format — the exact body to send.
The URL must be https:// and publicly reachable. Requests always use POST, and redirects are not followed.

Custom headers
Optional, entered as JSON, and merged into the request on top of Content-Type: application/json:
The standard payload
With Custom body template off, the buyer receives this envelope. lead contains the delivery method's expected fields, already transformed:
Custom body template
Turn the switch on when the buyer documents its own contract. You then write the exact JSON to send, with {merge_code} placeholders — a buyer's sample body can usually be pasted verbatim and mapped field by field.
Quoting decides the type: "year": "{vehicle_year}" sends text, "year": {vehicle_year} sends a number. Static values (an API key, a constant) are typed directly. The editor validates the JSON as you type and flags unknown merge codes.
Available merge codes: every field in this delivery method's schema and in the pipelines wired to the buyer, plus the system codes {timestamp}, {email}, {phone}, {lead_id}, {campaign}, {buyer}, {source}, {quality_score} and {quality_grade}.
A code can carry a modifier: {sold_at|date:MM/DD/YYYY}, {phone|phone:e164}, {state|upper} (also |lower, |title). For repeated formatting, use Field transforms below the template instead — set it once and {field} sends the transformed value.
Check before going live
Preview payload builds the exact JSON this method would send, with your formats and fixed values, using clearly-marked test values — nothing leaves LeadMove. Send a real test to the endpoint actually posts it to the buyer's URL, so their system may create a record; a 2xx response means they accept your leads.
When a delivery fails
The lead's delivery history stores the error and the exact body that was posted, so you can hand the buyer something concrete:
| What you see | What happened |
|---|---|
HTTP 404: Not Found, HTTP 401: Unauthorized… | The buyer's endpoint answered with a non-2xx status |
Timed out after 10s | No response within 10 seconds |
URL must use https / URL resolves to a private or reserved address | The URL isn't a public HTTPS address |
Anything that isn't a 2xx counts as a failure and is retried — see Retries and deferrals.
Common questions
Can I use GET or PUT? No. Lead delivery is always POST with a JSON body.
The buyer returns 200 but says nothing arrived. Their endpoint accepted the request, so LeadMove considers it delivered. Open the delivery in the lead's history, copy the posted body, and check it against their spec — usually a field name or a type (quoted string where they expect a number).
How do I send the buyer's API key? Either as a custom header, or as a static value inside a custom body template. Both are stored with the delivery method.
Do my transforms apply inside a custom body template? Yes, through the Field transforms list on the same panel. The per-field transforms set in the schema apply to the standard payload.