Housecall Pro → Zapier → EMR · 12 min read
Set up review requests for an HVAC client using Housecall Pro
Written by Mannie Gill, Founder & Lead Developer at EmbedMyReviews. LinkedInPublished
For an HVAC company using Housecall Pro, use its New Completed Job trigger in Zapier, then send the eligible customer to EMR’s inbound automation. The owner finishes the job in Housecall Pro; you connect and manage the workflow. This example sends a review request after a completed service call, without a custom API integration.
TL;DR
The short version
- The owner enables Housecall Pro’s Zapier app and supplies its connection key. You build the Zap and EMR campaign.
- Choose New Completed Job. Check customer email, notification preference and that no job segments remain open before sending.
- This trigger checks for jobs periodically, so allow for Zapier’s polling interval plus your EMR delay. Housecall Pro’s direct webhooks are a separate MAX-plan route.
Worked client example
An HVAC company using Housecall Pro
“Our technician finishes an air-conditioning service and taps Finish. Can the customer get a review request without our office doing anything else?”
Their starting point: The company already uses Housecall Pro for single-visit service calls, records customer emails and has access to its Zapier integration. It wants requests after completed work, even if payment follows later.
Why this route: Use the official Housecall Pro connector in Zapier. It supplies job and customer fields and lets you check eligibility before posting to EMR. There is no need to upgrade to MAX just for this connector if the current plan already includes it.
What happens automatically?
- 01
Technician finishes the service call in Housecall Pro
- 02
Zapier finds the completed job and checks the customer
- 03
EMR receives the details and schedules the review email
Choose this when: HVAC maintenance and repair jobs where Finish means the agreed work is complete and customer contact details are available.
Choose another route when: Booking confirmations, deposits, or a request after a partially finished installation. A completed job does not mean its invoice is paid.
Who does what?
The business owner
Enables the Zapier app, supplies its key securely, keeps customer details and preferences accurate, and makes sure technicians finish jobs after the work is done.
You, the agency
Creates the campaign and receiving URL, connects Housecall Pro in Zapier, filters incomplete or ineligible records, tests delivery and monitors the workflow.
Set up EMR Automations while signed in as the agency owner and working in the intended client location. The business owner handles access to their own software. They do not need your agency login or a daily EMR task.
A message you can send the business owner
“We can connect your finished service jobs to your review campaign. You will enable Housecall Pro’s Zapier app and approve the connection. Your technicians keep using Finish after the work is done. I will set up the filters, test with our own customer details and monitor it. We will use the plan you already have if it includes the connector, and confirm any extra Zapier cost first.”
Once it is connected
Technicians finish completed work in Housecall Pro while connected, and the office maintains customer email and preferences. Zapier checks for new finished jobs. The agency monitors held or failed runs, usage and delivered invitations.
Have these ready
- Housecall Pro with the Zapier app available, and an owner or administrator who can enable it.
- Paid Zapier access for Webhooks by Zapier, plus a working email campaign in the correct EMR client location.
- A safe test customer with your email, notifications enabled, and a test service job that will not charge or message a real customer.
- A trigger sample with Customer Email, the customer notification flag, Remaining Open Segments and Job ID. The checks below use these actual returned values.
First client? Prepare the review campaign first
From your agency, open Business → Customers → Manage Customers → Open dashboard (or the Customer tab if shown). Select the business location you are setting up.
A campaign is the review message and any follow-ups you want EMR to send. A feedback form controls where the customer is invited to leave their review.
Use Grow → Review Tools → Feedback Forms to prepare the customer’s review destination, then Grow → Campaigns → Request Reviews to create the campaign. Choose its feedback form, message and working sender. Start with one email step for this walkthrough. Add your own test contact through Grow → Campaigns → Invites and verify the message and link.
Set the campaign’s sending window and duplicate-request window. Honour opt-outs. For Google review campaigns, ask eligible customers consistently, leave review gating off and offer no incentives.
Do I need to understand APIs or write code?
Zapier watches the job event and passes the customer details to EMR’s receiving URL. EMR then runs the review campaign. You choose fields from menus; you do not write code or need an EMR API key. Use the Zapier card under EMR Automations. The separate outbound EMR app in Zapier sends events in the other direction.
A key or token is a private connection credential. A webhook is an automatic notice that something happened, such as a payment completing. Keep connection credentials private; the business owner does not need to share their everyday login password.
The walkthrough
Set it up, step by step
Connect the existing app, add filters and map three fields. Work through this together the first time.
Together
Choose the completed-service moment
Start with a single-visit air-conditioning service. The technician uses Finish after the work is done. Agree that a scheduled appointment, accepted quote or deposit is too early for this campaign.
Check whether Housecall Pro or another tool is already asking for reviews. Arrange for only the agreed review workflow to run for these jobs. Keep operational messages such as appointment confirmations separate.
Use a campaign repeat-customer window so a returning maintenance customer is not asked after every closely spaced visit.
Before moving on: The owner can describe exactly when a service call is finished and which tool will ask for the review.
Business owner
Enable the Housecall Pro Zapier connection
In Housecall Pro, open My Apps using the grid icon, then Go To App Store. Find Zapier, open View Details and turn the app on. Refresh the page if the connection key does not appear immediately.
Copy the key from the Zapier app. Enter it when Zapier asks to connect Housecall Pro, or provide it to the agency through your secure credential-sharing method.
This is the key for Housecall Pro’s Zapier app. Do not go to the separate general API-key or Webhooks settings just to follow this guide.
Before moving on: Zapier can connect to this business using the key from the Zapier app.
Agency
Create a receiving URL in EMR
Open the client dashboard and select the right location. Go to Connect → Integrations → Automations → Connect Zapier. If you see Manage Zapier instead, open it and choose New Connection.
Name the connection for this client and workflow, select the prepared email campaign, and continue to the test screen. Copy the Endpoint URL. Leave the wizard open while you build the Zap. The URL is private: it identifies this connection.
Leave the optional signing setting at its default for this basic setup. You do not need to add an EMR API key or use the developer API.
Before moving on: You have one receiving URL for this client location and campaign.
Together
Capture a completed service call in Zapier
Create a Zap named for this HVAC client. Choose Housecall Pro as the app and New Completed Job as the trigger. Connect the account using the key from step 2. Housecall Pro’s help may describe this event as Job Finished.
Finish the safe test service job in Housecall Pro while online. Back in Zapier, test the trigger and select that job. Allow for the connector’s polling interval if it is not available immediately.
Inspect Customer Email, the customer’s notification setting, Remaining Open Segments and Job ID. Choose customer fields for your recipient: Service Provider Email belongs to a team member, not the customer.
Before moving on: The sample shows your test email as Customer Email and identifies the correct completed job.
Agency
Add the three checks before sending
Add Filter by Zapier after the trigger. Use AND rules so all three conditions must pass: Customer Email exists; Customer Notifications Enabled is true; Remaining Open Segments equals 0.
Choose the actual fields from the test sample. For the notification flag, match the enabled value returned by your account. For the segment count, require zero. An empty value is not a confirmed zero or an enabled preference.
Test with the completed service call: it should pass. A false notification flag or an open segment must stop the run. If a required field is missing, refresh the sample from a fully populated completed test job; do not remove the check to force a pass.
Before moving on: The filter permits the completed, contactable test customer and blocks incomplete or ineligible records.
Agency
Send three fields to EMR
After the filter, add Webhooks by Zapier. Choose the POST action. Paste EMR’s Endpoint URL into URL and choose Json as the Payload Type.
In Data, add the three rows shown below: first_name, email and job_id. Use the field picker to select each value from the job trigger. These must be changing values from the job, not a name or email typed into every request. Leave Wrap Request In Array off, and leave Basic Auth and custom headers empty.
Test this action using your own test customer. Return to EMR and wait for Submission received. Confirm that the captured email is yours. This setup test supplies a sample for mapping; it has not sent the review request.
Before moving on: EMR displays your test customer’s details, including the correct email.
The fields to map
- first_name
- Customer First Name from Housecall Pro. Do not use Service Provider First Name.
- Customer Email from Housecall Pro. Verify it is your test customer’s inbox, not Service Provider Email.
- job_id
- Job ID from Housecall Pro, so you can trace this request back to its source job.
Agency
Map the customer and activate both sides
In EMR, map First Name to first_name and Email to email. Leave Appointment or order date empty: this walkthrough times the request from arrival, not the original booking date. The job_id is useful context in the received data; it is not a permanent duplicate-prevention key.
Choose A set time after the moment, select 1 hour later, then finish with Activate Webhook. Publish the Zap in Zapier and confirm it is on.
Check the campaign’s sending hours and repeat-customer window. Keep any separate review-request automation for this same event turned off so two systems do not invite the same customer.
Before moving on: The EMR connection is active and the Zap is published. Next, test a fresh job.
Together
Finish a new test job and verify the email
With both connections active, finish another safe service job using a different email you control. Wait for Zapier’s next check, then inspect the new run in Zap History.
Follow it into EMR’s Recent requests and campaign Invites. After the configured delay and sending window, open the email and confirm the HVAC company name and correct review destination.
Run the blocked-customer and unfinished-segment checks below. Give the owner the simple daily instruction: keep customer details accurate and finish each job only when the work is done. The agency looks after the connection.
Before moving on: A new completed job produces the correct email, and the exclusions stop at the filter.
Follow one air-conditioning service from technician to inbox
Illustrative workflow: the technician finishes a service call at 3 pm and marks the job finished while online. On its next check, Zapier finds the job, confirms an email, an enabled notification preference and no open segments, then posts the customer details to EMR. If EMR receives them at 3:08 pm, a one-hour delay makes the request due at 4:08 pm, subject to sending hours. The office does not copy the customer into a spreadsheet or send a separate email.
How to know it is working
Follow the event all the way to a message you receive. A green connection or a successful test response is only part of that journey.
Where to look: Open Zapier’s Zap History and inspect the trigger, filter and POST result. In EMR, open Connect → Integrations → Automations → Manage Zapier, open this connection and check Recent requests. Then find your email under Grow → Campaigns → Invites, check its activity and open the delivered message.
When to expect the message: Allow for Zapier’s polling interval first. The one-hour delay starts when EMR receives the qualifying job. It replaces the campaign’s first-step delay; it does not add another hour on top. Campaign sending hours and follow-ups still apply. A request due outside the sending window waits until the next allowed time.
Testing again? Use another email address you control for a second successful-send test. Reusing the first address can correctly trigger your duplicate-request rule. Keep that protection on for real customers.
Test 1: Finish a fresh, eligible service job
Expected result: The next Zapier check finds it. All three filters pass, EMR receives the customer, and your inbox receives the branded request after the configured delay.
Test 2: Finish a test job with customer notifications disabled
Expected result: The notification filter stops the run. Nothing is passed to EMR for that customer.
Test 3: Test a job sample with an open segment
Expected result: The filter stops the sample because the count is above zero. A partial installation must not receive the end-of-job request. If your operation uses segmented jobs, confirm both partial and final completion samples before including them.
Test 4: Inspect the mapped recipient before publishing
Expected result: The email equals your test customer’s address. A service-provider or office email is not used as the customer recipient.
If something does not work
I cannot find the key without upgrading to MAX
Look in the Zapier app, not the general API or direct Webhooks area. Those are separate features with different access requirements. If the Zapier app itself is unavailable, confirm plan eligibility with the owner before changing the subscription.
Finish did not immediately trigger the Zap
The official connector polls rather than delivering every event instantly. Check that the finished job has synced online, the Zap is on and its polling interval has elapsed. New Scheduled Job is a different trigger.
The filter has blank fields or never passes
Inspect a fresh finished-job sample and its actual values. Blank is not the same as zero or true. If this connector cannot supply the needed fields for this client’s jobs, use the completed-job form route below while you resolve the data issue.
Zapier succeeded but the request did not arrive
Inspect the EMR response and Recent requests, then the campaign’s recipient activity, sending hours, duplicate window and sender. An HTTP success on a paused endpoint is not proof of an accepted invitation or delivered email.
At handover, record the connection name, source account, client location, campaign, timing, test result and person responsible for failures. Test again after changing the workflow. Keep passwords, API keys and private webhook URLs out of the handover notes.
Cost, reliability and the simpler alternatives
Cost: Housecall Pro lists Zapier access on Essentials, Essentials+ and MAX, with some eligible legacy plans. The POST action in this walkthrough requires paid Zapier. Budget for that, EMR and message delivery. Confirm the integration is available in the existing client account before suggesting any Housecall Pro upgrade.
Reliability: New Completed Job is a polling trigger: a completed job may wait for Zapier’s next check. Use the source job ID to investigate a run, but do not treat the job_id field as permanent deduplication. The agency should monitor failed or held Zap runs and confirm the EMR destination before replaying them. A later cancellation is not automatically an instruction to withdraw an inbound campaign request.
When to use something else: If the business already has MAX, direct Housecall Pro webhooks are another option. They can avoid the bridge only when the completed-job payload supplies the right customer fields and eligibility can be handled correctly; test that mapping before choosing it. Do not buy MAX just to avoid a small Zapier workflow without comparing total cost. An existing completed-jobs Google Sheet or a staff completion form can also be simpler for a small team.
Common questions
Need help with a setting?
Another workflow to connect?
Jobber for plumbers
Set up review requests for a plumber using Jobber
Read the walkthrough →
Google Forms + Sheets
Send review requests from a staff form with Google Forms and Sheets
Read the walkthrough →
HighLevel → inbound webhook
Send review requests from a HighLevel workflow directly to EMR
Read the walkthrough →