Skip to content

CRM · Beta

Housecall Pro
API integration

Ship CRM features without building the integration. Full Housecall Pro API access via Proxy and 90+ MCP-ready tools for AI agents — extend models and mappings to fit your product.

Built for specific customer use cases. Issues are resolved quickly.

Talk to us
Housecall Pro

Use Cases

Why integrate with Housecall Pro

Common scenarios for SaaS companies building Housecall Pro integrations for their customers.

01

Automate lead-to-job conversion for home service businesses

SaaS platforms offering lead generation, booking widgets, or AI receptionists can push leads and auto-book jobs directly into their users' Housecall Pro accounts, eliminating manual data entry and reducing lead response time.

02

Trigger post-job marketing and review workflows

Reputation management, email marketing, and customer retention tools can listen for job completions and paid invoices via webhooks, then automatically fire personalized review requests, maintenance reminders, or upsell campaigns.

03

Embed consumer financing into field estimates

POS financing platforms can inject pre-approval links into Housecall Pro estimate options and auto-approve options when customers complete financing, letting technicians close high-ticket repairs without juggling apps.

04

Sync supplier catalogs and track materials consumption

Inventory and supplier platforms can keep their customers' Housecall Pro Price Book continuously updated with current material pricing, and pull consumed job materials nightly to drive automated reordering.

05

Power specialized accounting, payroll, and commission tools

Vertical finance SaaS can pull invoices, estimate approvals, job appointments, and employee data to calculate commissions, process payroll, or reconcile revenue inside their own systems.

What You Can Build

Ship these features with Truto + Housecall Pro

Concrete product features your team can ship faster by leveraging Truto’s Housecall Pro integration instead of building from scratch.

01

Real-time booking widget with slot availability

Query company booking windows and schedule availability to show open slots, then create jobs and appointments the moment a customer books.

02

Two-way lead pipeline sync

Create leads with custom lead sources, convert them into jobs or estimates, and advance pipeline statuses in bulk from your own sales CRM.

03

Multi-option estimate builder (Good/Better/Best)

Programmatically create estimates with multiple options, bulk-update line items, attach documents, and approve or decline options based on customer actions.

04

Price Book catalog sync

Create, update, and delete materials, material categories, and price forms to keep technicians working from accurate, up-to-date pricing in the field.

05

Event-driven automation via webhooks

Subscribe to Housecall Pro events to react instantly to job dispatches, completions, or invoice payments without polling, and route them into your workflow engine.

06

Job-level enrichment and tagging

Add notes, attachments, tags, and links to jobs to surface context from your platform — such as call recordings, financing status, or customer sentiment — directly inside Housecall Pro.

SuperAI

Housecall Pro AI agent tools

Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.

create_a_housecall_pro_customer_address

Create a new address on a Housecall Pro customer. Returns the created address record with id, type, street, street_line_2, city, state, zip, and country. Required: customer_id, street, city, state, zip, country.

get_single_housecall_pro_customer_address_by_id

Get a customer's address via customer ID and address ID. Returns: id, type, street, street_line_2, city, state, zip, country. Required: customer_id, id.

list_all_housecall_pro_customer_addresses

List addresses for a Housecall Pro customer. Returns address records with id, type, street, street_line_2, city, state, zip, and country. Note: the vendor spec leaves the 200 response empty and shows this list shape only under a request body, so the shape is inferred and unconfirmed. Required: customer_id.

create_a_housecall_pro_customer

Create a customer in Housecall Pro with name, email, phone numbers, lead source, tags, and addresses. Returns the created customer including id, first_name, last_name, email, tags, and addresses.

get_single_housecall_pro_customer_by_id

Get a single Housecall Pro customer by id. Returns the customer including id, first_name, last_name, email, tags, addresses, and created_at; pass expand to include attachments or do_not_service. Required: id.

list_all_housecall_pro_customers

List Housecall Pro customers. Returns each customer's id, first_name, last_name, email, mobile_number, tags, and addresses.

update_a_housecall_pro_customer_by_id

Update an existing Housecall Pro customer by id. Returns the updated customer with id, first_name, last_name, email, mobile_number, tags, and addresses. Required: id.

housecall_pro_jobs_bulk_lock

Lock Housecall Pro jobs whose schedule start or completion time falls within a time range. Returns jobs with id and locked_at. statuses must include at least one of scheduled, in_progress, completed. Required: starting_at, ending_at, statuses.

create_a_housecall_pro_job

Create a job in Housecall Pro from an existing customer and address. Returns the created job including id, invoice_number, work_status, schedule, customer, and totals. Required: customer_id, address_id.

housecall_pro_jobs_dispatch

Dispatch a Housecall Pro job to employees. Returns assigned_employees including each employee's id, first_name, last_name, email, role, and permissions. Required: job_id, dispatched_employees.

get_single_housecall_pro_job_by_id

Get a single Housecall Pro job by id. Returns the full job including id, invoice_number, work_status, schedule, customer, assigned_employees, and totals. Required: id.

list_all_housecall_pro_jobs

List Housecall Pro jobs, sorted by created_at descending by default. Returns jobs with id, invoice_number, work_status, schedule, customer, and totals.

housecall_pro_jobs_lock

Lock a single Housecall Pro job by id. Returns the locked job, including locked_at. Required: job_id.

housecall_pro_job_line_items_bulk_update

Bulk create, update, and replace a Housecall Pro job's line items in a single request. Returns: url, data. Required: job_id. Entries without an id are treated as new line items; append_line_items defaults to false, which deletes existing items omitted from the request.

create_a_housecall_pro_job_line_item

Add a line item to a Housecall Pro job. Returns the created line item including id, name, unit_price, quantity, kind, and taxable. Required: job_id, name. Creating multiple items for the same job is rate limited — use bulk_update instead.

delete_a_housecall_pro_job_line_item_by_id

Delete a single line item from a Housecall Pro job. Returns: id, deleted. Required: job_id, id.

list_all_housecall_pro_job_line_items

List all line items for a Housecall Pro job. Returns each line item's id, name, description, unit_price, unit_cost, quantity, kind, taxable, amount, and order_index. Required: job_id.

update_a_housecall_pro_job_line_item_by_id

Update a single line item on a Housecall Pro job. Returns the updated line item including id, name, unit_price, quantity, kind, and taxable. Required: job_id, id, name.

create_a_housecall_pro_job_note

Add a note to a Housecall Pro job. Returns the created note including its id and content. Required: job_id, content.

delete_a_housecall_pro_job_note_by_id

Deletes a specific job note. Returns no documented response body. Required: job_id, id.

get_single_housecall_pro_invoice_by_id

Get a single Housecall Pro invoice by id (UUID). Returns the full invoice object including id, status, invoice_number, amount, subtotal, due_amount, due_at, items, taxes, discounts, payments, and job_id. Required: id.

list_all_housecall_pro_invoices

List Housecall Pro invoices. Returns: id, status, invoice_number, amount, subtotal, due_amount, due_at, display_due_concept, due_concept, paid_at, sent_at, service_date, invoice_date, taxes, discounts, payments, job_id. Filter and sort results via query parameters.

housecall_pro_invoices_preview

Preview a Housecall Pro invoice as HTML by its id. Returns the rendered invoice as an HTML document (text/html), not a JSON object. Required: invoice_id.

create_a_housecall_pro_estimate

Create an estimate in Housecall Pro for a customer (customer_id), optionally including options with line items, tax, a schedule, and estimate fields. Returns the created estimate including id, estimate_number, work_status, customer, schedule, and options.

get_single_housecall_pro_estimate_by_id

Get a single estimate by id from Housecall Pro. Returns the full estimate including id, estimate_number, work_status, customer, address, schedule, assigned_employees, and options. Required: id.

list_all_housecall_pro_estimates

List Housecall Pro estimates, filterable by customer, assigned employees, locations, work status, and schedule window; sortable by created_at, updated_at, or id. Returns id, estimate_number, work_status, customer, address, schedule, assigned_employees, and options.

housecall_pro_estimate_options_approve

Approve one or more estimate options in Housecall Pro. Returns: status, last_updated_at, copied_on_approval_to_job_id. Required: option_ids.

housecall_pro_estimate_options_bulk_update

Update the schedule of a Housecall Pro estimate option. Returns the updated schedule with start_time, end_time, arrival_window_minutes, and assigned_employees. Required: estimate_id, option_id, start_time.

create_a_housecall_pro_estimate_option

Create a new option on an existing Housecall Pro estimate. Returns the created option with id, name, option_number, total_amount, approval_status, status, notes, created_at, and updated_at. Required: estimate_id, name.

housecall_pro_estimate_options_decline

Decline one or more estimate options in Housecall Pro. Returns: status, last_updated_at. Required: option_ids.

create_a_housecall_pro_estimate_option_attachment

Create a new estimate option attachment in Housecall Pro by uploading a file to an estimate option. Returns: estimate_url. Required: estimate_id, option_id, file.

housecall_pro_estimate_option_line_items_bulk_update

Bulk update line items for a Housecall Pro estimate option in a single request; entries without an id are added as new line items for the option. Returns: line_items. Required: estimate_id, option_id.

list_all_housecall_pro_estimate_option_line_items

List line items for a Housecall Pro estimate option. Returns each line item's id, name, description, unit_price, unit_cost, quantity, kind, taxable, amount, and order_index. Required: estimate_id, option_id.

create_a_housecall_pro_estimate_option_link

Create a new link attached to a Housecall Pro estimate option. Returns the created link's id, title, and url. Required: estimate_id, option_id, title, url.

create_a_housecall_pro_estimate_option_note

Create a new note on a Housecall Pro estimate option. Returns: id, content. Required: estimate_id, option_id, content.

delete_a_housecall_pro_estimate_option_note_by_id

Delete a specific note on a Housecall Pro estimate option. Returns an empty 204 response on success. Required: estimate_id, option_id, id.

list_all_housecall_pro_company

Get the Housecall Pro company profile for the authenticated account, including child locations for multi-location businesses. Returns id, name, support_email, phone_number, address, website, time_zone, and locations. Takes no parameters.

create_a_housecall_pro_lead_source

Create a new lead source in Housecall Pro for categorizing where leads originate. Returns the created lead source with id, name, and editable. Required: name.

list_all_housecall_pro_lead_sources

List Housecall Pro lead sources, optionally searched by name (q). Returns each lead source with id, name, and editable.

update_a_housecall_pro_lead_source_by_id

Update a specific lead source. Only lead sources marked as editable can be updated. Returns: id, name, editable. Required: id.

housecall_pro_leads_convert

Convert a Housecall Pro lead into an estimate or job. Returns job_id when the lead was converted to a job, or estimate_id when it was converted to an estimate. Required: lead_id.

create_a_housecall_pro_lead

Create a new Housecall Pro lead. Returns the created lead including id, number, customer, address, status, tags, assigned_employee, lost_at, and total_amount. An associated customer (customer_id or a customer object) must be provided.

get_single_housecall_pro_lead_by_id

Get a single Housecall Pro lead by id. Returns the lead including id, number, customer, address, lead_source, tags, assigned_employee, status, pipeline_status, company_id, lost_at, total_amount, conversions, and job_fields. Required: id.

list_all_housecall_pro_leads

List Housecall Pro leads, filterable by customer_id, employee_ids, lead_source, location_ids, status, and tag_ids; sorted by created_at descending by default. Returns lead records including id, number, customer, address, status, pipeline_status, lost_at, total_amount, conversions, and job_fields.

housecall_pro_job_schedules_bulk_delete

Delete the schedule from a Housecall Pro job. Returns a confirmation with object ("schedule") and deleted. Required: job_id.

housecall_pro_job_schedules_bulk_update

Update a Housecall Pro job's schedule. Returns: start_time, end_time, arrival_window_minutes, assigned_employees, company_name, company_id, appointments. Required: job_id, start_time. Jobs with multi-day schedules containing more than 1 appointment cannot be updated here — use the appointments endpoints instead.

housecall_pro_applications_disable

Disable the application for a company. Returns: name, state, organization_id.

housecall_pro_applications_enable

Enable the application for a company. Returns: name, state, organization_id.

list_all_housecall_pro_applications

Get the application for a company. Returns: name, state, organization_id.

list_all_housecall_pro_checklists

List checklists that belong to a Housecall Pro job or estimate. Returns: id, title, job_uuid, estimate_uuid, sections. The vendor's parameter list marks both job_uuids and estimate_uuids as required, while its own text says at least one is enough; both are listed as required here to match the parameter list. Required: job_uuids, estimate_uuids.

list_all_housecall_pro_employees

Get all of the active employees in an organization. Returns: id, first_name, last_name, email, mobile_number, color_hex, avatar_url, role.

create_a_housecall_pro_job_attachment

Add an attachment to a job. Returns: job_url. Required: job_id, file.

create_a_housecall_pro_job_appointment

Add an appointment to a job. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id, start_time, end_time, dispatched_employees_ids.

delete_a_housecall_pro_job_appointment_by_id

Delete a job appointment. Returns no documented response body. Required: job_id, id.

list_all_housecall_pro_job_appointments

Get all of the appointments for a job. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id.

update_a_housecall_pro_job_appointment_by_id

Update job appointment. Returns: id, start_date, start_time, end_time, anytime, arrival_window_minutes, dispatched_employees_ids. Required: job_id, id, start_time, end_time, dispatched_employees_ids.

list_all_housecall_pro_job_invoices

Lists all invoices for a job. Returns: id, status, invoice_number, amount, subtotal, due_amount, due_at, display_due_concept. Required: job_id.

housecall_pro_job_input_materials_bulk_update

Bulk update a job's job inputs materials. If uuid not define for a job input material it will be consider as a new entry. Returns: job_input_materials. Required: job_id.

list_all_housecall_pro_job_input_materials

Lists all job input materials for a job. Returns: uuid, name, description, part_number, unit_cost, quantity. Required: job_id.

create_a_housecall_pro_job_tag

Add a tag to a job. Returns: tags. Required: job_id, tag_id.

delete_a_housecall_pro_job_tag_by_id

Remove a tag from a job. Returns: tags. Required: job_id, id.

create_a_housecall_pro_job_link

Create a new job link. Returns: id, title, url. Required: job_id, title, url.

create_a_housecall_pro_webhook_subscription

Create a Housecall Pro webhook subscription for the company. Webhooks are disabled by default and must be subscribed per company; once subscribed, events are sent to your webhook endpoint. Returns no documented response body.

delete_a_housecall_pro_webhook_subscription_by_id

Delete a company's Housecall Pro webhook subscription to stop receiving events for that company. Returns no documented response body.

housecall_pro_company_franchise_info_bulk_update

Update organization franchise information. Returns: id, name, support_email, phone_number, logo_url, address, website, default_arrival_window.

housecall_pro_company_schedule_availability_bulk_update

Update a company's schedule windows. Returns: availability_buffer_in_days, daily_availabilities. Required: availability_buffer_in_days, daily_schedule_windows.

list_all_housecall_pro_company_schedule_availability

See how an organization has configured their business hours and bookable windows. Returns: availability_buffer_in_days, daily_availabilities.

list_all_housecall_pro_company_booking_windows

Get available windows to book a Housecall Pro job or estimate for a time range (default 7 days), based on Online Booking settings and open employee slots. Window size is service_duration, else the service's configured duration (service_id), else 30 minutes.

get_single_housecall_pro_event_by_id

Get the event via ID. Returns: id, name, note, tags, recurrence_rule, address, assigned_employees, schedule. Required: id.

list_all_housecall_pro_events

Get a list of events. Returns: id, name, note, tags, recurrence_rule, address, assigned_employees, schedule.

create_a_housecall_pro_tag

Create a tag. Returns: id, name.

list_all_housecall_pro_tags

Get a list of tags. Returns: id, name.

update_a_housecall_pro_tag_by_id

Update a tag value. Returns: id, name. Required: id.

list_all_housecall_pro_lead_line_items

Lists all line items for a lead. Returns: id, name, description, unit_price, unit_cost, unit_of_measure, quantity, kind. Required: lead_id.

create_a_housecall_pro_job_type

Create a job type. Returns: id, name. Required: name.

list_all_housecall_pro_job_types

Get a list of job types. Returns: id, name.

update_a_housecall_pro_job_type_by_id

Update a job type. Returns: id, name. Required: id, name.

create_a_housecall_pro_price_book_material

Create a new price book material. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: material_category_uuid, name, price, cost.

delete_a_housecall_pro_price_book_material_by_id

Delete an existing price book material. Returns no documented response body. Required: id.

list_all_housecall_pro_price_book_materials

Get all price book materials under a parent category. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: material_category_uuid.

update_a_housecall_pro_price_book_material_by_id

Update information of an existing price book material. Returns: object, uuid, material_category_uuid, name, description, image, cost, unit_of_measure. Required: id.

create_a_housecall_pro_price_book_material_category

Create a new price book material category. Returns: object, uuid, parent_uuid, name, image. Required: name.

delete_a_housecall_pro_price_book_material_category_by_id

Delete an existing price book material category. Returns no documented response body. Required: id.

list_all_housecall_pro_price_book_material_categories

Get all price book material categories from root or under a parent category. Returns: object, uuid, parent_uuid, name, image.

update_a_housecall_pro_price_book_material_category_by_id

Update information of an existing price book material category. Returns: object, uuid, parent_uuid, name, image. Required: id.

create_a_housecall_pro_price_book_price_form

Create a new price book price form. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: name.

delete_a_housecall_pro_price_book_price_form_by_id

Delete a price form. Returns no documented response body. Required: id.

get_single_housecall_pro_price_book_price_form_by_id

Get a single price book price form by ID. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: id.

list_all_housecall_pro_price_book_price_forms

Get a list of active price book price forms. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description.

update_a_housecall_pro_price_book_price_form_by_id

Updates price form. Returns: id, name, automatically_add_to_new_job, olb_enabled, duration_in_minutes, taxable, template_type, description. Required: id.

list_all_housecall_pro_price_book_services

Get a list of price book services. Returns: object, uuid, name, description, task_number, image, flat_rate_enabled, service_materials.

list_all_housecall_pro_service_zones

Get a list of service zones. Returns: id, name, coverage_type, trip_charge, fee_name, zip_codes, cities, service_pros.

list_all_housecall_pro_routes

Get a list of routes for the company. A route groups employees and their job appointments, events, and estimates for a given date. Returns: id, name, color_hex, date, employee_ids, job_appointments, event_ids, estimate_ids.

housecall_pro_pipeline_statuses_bulk_update

Updates pipeline status for lead, job, or estimate. The Pipeline domain only allows forward movement to statuses with equal or higher order values. Returns: status_id, resource_id, resource_type, name. Required: resource_type, resource_id, status_id.

list_all_housecall_pro_pipeline_statuses

List Housecall Pro pipeline statuses for a resource type (lead, job, or estimate); empty for organizations without pipeline enabled. Returns: id, name, status_type. Required: resource_type. Required: resource_type.

Why Truto

Why use Truto’s MCP server for Housecall Pro

Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 850+ integrations.

01

Auto-generated, always up to date

Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.

02

Fine-grained access control

Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.

03

Multi-tenant by design

Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.

04

Works with every MCP client

Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.

05

Built-in auth, rate limits, and error handling

Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.

06

Expiring and auditable servers

Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.

How It Works

From zero to integrated

Go live with Housecall Pro in under an hour. No boilerplate, no maintenance burden.

01

Link your customer’s Housecall Pro account

Use Truto’s frontend SDK to connect your customer’s Housecall Pro account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.

02

We handle authentication

Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.

03

Call our API, we call Housecall Pro

Truto’s Proxy API is a 1-to-1 mapping of the Housecall Pro API. You call us, we call Housecall Pro, and pass the response back in the same cycle.

04

Unified response format

Every response follows a single format across all integrations. We translate Housecall Pro’s pagination into unified cursor-based pagination. Data is always in the result attribute.

FAQs

Common questions about Housecall Pro on Truto

Authentication, rate limits, data freshness, and everything else you need to know before you integrate.

How does authentication work for Housecall Pro?

Truto handles the full OAuth connection flow with Housecall Pro on behalf of your end users. You don't manage tokens, refreshes, or credential storage — users click connect in your product and Truto returns an authenticated connection you can use immediately.

Can we react to Housecall Pro events in real time?

Yes. Truto exposes create and delete endpoints for Housecall Pro webhook subscriptions, and you can also list events via the events API. This lets you subscribe to job, estimate, and invoice lifecycle changes instead of polling.

What customer and job data can we read and write?

You can fully manage customers and their addresses, jobs (including appointments, line items, notes, attachments, tags, schedules, and dispatching), estimates and estimate options, invoices (read and preview), and leads. Both read and write operations are supported across these core resources.

Does Truto support bulk operations for Housecall Pro?

Yes. Truto exposes Housecall Pro's native bulk endpoints for job locking, job schedules, job input materials, job line items, estimate options, estimate option line items, pipeline statuses, company franchise info, and schedule availability — so you can push large updates efficiently.

How is pagination handled across list endpoints?

Truto normalizes Housecall Pro's pagination behind a consistent cursor interface across all list endpoints (customers, jobs, invoices, estimates, price book, employees, etc.), so you can iterate large datasets without writing API-specific pagination logic.

Can we sync the Price Book, including custom materials and services?

Yes. You can list, create, update, and delete price book materials and material categories, manage price forms, and read price book services. This covers the common use cases around catalog sync and dynamic pricing.

Housecall Pro

Get Housecall Pro integrated into your app

Our team understands what it takes to make a Housecall Pro integration successful. A short, crisp 30 minute call with folks who understand the problem.