Integrations

Right arrow

ServiceTitan

ServiceTitan + Upfirst integration

Automate job creation, lead capture, and customer updates in ServiceTitan by connecting Upfirst’s AI answering service via Zapier

table of contents

Upfirst is an AI receptionist that connects to ServiceTitan in two ways: through Custom Actions (live API calls during a call, using OAuth and an App Key) and through Zapier (writes to ServiceTitan after the call ends). Inbound calls land on the right Customer and Location before the receptionist even greets the caller.

Does Upfirst integrate with ServiceTitan?

Yes. Two options:

  • Custom Actions hit the ServiceTitan REST API directly during a call. Search by phone, run job and appointment lookups against your tenant, or create records on demand.
  • Zapier handles the post-call writes once the call wraps up.

ServiceTitan API access runs through their Developer Portal. An admin creates the app, generates the App Key, and connects it to your tenant. After that, OAuth client credentials handle the rest.

What ServiceTitan is

ServiceTitan is the operations platform for established and enterprise home and commercial service businesses. The platform runs dispatch, the schedule board, technician routing, call booking, pricebook, invoicing, payroll, financing, and reporting. The core objects are Customer, Location, Job, Appointment, Invoice, and Booking.

HVAC, plumbing, electrical, garage door, and other trade businesses run their day in ServiceTitan. Inbound calls land with CSRs who book the Job. When volume spikes (storm, heat wave, freeze) overrun the CSR seat, Upfirst sits in front and takes the calls the team can't.

What Upfirst can do with ServiceTitan

Find the Customer and Location before the receptionist greets the caller

When a call comes in, Upfirst hits /crm/v2/tenant/{tenant}/customers?phone=#{{caller_id}} to find the Customer. If they have multiple Locations on file, the receptionist asks which property the call is about. The conversation starts with the right Customer-Location pair already identified.

Read the dispatch board to the caller mid-call

When the caller asks about their scheduled appointment, the receptionist queries the Job and Appointment endpoints with the Customer ID and reads back the arrival window, technician name (if assigned), and job status. No more "let me check with dispatch and call you back."

Book the Job in ServiceTitan when the call ends

For booking calls, Upfirst creates the Customer if they're new, attaches a Location, and creates a Job with the Business Unit, Job Type, and scheduled window. The call summary, transcript, and recording link save to the Customer's notes. The Job shows up on the dispatch board with the same fields a CSR would have entered.

Route by Business Unit, Job Type, and territory

Upfirst can pull anything you want out of a call: trade requested, urgency, zip code, equipment type. Use those signals to send service calls to your Service Business Unit, install inquiries to Sales, or skip Job creation altogether when the caller is out of area.

ServiceTitan API calls Upfirst can make

ServiceTitan's REST API has separate endpoints per domain (CRM, JPM, Dispatch, Accounting). The ones that map to a phone call:

  • GET /crm/v2/tenant/{tenant}/customers by phone, name, or address
  • GET /crm/v2/tenant/{tenant}/customers/{id}/locations
  • POST /crm/v2/tenant/{tenant}/customers for net-new callers
  • POST /jpm/v2/tenant/{tenant}/jobs with Business Unit, Job Type, and Campaign
  • GET /jpm/v2/tenant/{tenant}/appointments for arrival windows
  • POST /crm/v2/tenant/{tenant}/customers/{id}/notes for the call summary

Setting up the ServiceTitan integration

Custom Actions

  1. Sign in to developer.servicetitan.io with your ServiceTitan account. Create an app, add your Tenant ID, pick the API scopes you need, and copy the App Key.
  2. In ServiceTitan, go to Settings > Integrations > API Application Access, click Connect New App, select your app, and generate the Client ID and Client Secret.
  3. In Upfirst, set up the ServiceTitan OAuth Connection using those credentials. Then go to Agent > Custom actions and add a new action.
  4. Pick when it runs: When call starts for the Customer lookup, During call for Appointment status reads, or After call for Customer, Location, and Job creation.
  5. Set up the request. For a Customer lookup, GET https://api.servicetitan.io/crm/v2/tenant/{tenant_id}/customers?phone=#{{caller_id}} with OAuth bearer auth and the ST-App-Key header set to your App Key.
  6. Pick which fields the receptionist gets back (name, Locations, last Job). Test it. Save.

Zapier

  1. Create a Zap. Trigger: Upfirst > Call Completed.
  2. Pick a ServiceTitan action: Create Customer, Create Job, Add Note.
  3. Map the call fields to the ServiceTitan object fields. Business Unit, Job Type, and Campaign are the ones that matter for dispatch.
  4. Add filters so only booking calls or qualified leads create Jobs.
  5. Test with a real call. Turn the Zap on.

A common ServiceTitan setup: Customer lookup on call start, Appointment query during the call, Job creation after. Zapier picks up the long tail (Slack alerts, marketing pixel fires, warehouse sync) so the ServiceTitan write stays fast.

Try our AI answering service free for 14 weeks

No credit card required. Just sign up, forward your calls, and experience the magic of never missing another call again.

Try for free