How to connect LeadTruffle and ServiceTitan
How to Connect ServiceTitan to LeadTruffle
How to connect ServiceTitan to LeadTruffle
📝 This guide walks you through creating a private app in ServiceTitan and connecting it to LeadTruffle for CRM sync, AI booking, and availability checks.
Table of contents
- Prerequisites
- Step 1: Create a private app in ServiceTitan Developer Portal
- Step 2: Create a booking provider tag
- Step 3: Connect the app in your ServiceTitan account
- Step 4: Generate your client ID and client secret
- Step 5: Enter your credentials in LeadTruffle
- Step 6: Choose how leads import into ServiceTitan
- Troubleshooting
- Summary
Prerequisites
- Your ServiceTitan account must be on The Works plan
- You need admin access to your ServiceTitan account
- You need access to the ServiceTitan Developer Portal
Step 1: Create a private app in ServiceTitan Developer Portal
- Go to developer.servicetitan.io/signin
- Under ServiceTitan Customers, click Sign In as Production Environment User

- Sign in with your ServiceTitan admin credentials
- Click My Apps at the top of the page
- Click Register New App
- Prompt appears: "Who will be accessing the API endpoints/webhooks?"
- Select "Our organization"
- Check the box: "I confirm this app is being hosted and maintained by my organization"
- Click Continue
- Enter the following details:
- App Name — enter "Lead Follow Up"
- Organization Name — your company name (e.g. Bryan's HVAC)
- Organization/App Website — your company website (https://bryanshvac.com)
- Email Address — your email (bryan@bryanshvac.com)
- Description — "Lead response automation for ServiceTitan. Helping us book more leads into appointments so we can grow our business."
- Under API Scopes, enable the following permissions:
- CRM — All Read & Write except Leads
- Settings — Read "Employees"
Scope | Read | Write |
|---|---|---|
CRM — Booking Provider Tags | ✅ | ✅ |
CRM — Bookings | ✅ | ✅ |
CRM — Customers | ✅ | ✅ |
CRM — Leads | ❌ | ❌ |
CRM — Locations | ✅ | ✅ |
CRM — Tags | ✅ | ✅ |
Settings — Employees | ✅ | ❌ |
- Under Client Credentials Management, select "I, the app developer, will configure the credentials on behalf of each tenant"
- Click Create App
- Your App Key will be generated — copy it and save it somewhere secure
*For more details, see ServiceTitan's official guide: Create an App
Step 2: Create a booking provider tag
A Booking Provider Tag tells ServiceTitan where a booking came from. You need to create one for LeadTruffle so it can create bookings in your account.
- Log in to your ServiceTitan account at go.servicetitan.com
- Go to **Settings → Integrations → **Booking Provider Tags
- Click Add Tag
- Enter "LeadTruffle" as the tag name
- Add a description if you'd like (optional)
- Click Save

For more details on how booking providers work, see ServiceTitan's CRM API documentation.
Step 3: Connect the app in your ServiceTitan account
- Still in ServiceTitan, go to **Settings → Integrations → **API Application Access
- Click Connect New App
- Find and select the app you just created (e.g. "LeadTruffle")
- Review the API scopes — these are the permissions you selected in Step 1
- Under Restriction by Booking Provider, choose No Restriction
- Click Allow Access


*For more details, see ServiceTitan's official guide: Client ID & Secret
Step 4: Generate your client ID and client secret
If you selected "I, the app developer, will configure the credentials" in Step 1:
- Go back to developer.servicetitan.io
- Click My Apps
- Click App Connections for your LeadTruffle app
- Find your tenant and click Generate under Client Secret
- Copy the Client ID and Client Secret — save both somewhere secure
If you're generating credentials from ServiceTitan directly:
- In ServiceTitan, go to Settings → Integrations → API Application Access
- Select the LeadTruffle app from your connected apps
- Your Client ID will be displayed on the Application Details screen
- Click Generate next to Client Secret, then click Yes, Continue
- Copy the Client ID and Client Secret
Step 5: Enter your credentials in LeadTruffle
- In LeadTruffle, go to ServiceTitan Settings
- On the Basic Settings tab, you'll see the Credentials section

- Select Provider Scoped
- Fill in the following fields:
Field | Where to find it |
|---|---|
Tenant ID | ServiceTitan → Settings → Integrations → API Application Access |
Environment | Select Production |
App Key | Copied from Step 1 when you created the app |
Client ID | Copied from Step 4 |
Client Secret | Copied from Step 4 |
Booking Access Mode | Select Provider scoped |
- Under Booking Provider, click Detect Booking Providers
- LeadTruffle will search your ServiceTitan account and show the available providers
- Select LeadTruffle Booking from the dropdown (this is the tag you created in Step 2)

- Make sure "Keep this integration active after saving" is checked
- Click Save
Step 6: Choose how leads import into ServiceTitan
Once your accounts are connected, you'll decide how LeadTruffle pushes homeowners into ServiceTitan. This section covers your import options and our recommended setup.
ServiceTitan has two different objects you can import contacts into: Customers and Leads. You choose which one LeadTruffle uses.
For most LeadTruffle clients, Customer is the right choice — but Lead works too. It comes down to how your team operates inside ServiceTitan.
Option 1: Import as a Customer
This creates a customer record in ServiceTitan for each lead. There are three settings to know about:
Strict syncing mode
ServiceTitan requires an address to create any record. With strict syncing mode on, LeadTruffle will only sync when it has real customer data (like a name and address) — if that data is missing, the contact won't sync at all.
- Turn this on if you never want placeholder or "dummy" data in your CRM
- Leave it off if you'd rather get every lead into ServiceTitan, even when some details are missing
Do not perform updates when there's a partial match
When LeadTruffle finds a partial match on name, email, phone, or address, it will normally update that existing customer.
- Leave this off (recommended for most) to update the existing customer instead of creating a duplicate
- Turn it on if you'd always rather create a brand-new record, even when there's a match
Use placeholder address when a lead doesn't have one
Because ServiceTitan requires an address, this setting lets LeadTruffle backfill a placeholder (for example, your business address) when a lead's address is missing.
- Leave this on (recommended when starting out) so leads still flow into ServiceTitan
- Turn it off only if keeping your CRM perfectly clean matters more than capturing every lead

Option 2: Import as a Lead
If managing customer data feels like more of a headache than it's worth, you can import contacts as Leads instead. Leads don't require an address, so there's less to manage.
- Best if your team actively works lead records and doesn't rely on customer records as much
- Strict syncing mode is also available here if you want it

Our recommendation
Troubleshooting
I don't see my app when connecting in ServiceTitan
Make sure you added your tenant ID to the app in the Developer Portal. Go to My Apps → edit your app → check that your tenant ID is listed.
"User doesn't have access to Developer Portal" error
You need to sign in with an admin account. If your account doesn't have admin access, ask your ServiceTitan admin to complete these steps.
"Not Connected Yet" status in Developer Portal
The tenant admin hasn't connected to the app yet. Complete Step 3 first, then return to generate credentials.
Client Secret was lost or not copied
Go back to the Developer Portal → My Apps → App Connections and generate a new one. You can have up to two active secrets per app.
LeadTruffle Booking doesn't appear when I click Detect Booking Providers
Make sure you created the Booking Provider Tag in Step 2. Go to Settings → Integrations → Booking Provider Tags in ServiceTitan and confirm the tag exists.
What's the difference between Tenant Scoped and Provider Scoped?
Provider Scoped connects LeadTruffle to a specific Booking Provider Tag so it can create bookings in ServiceTitan. This is the recommended setup. Tenant Scoped is only used for reading booking data and does not support creating new bookings.
Summary
You've created a private app in the ServiceTitan Developer Portal, added a LeadTruffle booking provider tag, connected the app in your ServiceTitan account, generated API credentials, entered them into LeadTruffle, and chosen how leads import. Your ServiceTitan integration is now active for CRM sync, AI booking, and availability checks.
Need help? Contact us at support@leadtruffle.com or message the team via the chat on this article or in-app.
Updated on: 02/06/2026
Thank you!