Integrations
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#
- Housecall Pro (admin): My Apps → API Key Management → Generate API key. Then My Apps → Job inbox → turn on API Leads.
- n8n: HTTP Request node with header
Authorization: Token <key>(the wordTokenis required). - Optional: configure webhooks for
lead.*andestimate.*and verifyApi-Signature(HMAC-SHA256 ofApi-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) 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_centsisnullfor lines priced as a whole (e.g. mini lights by the set): send quantity 1 andtotal_centsinstead.- Photos and instant previews: webhook payloads carry only asset ids (
assets.photos[],assets.mockups[]withurl: null). FetchGET /v1/leads/{id}for links that expire after 60 minutes and download the files if the CRM can store them; otherwise storeproject.app_url(sign-in required). Never save a 60-minute link in a CRM.