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 usUse Cases
Why integrate with Housecall Pro
Common scenarios for SaaS companies building Housecall Pro integrations for their customers.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.