If your office keeps calling every commercial contract a membership, this post is for you. In ServiceTitan, service agreements are the commercial-side tool, and they work differently from residential memberships. They have their own templates, their own billing rules, their own reporting, and now their own bulk editing screen. Here’s how to actually run them without losing track of what you owe your customers.
Why Service Agreements Are Their Own Thing
People use “memberships” and “service agreements” interchangeably in the field, and that’s fine in conversation. But inside ServiceTitan, they’re two different records with different behavior. Memberships are built for residential. Service agreements are built for commercial accounts where you’re promising scheduled visits to specific equipment at specific locations, often with deferred revenue and a real proposal flow.
If you try to force commercial work into the membership module, you’ll end up with a pricing and accounting mess. Keep them separate. Use memberships for homeowners. Use service agreements for the commercial book of business.
Start with a Template (and Get Revenue Recognition Right)
Every service agreement needs a template. You’ll find them under Settings, then search “service agreements,” then Service Agreement Templates under Operations.
The whole point of the template is to set revenue recognition. Everything else on a service agreement can be edited per agreement, so you don’t actually need a bunch of templates unless your recognition or default setup genuinely differs across contract types.
For commercial work, deferred recognition is the generally accepted accounting approach. When you sell the agreement, the cash lands in a liability GL account. As you perform the visits, the money moves out of liability and into revenue. That matches reality, since you owe the customer work you haven’t done yet.
To make deferred recognition work, you need three tasks in your pricebook mapped into the template:
A billing task tied to the liability GL account. This is what the customer sees on the invoice, and this is what parks the money.
A negative liability task tied to the same liability account. This one posts a negative amount to reduce the liability when you actually do a visit.
A positive income task tied to your recognized revenue account. This one takes that same dollar amount and moves it into revenue.
Those last two tasks fire together every time you perform a visit. One pulls the cash out of liability, the other drops it into income. If you’ve ever set up deferred revenue for a membership, this is the exact same pattern.
The Cancellation Setting People Overlook
The template also asks how you want to handle cancellations. You have three choices. Always create a charge/refund invoice. Never create one. Or give the office the option to create one.
My recommendation for most shops is the middle option. When a CSR cancels an active agreement, they get the choice to refund work that was paid for but not performed, or invoice for work that was done but not paid for. They’re not forced to do it, but the option is sitting right there.
The one time I’d pick “never” is if you have a dedicated accountant who handles all the cleanup. If the CSR cancels but shouldn’t touch the money side, “never” keeps them from making a mess. Otherwise, stick with the middle option.
Building the Agreement Itself
Creating an agreement is really creating a proposal. You build it out, send it, get it signed, and then activate it. Nothing actually lands on the customer’s record until you flip it to activated.
From a location, open the Service Agreements tab and create a new agreement. Name it, pick your template, pick the business unit, and hit create. That lands you on a seven-step screen where you’ll fill in the real content. Summary, account manager, sold-by, locations, contacts, equipment, scope of work, pricing, billing schedule, payment terms, and the preview you’ll send to the customer.
A few things worth calling out here.
The whole service agreement build is office-side only right now. Techs in the field can’t build these from the mobile app. If someone out in the field is supposed to be creating agreements, they need an office-side login. It’s free to add, you just have to grant it.
Equipment is optional but useful. If you tie specific units to the agreement, it’s clear what’s covered and what isn’t. If the customer has five rooftop units and only three are on the contract, put those three on and leave the others off.
Per-visit pricing is a toggle, not a default. Use it when you already know what each visit should cost, usually because you priced it in a spreadsheet. If you don’t use per-visit pricing, ServiceTitan will walk you through markups and surcharges, or you can enter a flat total agreement price.
Setting Visits So They Actually Land Right
The visit setup is where most people trip. When you add a visit, you set a visit window (the range you want the first one to land in) and a repeat pattern. Monthly, quarterly, “third Monday every three months,” whatever the contract calls for.
Click the preview button. Seriously. It shows you exactly which dates the visits will land on across the agreement term. If you had something weird happen with the first visit date, you’ll spot it immediately. I’ve watched people end up with five visits on a four-visit contract because they adjusted the pattern and didn’t re-check the preview.
When you’re entering quantities on services and materials, those numbers are per piece of equipment, not totals. If you’re replacing one filter on three units, your quantity is one, and then you check off all three pieces of equipment. ServiceTitan multiplies it out. If you type three in the quantity field and also check three units, you’ll get nine filters on the invoice.
Activating and Booking Visits
Once the proposal is signed, flip the status to activated. You’ll see a confirmation modal reminding you to review the agreement, because activation is one-way. You can deactivate, but you can’t move back to draft. If there’s a mistake, you’re starting over.
As soon as it’s activated, the visits populate as credits on the account. Now the booking job begins.
There are three places you can book service agreement visits:
From the service agreement dashboard on the location. Fine for one-offs.
From the call booking screen. ServiceTitan alerts you that there are unscheduled visits when you pull up the location. You attach the visit to the job as you book it.
From the Follow-Ups screen under Service Agreement Visits. This is the one I recommend for most shops most of the time.
The follow-up screen is where the booking actually gets operationalized. You can filter by date range, account manager, business unit, whatever. Then you check off a batch of visits and book them in bulk. If you assigned account managers during setup, each manager can filter to just their own book of business and work through it.
One nuance on the bulk booking modal. If you leave the start date blank, ServiceTitan schedules each visit for the first day of its visit window, or today if that date has passed. So if you’re checking off visits with wildly different windows, don’t force a start date. It’ll schedule them all on the same day.
And if someone books a job outside those three flows, the visit won’t attach automatically. You can still fix it. Open the job, scroll down to the Service Agreement Visits section, and attach the visit manually. If the job type or date doesn’t match the visit window, ServiceTitan will warn you, but it’ll let you attach anyway.
Billing: Manual Runs vs. Automatic Rules
Billing for service agreements lives under Accounting, in the Recurring Billing section in the upper right. You get three tabs. Create Run, Billing History, and Automatic Billing Rules.
Manual billing runs work like this. You pick a date range. Any agreement with a next billing date inside that range shows up. You can generate invoices only, or generate and charge if you have a card on file. The ones without a card show up in Billing History as “unattempted payment” so you can email them out from the Invoices screen.
My advice is to do manual runs for the first couple of months. You’ll catch whatever you set up wrong before it goes out at scale. Once you trust it, switch to automatic billing rules.
When you set up the automatic rule, there’s one thing you absolutely cannot forget. The Apply To Service Agreement Invoices checkbox. The screen uses “memberships” language in places, but you need that box checked or your service agreement invoices won’t be touched. I’d also give yourself a 24-hour buffer between when invoices generate and when they auto-charge, so you have a chance to scan for anything weird.
Reporting That Tells You if Agreements Are Actually Profitable
There are two datasets for service agreements: Service Agreements and Service Agreement Visits. A couple of canned reports come built in, like a general overview and a materials pull for visit POs. But the real value is in what you can build.
The report I’d build first is a profitability report off the Service Agreements dataset. Add estimated vs. actual labor cost, labor hours, material cost, total cost variance, and gross margin percent. Run it filtered to activated and auto-renewing agreements. If you want a wider view of the KPIs your office should be watching, I’ve got a separate post on ServiceTitan dashboards that pairs well with this.
Now you can filter gross margin percent to show anything under 40% and instantly see which contracts are bleeding. Or filter total cost variance greater than 5000 to find the agreements where your estimates are off by thousands. Those are the ones you need to reprice at renewal, or fix the scope so your techs stop running over budget on every job.
Other reports worth building: agreements activated last month, agreements auto-renewing this month, agreements canceled last month, agreements expiring this quarter. That’s your renewal pipeline sitting right there.
Bulk Editing (The Feature That Changed Everything)
This one’s newer. It came with the Spring 2026 release, and it’s a big deal. For years, service agreements had to be managed one at a time. Now you can do it in bulk from the Service Agreements Follow-Ups page.
Filter the list down to what you want to change. Auto-renewing agreements, agreements by a specific account manager, agreements with an end date in the next 60 days, whatever the job is. Check the ones you want, open the Actions dropdown, and pick what you’re doing.
The actions are worth knowing cold:
Change prices. Dollar amount or percent, with a checkbox to round to the nearest dollar. If you have a mix of fixed-price and markup-based agreements selected, ServiceTitan asks how to handle them. You can convert them all to fixed price with the new number, or keep the markup structure and update the markup values.
Change status. Useful for moving drafts to activated in bulk after you generate renewals.
Edit agreements. Bulk-change account manager, business unit, tags, auto-renew status, agreement name, template, document template, proposed start date, or client-specific pricing. The account manager change alone is worth the price of admission. When someone leaves the company, you’re not spending a week reassigning their book manually.
Renew agreements. Select the ones you want to renew, and ServiceTitan creates each renewal in draft status so you can still review pricing and scope before activating.
The error handling on these bulk actions is actually good. If something fails, you get specific errors you can click into. For example, if you try to renew an agreement that already has a renewal in progress, it tells you that instead of silently making a duplicate. That’s the kind of backstop you want when you’re editing 40 agreements at once.
Wrapping Up
Service agreements have a lot of moving parts, but once the template and pricebook tasks are set up correctly, the day-to-day work is actually pretty clean. Build a good template with proper deferred revenue, set visits carefully and use the preview button, book from the follow-up screen, set automatic billing rules with that service agreement box checked, and use the bulk editing tools when it’s time to renew or reprice.
If any piece of this feels like a lot, that’s normal. The first time you set up deferred revenue, it clicks about halfway through actually doing it. Stick with it.
If this was useful, the Blue Collar Nerd Ultimate ServiceTitan Guide goes a lot deeper. Searchable video lessons covering service agreements, memberships, pricebook setup, dispatch, reporting, and every other part of ServiceTitan, built role-by-role for everyone on your team. You can check it out here.