Integrations
ServiceTitan
Through ServiceTitan's Zapier app: Light AI leads and approvals become bookings for the call center to accept. Direct API work needs the contractor's own app or a certified partner.
| Direction | Path | How |
|---|---|---|
| Leads → Light AI | via Zapier | ServiceTitan New Lead or New Booking trigger → Webhooks by Zapier → POST /v1/leads with source: other, source_detail: "ServiceTitan" and the ServiceTitan id as external_ref. |
| Light AI → ServiceTitan | via Zapier | lead.created or quote.approved → Zapier Catch Hook → ServiceTitan Create Booking under a Light AI booking provider. Bookings appear in ServiceTitan for a CSR to accept into a job or dismiss. |
Set up#
- ServiceTitan: Settings → Integrations → API Application Access → Connect New App → Zapier. Copy the tenant id, client id and a new client secret into Zapier.
- ServiceTitan: Settings → Integrations → Booking Providers → Add Tag (e.g. "Light AI"). Pick it in the Create Booking action.
- Light AI: an endpoint to the Catch Hook URL for
lead.created(andquote.approvedif the office wants a booking per approval).
Light AI → booking#
| ServiceTitan (Create Booking) | Light AI |
|---|---|
| Name, contacts (phone, e-mail) | contact.* (or client.* on quotes) |
| Address: street, unit, city, state, zip | address.line1, line2, city, region, postal_code |
| Source, external id | "Light AI", the lead or project id |
| Summary | message, service_interest, form answers (lead.form_answers, see Website request forms) and project.app_url; on approvals totals.total.decimal and line_items[] as text |
Notes#
- ServiceTitan does not allow a third party to use a contractor's app keys ("tunneling"). A contractor can build its own app on the Works or Ent Plus package; an agency serving many contractors needs to become a ServiceTitan partner.
- Field names in Create Booking follow the Zapier action. Some booking workflows need account configuration by ServiceTitan support.
- 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.