---
title: "Housecall Pro"
url: https://docs.light-ai.app/integrations/housecall-pro.md
canonical_url: https://docs.light-ai.app/integrations/housecall-pro
last_updated: 2026-10-13
summary: "On the MAX plan, n8n creates Housecall Pro leads through the public API (they land in Job inbox) and lead webhooks flow back. Below MAX, only Zapier's Create Customer action is available."
api_status: beta
related:
  - https://docs.light-ai.app/integrations
  - https://docs.light-ai.app/inbound
  - https://docs.light-ai.app/webhooks
  - https://docs.light-ai.app/external-refs
---

# Housecall Pro

> On the MAX plan, n8n creates Housecall Pro leads through the public API (they land in Job inbox) and lead webhooks flow back. Below MAX, only Zapier's Create Customer action is available.

| Direction | Path | How |
| --- | --- | --- |
| Leads → Light AI | **via n8n** | MAX plan: Housecall Pro webhook `lead.created` (signed with `Api-Signature`) → n8n → `POST /v1/leads` with `source: other`, `source_detail: "Housecall Pro"` and `external_ref: { system: "housecall_pro", id: <lead id> }`. |
| Light AI → Housecall Pro | **via n8n** · **via Zapier** | MAX plan: `lead.created` (or `quote.approved`) → `POST https://api.housecallpro.com/leads` with the customer, address, note and line items; it arrives in the **API Leads** channel of Job inbox. Other plans: Zapier **Create Customer**, plus an e-mail to the office with the quote. |

## Set up

1. Housecall Pro (admin): My Apps → API Key Management → Generate API key. Then My Apps → Job inbox → turn on **API Leads**.
2. n8n: HTTP Request node with header `Authorization: Token <key>` (the word `Token` is required).
3. Optional: configure webhooks for `lead.*` and `estimate.*` and verify `Api-Signature` (HMAC-SHA256 of `Api-Timestamp` + `.` + body).

## Light AI → Create Lead

| Housecall Pro | Light AI |
| --- | --- |
| `customer.first_name`, `last_name`, `email`, `mobile_number` | `contact.*` (or `client.*` on quotes) |
| `address`: `street`, `street_line_2`, `city`, `state`, `zip` | `address.line1`, `line2`, `city`, `region`, `postal_code` |
| `lead_source`, `tags` | `"Light AI"`, a tag such as `light-ai` |
| `note` | `message`, `service_interest`, form answers (`lead.form_answers`, see [Website request forms](https://docs.light-ai.app/forms)) and `project.app_url` |
| `line_items[]`: `name`, `description`, `quantity`, `unit_price` (cents), `kind` | `line_items[]`: `name`, `description`, `quantity`, `unit_price_cents`; `kind: "materials"` or `"labor"` |

## Notes

- The public API, API keys and API Leads are MAX-plan only. OAuth is reserved for Housecall Pro's official integration partners; agencies use the contractor's API key.
- Housecall Pro does not build or support custom API-key integrations. Its Zapier app has job triggers and a single Create Customer action.
- `unit_price_cents` is `null` for lines priced as a whole (e.g. mini lights by the set): send quantity 1 and `total_cents` instead.
- Photos and instant previews: webhook payloads carry only asset ids (`assets.photos[]`, `assets.mockups[]` with `url: null`). Fetch `GET /v1/leads/{id}` for links that expire after 60 minutes and download the files if the CRM can store them; otherwise store `project.app_url` (sign-in required). Never save a 60-minute link in a CRM.

## Sources

- [API overview (MAX plan)](https://help.housecallpro.com/en/articles/8505035-api-overview)
- [API Leads in Job inbox](https://help.housecallpro.com/en/articles/12062219-api-leads-in-job-inbox)
- [Authentication](https://docs.housecallpro.com/docs/housecall-public-api/b87d37ae48a0d-authentication)
- [Create Lead](https://docs.housecallpro.com/docs/housecall-public-api/8961eaf9f1c28-create-lead)
- [Webhooks](https://docs.housecallpro.com/docs/housecall-public-api/46e9e1be07621-webhooks)
- [Housecall Pro on Zapier](https://zapier.com/apps/housecall-pro/integrations)
