FlowRunner
PricingContact
Theme
Start Free

ServiceTitan

ERP

Connect AI agents to ServiceTitan, the field service platform for the trades. Agents create and look up customers, read service locations, monitor jobs and appointments by status for dispatch workflows, and pull invoices for accounting sync.

8 actions OAuth available
A booking request arrives from the website form with a name, phone, and service address
List Customers searches the tenant by name to see whether this caller already exists
List Locations checks whether the service address already belongs to a known customer
When the matches are ambiguous, the CSR decides: existing customer at a new address, or genuinely new, before any record is created
Create Customer writes the confirmed-new customer with type, contact info, and the service location address
List Jobs and List Appointments watch the resulting job's status as the office schedules it
When the appointment reaches scheduled with a technician assigned, the customer gets a confirmation and dispatch sees the day's board update
After completion, List Invoices picks up the job's invoice for the accounting sync

What This Integration Enables

A field-service shop runs on one question: which truck, which address, which job, which invoice. ServiceTitan holds those answers across its CRM, job management, and accounting modules, and this connector lets FlowRunner agents work across all three through the tenant-scoped API. Agents create and look up customers, read service locations, monitor jobs and appointments by status for dispatch workflows, and pull invoices for accounting sync. - Create customers from inbound leads and bookings, behind a dedup check - Sync customers and service locations to CRMs, sheets, and marketing systems - Watch job and appointment status to drive dispatch alerts and customer notifications - Pull invoices by customer and status for billing reconciliation - Keep the office, the field, and the books reading the same records This is a gated integration: API access is granted per tenant through the ServiceTitan Developer Portal, and the connector authenticates with client credentials plus the application key on every call. Inside that boundary, FlowRunner's [human-in-the-loop](/concepts/human-in-the-loop) step guards the one write that shapes everything downstream: who the customer record says you are.

Without FlowRunner

The CRM fills with near-duplicates Every web form and phone call risks creating "Bob Kowalski" next to "Robert Kowalski," splitting his history
Dispatch watches the screen Someone refreshes the job board all day so scheduled jobs do not slip through unnoticed
Billing sync is a Friday job Pending invoices batch into accounting whenever someone finds the time, and the books lag the trucks

With FlowRunner

New customers pass a dedup check Agents search name and address first, and ambiguous matches wait for a CSR's call
Status changes announce themselves Jobs entering scheduled status alert dispatch with the job number and customer attached
Invoices flow as they finalize Pending invoices sync to accounting on a schedule, with totals and balances intact

Use Case Scenarios

Web lead to booked job without a duplicate

A form submission lands. The agent runs List Customers on the name and List Locations on the address. A clean miss creates the customer; a partial hit goes to the CSR with both candidates side by side. Once the customer exists, the office books the job, and the agent's status watch takes over: when List Appointments shows the appointment scheduled with a technician assigned, the confirmation text goes out and [Slack](/integrations/slack) posts the job to the dispatch channel.

The dispatch board that taps you on the shoulder

Every ten minutes, List Jobs pulls jobs by status. New arrivals in scheduled status alert dispatch with job number, customer, and business unit from Get Job. Jobs stuck in hold status beyond the threshold escalate to the operations manager. The morning run writes the day's appointments to [Google Sheets](/integrations/google-sheets) as the printable field schedule, and the same sweep catches unassigned appointments before the trucks roll.

Invoices that reach the books while the job is warm

Nightly, List Invoices filters the tenant for pending invoices. Each syncs to [QuickBooks](/integrations/quickbooks) with its total, balance, and customer reference, and the run logs what moved. Balances that remain open past terms feed the collections follow-up list with the related job attached, so the conversation starts with context: which visit, which tech, which work. Get Customer supplies current balance and contact details when the follow-up actually happens.

Human-in-Loop Highlight

Create Customer is the master-data write in a system where everything hangs off the customer record: locations, jobs, appointments, and invoice balances all attach to that one ID. Create a duplicate and the damage compounds quietly, history splits across two records, receivables show two partial balances, and the do-not-service flag set on one record does not protect anyone looking at the other. ServiceTitan gives you no casual merge to undo it. So the agent on this page treats ambiguity as a stop condition: "Booking from 'R. Kowalski, 412 Birch Lane' matches existing customer Robert Kowalski with a different address two streets over, balance 380 dollars, 6 past jobs. Same person at a new house, or a new customer?" The CSR answers from context no matcher has, the record is created or reused accordingly, and every downstream job and invoice lands on one clean ID. The do-not-mail and do-not-service flags ride through the same review, because those flags are policy decisions about real households, not fields to default.

Agent processes routinely
Detects exception requiring judgment
Clear match Continues automatically
Ambiguous Routes to human via preferred channel
Human decides
Agent resumes with decision

Agent Capabilities

8 actions

Customers

3
  • List Customers Retrieves the tenant's customers with paging, an optional name filter, and an active-only toggle, in the standard ServiceTitan envelope with hasMore pagination. The dedup search behind every create.
  • Get Customer Retrieves one customer in full by ID: name, type, contact info, balance, and addresses. The context pull for collections and service decisions.
  • Create Customer Creates a customer with name, type, and at least one service location address, plus optional do-not-mail and do-not-service flags. The write behind this page's human gate.

Locations

1
  • List Locations Retrieves service locations with paging, optionally filtered to one customer, each with its address and owning customer. The address-level check that catches duplicates the name search misses.

Jobs and Appointments

3
  • List Jobs Retrieves jobs from the JPM module with paging and filters by status and customer. The sweep behind dispatch alerts and stuck-job escalations.
  • Get Job Retrieves one job in full: job number, status, customer, location, business unit, and job type. The detail step behind every dispatch notification.
  • List Appointments Retrieves appointments with paging, filterable by job and status, each with scheduled start and end times and technician assignment status. The source for field schedules and confirmation timing.

Accounting

1
  • List Invoices Retrieves invoices with paging, filterable by customer and status, each with total, balance, and related job and customer. The feed for accounting sync and collections follow-up.

Frequently Asked Questions

What can FlowRunner do with ServiceTitan?

FlowRunner agents can run List Customers, Get Customer, and Create Customer in ServiceTitan, plus 5 more actions.

Does connecting ServiceTitan to FlowRunner require OAuth?

Yes. ServiceTitan connects to FlowRunner with OAuth 2.0, so agents authenticate without handling raw credentials.

Can ServiceTitan trigger a FlowRunner workflow automatically?

ServiceTitan doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.

Start building with ServiceTitan

$100 in credits. No card required. Connect in minutes.