Test the Movoto leads webhook endpoint. This shows the default expected payload shape - the endpoint accepts any shape as long as a field mapping targets it.
{
"Content-Type": "application/json",
"m4-connect-key": "[your-api-key]"
}The nested shape above is the default expected shape and is what the built-in fallback field mapping targets. Every field is optional, and the endpoint isn't limited to this shape - the fields actually used to build the contact (name, email, phone, etc.) are whatever the resolved field mapping (configured in the configurator, or this default) points at. A location can be configured with a mapping that targets a completely different payload shape with no code changes.
leadId → movoto_lead_idclient.firstName / client.lastName → contact.first_name / contact.last_nameclient.email → contact.email (fallback external_id when no uniqueIdentifier is configured)client.phone → contact.phoneclient.address.* → contact.address1 / contact.city / contact.state / contact.postal_codeloanOfficer.* → lo_assigned / lo_email / lo_phonerealtor.* → realtor_assigned / realtor_email / realtor_phoneConfigurationClient.getMappings for the "movoto" sub-feature, falling back to the default mapping above.contact.email then email) - not fixed payload fields - so a differently-shaped payload works as long as a mapping targets it.external_id is built from the mapping response's uniqueIdentifier field list when configured (joining resolved values with _), falling back to the resolved email.tags, they're added to sync_data.tags.ContactSyncRecord is upserted with sync_source: "Movoto" and sync_direction: "In"./api/v1/[locationId]/webhook/movoto/leads (synchronous, default) pushes the contact to GHL inline and reflects the result in the response. /api/v1/[locationId]/webhook/movoto/async/leads shares the same validation and field-mapping logic but only inserts a PENDING record and returns immediately - the existing GHL contact sync workflow (~2-minute cron) delivers it later. Use the toggle above to test either.
See docs/API_MOVOTO_LEADS.md for the complete field mapping table, error codes, and cURL examples for both endpoints.