Construction & Trades Job Completion Automation

n8n workflow that fires the moment a job is marked complete in ServiceTitan or Jobber — automatically invoicing the customer, logging to Google Sheets, requesting a review, notifying the team on Slack, and flagging upsell opportunities. Zero manual post-job work.

n8nWebhooksGmail APIGoogle Sheets APISlackServiceTitanJobberConditional Logic

Overview

A webhook-triggered n8n automation built for plumbing, HVAC, electrical, and general contracting companies using ServiceTitan or Jobber. The moment a technician marks a job complete, the workflow handles every post-job task automatically: calculating the invoice with labor and materials markup, emailing the customer a professional invoice, logging the job to a master Google Sheets tracker, sending a personalized review request, posting a team notification to Slack, and flagging high-value jobs for maintenance contract upsell. For a shop running 50+ jobs per month, this eliminates 12–16 hours of monthly admin work that was previously done manually after every call.

Problem

Trades businesses lose hours every week to post-job admin that happens after every single completed call: logging it, invoicing the customer, following up for a review, notifying the office, and identifying upsell opportunities. In ServiceTitan and Jobber shops, this is typically done manually — the technician completes the job, the office gets notified by text, someone logs it in a spreadsheet, someone else sends the invoice, and review requests might get sent or might not. At 50 jobs per month, that's 12–16 hours of repeatable, automatable work.

Approach

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 challenge: Gmail, Google Sheets, and Wait nodes all consume `$json` and do not pass original workflow data forward. Every downstream node references data explicitly from the pre-branch node using `$('Build Invoice Summary').item.json.field` — discovered and documented as a reusable pattern for all future n8n builds with external API nodes.

Tech Stack

n8nWebhooks (ServiceTitan/Jobber)Gmail OAuth2 APIGoogle Sheets APISlack Incoming WebhooksJavaScript (Code nodes)Conditional Logic (IF nodes)Wait nodes

Results

3/3 test scenarios passing end-to-end with live integrations: standard plumbing ($290.63, no upsell), HVAC installation ($2,547.50, upsell flag triggered), emergency pipe burst ($624.75, URGENT prefix + upsell flag). All outputs firing in production: Gmail invoice and review request delivered, Google Sheets row appended with all 11 columns, Slack notification posted with job summary and conditional indicators. Workflow completes in ~8–10 seconds per job. Eliminates 15–20 minutes of post-job manual work per completed call — at 50 jobs/month, that's 12–16 hours recovered monthly. Designed for ServiceTitan and Jobber shops in plumbing, HVAC, electrical, and general contracting — the exact stack Opticfy targets in the NYC construction and skilled trades market.