LeadMove Docs
Delivery

Field mapping and transforms

How to declare which fields a buyer receives, under which names, and how to reformat each value before it is sent.

Each delivery method has an Expected fields list — the buyer's delivery schema. It decides exactly which fields leave LeadMove, in which order, and under which names. Everything else stays behind.

Edit it on the delivery method's page, under Expected fields.

The Expected fields list on a buyer's delivery method: draggable rows for timestamp, email, phone, quality_score and quality_grade, each showing its field key, the label the buyer sees, and its transform (all "As-is" here, with shortcuts to format as date, phone or number).

This is not a passthrough

Only the fields declared here are ever sent. A schema field with no mapping goes out empty, and a pipeline field the schema doesn't declare never reaches the buyer, whatever it's named. Adding a field to your pipeline does not add it to a buyer's delivery.

Two kinds of field

System fields are filled by LeadMove on every lead, so they always resolve:

KeyValue
timestampDelivery time
email, phoneThe lead's contact details
lead_idThe lead reference, e.g. LD-7QK4M2
pipelineThe pipeline the lead came from (campaign still works as a legacy alias)
buyerThe receiving buyer's name
sourceTraffic source, direct when unknown
quality_score / quality_gradeScore 0-100 and grade A-D (Using grades)

New delivery methods start with timestamp, email and phone, but nothing is locked: remove any field the buyer doesn't want, and add it back later from Add field → System fields.

Mapped fields are your pipeline's data. You declare the name the buyer expects here, then line your own field name up with it in each routing rule's Field mapping (Routing rules).

Each row has a key and a label. The key is the name the buyer's system sees in a webhook payload, and the variable you use in templates ({zip}). The label is the human column title used in the Google Sheets header. Drag rows to change the order of the columns or payload keys.

Per-field transforms

Every field can be reformatted right before it's sent. Default is Send as-is.

TransformOptions
Map valuesPairs like sedan → car. Case-insensitive. If a value matches no pair: keep original, send empty, or send a fixed value
Text caseUPPERCASE, lowercase, Title Case
Phone formatE.164 (+15551234567), National ((555) 123-4567), International (+1 555 123 4567), Digits only (5551234567)
Date formatIncoming: auto-detect, MM/DD/YYYY, DD/MM/YYYY, YYYY-MM-DD, MM-DD-YYYY, Unix. Send as: a list of examples08/29/2026, 08/29/2026 9:25 AM, 29/08/2026 09:25, 2026-08-29 09:25, Aug 29, 2026 at 9:25 AM EDT — plus Unix timestamp and ISO 8601
Number formatDecimals (auto, 0, 1, 2) and an optional thousands separator
Fixed valueAlways sends the same value, whatever the lead carries — how you pass a buyer's constant, like an account key

Two options apply on top of any transform: Trim spaces (before) and If empty, send… (after, when the result would be blank).

Each date format is offered as the value it produces rather than as a mask, and every one of them can carry the time. The hour follows the format: an American spelling reads 9:25 AM, a European or ISO one reads 09:25. Only Aug 29, 2026 at 9:25 AM EDT names the time zone — the others stay parseable for whatever reads them downstream.

Times are written on the buyer's clock when that buyer has operating hours, and on your organization's otherwise. Date-only formats keep rendering exactly as they always have, so nothing already flowing to a webhook or a spreadsheet shifts.

The editor shows a live example under each transform — the same code that formats the real delivery. If a value can't be converted (an unparseable date, a phone number with no country), it is sent unchanged rather than dropped.

Or format it inside a merge code

A transform applies to a field for every delivery of this method. To reformat one value in one place instead, put a modifier in the merge code itself — {{phone|phone:e164}}, {{first_name|title}}, {{zip|default:not given}}. Same formats, same behaviour, written where you use it. The full list is in Email deliveries; the same codes work in webhook body templates.

The transform runs first, the modifier second — so a field already formatted by its transform can still be upper-cased in one email.

Common questions

The buyer says a field arrives empty. Where do I look? The field is in the schema but nothing feeds it. Check the routing rule's field mapping for that pipeline — an unmapped schema field is sent empty.

Do I have to redo this for every pipeline? No. The schema belongs to the delivery method, so it's written once per buyer. Only the mapping — your field name to their field name — is per routing rule.

My buyer wants dates as DD/MM/YYYY and everyone else wants ISO. Set a date transform on that one buyer's field. Transforms are per delivery method, so nobody else is affected. Cleaning data for all buyers belongs upstream instead: Data normalization.

Can I send a value the lead doesn't contain? Yes — add the field and give it the Fixed value transform.

On this page