Skip to main content

ServiceTitan Permissions Explained

Written by Parker McNally
Updated over a month ago

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.


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.


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.

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.


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

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.

Did this answer your question?