Light AIDocs Beta Open Light AI

Integrations

Integrations

Honest paths to the tools contractors use: what connects directly, what needs n8n, Zapier or Make, and what is manual.

Light AI has no native connectors yet. Direct means no middleware (the tool posts to Light AI or receives its webhooks). via n8n / Zapier / Make means a small workflow does the mapping; templates are provided for n8n. Their web form means n8n submits the tool's own lead form. Each recipe lists the vendor documentation it is based on, including plan or approval requirements.

ToolLeads inOutcomes out
HighLevelDirectDirect · via n8n
HubSpotvia n8n · via Zapiervia n8n
Jobbervia Zapier · via n8nvia Zapier · via n8n
Housecall Provia n8nvia n8n · via Zapier
ServiceTitanvia Zapiervia Zapier
Service AutopilotE-mail · via n8nTheir web form · via n8n
RealGreenvia n8n · Partner or manualvia n8n · Partner or manual
Sweep&GoDirect · via Zapiervia n8n
DeepLawnvia Zapier—
Google Ads & LSADirect · via n8nvia n8n
Meta Lead Adsvia n8n · via Zapier · via Makevia n8n
n8nDirectDirect
ZapierDirectDirect
MakeDirectDirect

Rules for every recipe#

  • Key CRM records on project.id, not on the quote id (each revision is a new quote).
  • Write your record id back with PUT …/external_refs/{system}; look objects up with ?external_ref=system:id.
  • Send source_system on writes and skip events whose origin.source_system is yours, to avoid loops.
  • Use an Idempotency-Key on every write.
  • Put message, form answers (lead.form_answers, see Website request forms) and project.app_url in a CRM note or custom fields.
  • 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.

Canonical quote mapping#

CRM fieldLight AI
Deal / job keyproject.id (stable across quote revisions); write your id back with PUT /v1/projects/{id}/external_refs/{system}
Amounttotals.total.decimal (or .cents)
Customerclient.first_name, client.last_name, client.email, client.phone
Site addressproperty.address.*
Line itemsline_items[]: code, name, quantity, unit_price_cents, total_cents
Stagequote.published → proposal sent; quote.approved → won; quote.declined / quote.expired → lost
Contractor linklinks.app_url (sign-in required, safe to store)

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.