Light AIDocs Beta Open Light AI

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.

DirectionPathHow
Leads → Light AIvia n8nMAX 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 Provia n8n · via ZapierMAX 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 ProLight AI
customer.first_name, last_name, email, mobile_numbercontact.* (or client.* on quotes)
address: street, street_line_2, city, state, zipaddress.line1, line2, city, region, postal_code
lead_source, tags"Light AI", a tag such as light-ai
notemessage, service_interest, form answers (lead.form_answers, see Website request forms) and project.app_url
line_items[]: name, description, quantity, unit_price (cents), kindline_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#