Problem
Trades businesses lose time every month to post-job admin. Logging completed calls, invoicing customers, requesting reviews, notifying the office, and identifying upsell opportunities. At volume, it is entirely repeatable and entirely manual.
Solution
An n8n workflow that fires the moment a job is marked complete in ServiceTitan or Jobber. It calculates the invoice, emails the customer, logs everything to Google Sheets, requests a review, posts a team notification to Slack, and flags high-value jobs for upsell.
Demo
Webhook trigger receives the job completion payload from ServiceTitan or Jobber. A Code node parses and validates all fields, then calculates the final invoice total: (labor hours × rate) + materials + 15% materials markup. An IF node branches on emergency status. Emergency jobs get an URGENT: subject prefix routed through a separate path. Both paths merge into a Gmail node that sends the customer a professional line-item invoice. A Google Sheets append node logs all 11 job fields to the master tracker. A 2-minute Wait node simulates post-job cooldown before a second Gmail node sends a warm, technician-signed review request. A second IF node checks job total against a $500 threshold: jobs above it are flagged as upsell opportunities with a maintenance contract recommendation. A Slack HTTP Request node posts a real-time completion summary to the team channel with emergency and upsell indicators. An Error Trigger node catches any failure and routes to an alert node. Key engineering: Gmail, Google Sheets, and Wait nodes all replace $json with their API response. Every downstream node references data explicitly from the pre-branch node using $('Build Invoice Summary').item.json.field to avoid data loss across the pipeline.
Tech Stack
- n8n
- Webhooks
- Gmail API
- Google Sheets API
- Slack
- JavaScript
- Conditional Logic
- Wait nodes