Skip to main content

ServiceTitan Permissions Explained

Written by Parker McNally
Updated this week

We totally get it — when you see a long list of permissions, it's natural to wonder “why do they need all of this?” This document breaks down every permission we request, explains which ones we actively use, and is upfront about which ones we don't need and plan to remove.

We last audited our permission footprint against our codebase in March 2026. This document reflects that audit.


Our Philosophy

We only use permissions we genuinely need to make the integration work. We don't collect data we don't use, and we don't create or modify anything in ServiceTitan that you haven't asked for. Every piece of this integration exists because it directly enables a feature that helps you sell more HVAC jobs.

When you connect SetSale to ServiceTitan, SetSale becomes a companion to your existing workflow — not a replacement. You still create your jobs and manage your dispatch in ServiceTitan the way you always have. SetSale handles the quoting side and then syncs those quotes as estimates so your field team sees exactly what the customer agreed to.


Common Questions

Will SetSale create or modify job types, cancel reasons, hold reasons, project statuses, or campaigns?

No. We do not call any write endpoints for:

  • Job types

  • Cancel reasons

  • Hold reasons

  • Project statuses

  • Project types

  • Campaigns

These permissions are currently enabled in our app but are not used by our integration. We are working to remove them.


Can we restrict unused permissions to READ, or remove them entirely?

Yes, absolutely.

For the permissions listed above, removing or restricting them will not break anything in our integration today. Further down in this document, we provide the complete list of permissions that are safe to remove and the minimum set we actually require.


What breaks if you limit everything to READ only?

The core integration breaks.

SetSale needs write access to:

  • Create and update estimates on jobs

  • Create equipment, material, and service SKUs when no match exists

  • Create organizational pricebook categories

  • Manage a SetSale vendor record

  • Create a fallback technician for sold estimates

  • Push activity notes to jobs

  • Assign technicians to appointments

Without write access to these resources, quote sync and estimate selling stop working.


Can we pre-create categories and have SetSale map to those instead of auto-creating?

Yes.

If you create categories named exactly:

  • SetSale Equipment & Services

  • SetSale Materials

SetSale will detect and use them instead of creating new ones.

The same applies to vendors — if a vendor named “SetSale” already exists, we'll use it.


Have you audited the minimum permissions needed to run this integration?

Yes. Our most recent audit was completed in March 2026.

We reviewed every API call our integration makes and identified a number of permissions that were enabled but not used. These were over-provisioned during initial development, and we are actively trimming the integration down to the minimum required set.


Permissions We Actively Use (Read and Write)

These permissions require both read and write access. Removing write access for any of these will break core integration features.


Estimates (Read and Write)

What it means:
We can create, read, update, and manage estimates in ServiceTitan.

What we actually do:
This is the core of the integration. Every quote option in SetSale becomes an estimate in ServiceTitan.

  • Each quote option is created as an Open estimate

  • When the customer signs, the chosen estimate is marked Sold

  • Unused options are marked Dismissed (ServiceTitan doesn’t allow deletion)

  • Estimates update if the quote changes

This ensures your dispatch team always sees exactly what the homeowner approved.


Equipment (Read and Write)

What it means:
We can search your equipment pricebook and create new equipment items.

What we actually do:
Quotes include equipment such as:

  • Furnaces

  • Air conditioners

  • Heat pumps

To place these on a ServiceTitan estimate we must match them to pricebook items.

Workflow:

  1. Search your pricebook first

  2. If a match exists → use it

  3. If not → create a new item

New items go into the category SetSale Equipment & Services.

We also update price and active status for equipment that SetSale originally created.


Materials (Read and Write)

What it means:
We can search your materials pricebook and create new materials.

What we actually do:
Quotes may include parts like:

  • Filters

  • Refrigerant

  • Wire

  • Misc install materials

We search for existing items first and only create new ones if necessary.

New items are placed into SetSale Materials.


Services (Read and Write)

What it means:
We can search your service pricebook and create service items.

What we actually do:
Service items include things like:

  • Installation labor

  • Diagnostics

  • Add-ons

If the service doesn't exist in your pricebook, we create it.

New services are placed in SetSale Equipment & Services.


Categories (Read and Write)

What it means:
We can read and create pricebook categories.

What we actually do:
When we create items, they need a category.

SetSale creates two dedicated ones:

  • SetSale Equipment & Services

  • SetSale Materials

We never modify your existing categories.

If these categories already exist, we use them instead.


Vendors (Read and Write)

What it means:
We can search and manage vendor records.

What we actually do:
We look for a vendor named SetSale.

If it doesn't exist, we create it.

When equipment or materials are created, we link this vendor so your team knows where those items originated.

If vendor creation fails, the pricebook item is still created — just without vendor linkage.


Technicians (Read and Write)

What it means:
We can search for and create technicians.

What we actually do:
When an estimate is marked Sold, it must be assigned to a technician.

We attempt to match the SetSale user to a technician:

  1. Match by email

  2. Match by name

If no match exists, we create a shared technician called SetSale Technician, used as a fallback.


Permissions We Actively Use (Write Only)

Job Notes (Write)

We add notes to jobs when important events happen, such as:

  • Customer views a quote

  • Customer signs a quote

  • Customer requests follow-up

Notes are always labeled with [SetSale] and we never read, modify, or delete existing notes.


Appointment Assignments (Write)

In some cases ServiceTitan requires a technician to be assigned before estimate items can be created.

This permission acts as a fallback mechanism so estimate sync completes successfully. We do not manage your appointment schedule.


Permissions We Actively Use (Read Only)

These permissions are used only to read information from ServiceTitan.

Customers

Used to display customer information when searching for jobs.

Locations

Used to display service addresses when searching for jobs.

Jobs

Used by SetSale’s job search feature so salespeople can link quotes to existing jobs.

Business Units

Used when creating the fallback technician.

User Roles

Used to assign the correct role when creating the fallback technician.

GL Accounts

Used when assigning income and cost-of-sales accounts to newly created pricebook items.


Conditional Permissions

Discounts and Fees (Read and Write)

Only used if Sync Discounts is enabled in SetSale.

When enabled, SetSale creates discount SKUs for:

  • Team discounts

  • Cash discounts

  • Instant rebates

If this feature is not used, the permission can be removed.


Platform Dependencies

Employees (Read and Write)

We do not call employee endpoints directly. However, ServiceTitan requires this permission to be enabled for technician creation to work. This appears to be a platform dependency.


Permissions We Don’t Use

The following permissions are currently enabled but not used by our integration and are safe to remove:

  • Installed Equipment

  • Appointments

  • Job Canceled Logs

  • Job Cancel Reasons

  • Job History

  • Job Hold Reasons

  • Job Types

  • Project Notes

  • Projects

  • Project Statuses

  • Project Sub-Statuses

  • Project Types

  • Campaigns

  • Client Specific Pricing

  • Pricebook Images

  • Pricebook Bulk Operations

  • Tag Types


What We Never Do

We never delete your data

Estimates are dismissed rather than deleted.

We never modify your core business records

We do not change customers, job types, or existing pricebook items.

We never manage anything outside of quotes

We do not manage dispatch, service agreements, or marketing campaigns.

We never create items without a purpose

Every item created exists because it was needed for a specific estimate.


Minimum Required Permissions

Read and Write (required)

  • Estimates

  • Equipment

  • Materials

  • Services

  • Categories

  • Vendors

  • Technicians

Write Only (required)

  • Job Notes

  • Appointment Assignments

Read Only (required)

  • Jobs

  • Customers

  • Locations

  • Business Units

  • User Roles

  • GL Accounts

Platform Dependency

  • Employees (Read and Write)

Conditional

  • Discounts and Fees (only if Sync Discounts is enabled)

Everything else currently enabled can be removed without affecting the integration.


Questions?

If anything in this document is unclear or you have concerns about a particular permission, our support team would be happy to walk through it with you.

One important note: ServiceTitan does not allow different permission sets per customer, so the permissions requested are applied globally across all SetSale users. We are actively working to remove unused permissions from our configuration so this concern becomes moot for everyone.

Did this answer your question?