MLS Import Documentation Aug 7, 2026 · 4 min read

Sending property leads to a CRM

MLSImport does not connect to a CRM. The two routes for forwarding leads to Zoho or anything else, and where in the flow your code runs.

B
Benjamin Levy
Contributor · MLSimport

MLSImport does not connect to a CRM. It brings MLS listings into WordPress, and the enquiries those listings generate are sent by email rather than stored or forwarded anywhere.

Getting them into Zoho, or any other CRM, means forwarding them yourself. There are two routes, and which one you use depends on which form the visitor filled in.

Before you start

  1. You have an endpoint from your CRM that accepts a POST request, which Zoho calls a webhook URL. How you authenticate to it is documented by the CRM, not by us.
  2. You know which form is producing the leads: your theme’s contact form, or a standalone mode property form.
  3. Your privacy policy covers sending enquiry details to a third party system, because that is what you are about to do.

Route one: your theme’s contact forms

On WpResidence, Houzez, WpEstate and Real Homes, the enquiry form on a property page belongs to the theme. Those themes document their own webhook or CRM integration settings, and connecting one is a theme configuration task rather than an MLSImport one.

Test it with a real submission before you rely on it. The exact fields a theme sends differ, and a CRM that rejects a payload usually does so quietly.

Route two: standalone mode

In standalone mode the property enquiry form is the plugin’s, and it fires an action when a valid lead arrives. Attaching to that action is the supported way to push leads anywhere.

add_action( 'mlsimport_property_lead_submitted', function ( $data, $property_id ) {
	wp_remote_post( 'https://crm.example.com/leads', array(
		'timeout' => 5,
		'body'    => array_merge( $data, array( 'listing' => get_permalink( $property_id ) ) ),
	) );
}, 10, 2 );

The $data array carries name, email, phone, message, tour, property_id and agent_id. The tour value is filled in when the enquiry came from the Schedule a Tour panel and is empty otherwise.

Where in the flow your code runs

  1. The submission is checked for the privacy consent checkbox, and rejected without it.
  2. mlsimport_property_lead_validation runs, which is where reCAPTCHA or a blocklist would reject it.
  3. mlsimport_property_lead_submitted fires with the validated data.
  4. The email is composed and sent to the recipient for that property or agent.
  5. mlsimport_property_lead_mail_sent fires with whether the email succeeded.
Pro Tip

Pick the hook that matches what the CRM is for. Use mlsimport_property_lead_submitted when the CRM is the record of truth, so a lead still reaches it on a site whose email delivery is broken. Use mlsimport_property_lead_mail_sent when the CRM should only hold enquiries an agent was also told about.

Do not make the visitor wait for your CRM

The action runs inside the request that submits the form, so a slow or unreachable CRM makes the visitor watch a spinner. Keep the timeout short, as in the example above, and let a failed forward fail quietly rather than blocking the enquiry.

For anything more involved, record what you need and hand the delivery off to a scheduled job rather than doing it in the request.

Pro Tip

Log the CRM’s response somewhere you will look, at least while you are setting it up. A webhook that returns an error is invisible from the front end: the visitor sees a normal confirmation because the email was sent, and the lead is not in the CRM.

Frequently asked questions

Does MLSImport store leads anywhere I can export?

No. A property enquiry is emailed to the recipient and not saved as a post or a database row, which is exactly why forwarding to a CRM is worth setting up.

Do leads from the Schedule a Tour panel reach the same hook?

Yes. The booking panel submits a property lead like any other form, with the requested date in the tour field.

Does the consent checkbox cover sending the lead to my CRM?

Only if your privacy policy says so. The checkbox links to your policy, so the policy is what has to name the CRM and what happens to the data there.

Can you confirm a specific Zoho setup works?

Tell us which theme you use and share the webhook URL you were given, and we will run a test submission on a demo site with you.

  1. Where property leads are sent
  2. The consent checkbox and your privacy policy
  3. Schedule a Tour and the booking sidebar
  4. Standalone hooks reference
  5. The Contact Form block

Open a ticket with your theme and your webhook URL and we will test the workflow with you before you put it live.

B
About the author
Benjamin Levy
Writes about MLS feeds, IDX compliance, and running real-estate websites on WordPress at scale.
All posts by Benjamin