// Plumbing

Plumbed Right: ServiceM8 Job Archive

5,000+ completed jobs being archived into a searchable Google Drive, automatically
AutomationSystems Integration

// THE BRIEF

What they came to us for

Plumbed Right had years of completed jobs locked inside ServiceM8 job cards: work descriptions, internal notes, and just under 19,500 photos and videos of finished work. Finding anything meant opening ServiceM8 and digging through cards one at a time, and the business had no long-term archive it actually owned. They asked us to backfill every historical completed job into Google Drive, archive every new one automatically, keep the photos and videos as original files, and leave the invoices, quotes and PDFs out of it.

Google Drive file listing showing job documents, photos and videos, each filename prefixed with a ServiceM8 job number.
The Plumbed Right job archive in Google Drive: every file named by job number.

// WHAT WE DID

The build

The platform

We built the system on self-hosted n8n running in Docker on infrastructure we manage. No per-task automation fees, and the archive lands in a Google Shared Drive that belongs to Plumbed Right, not to a platform.

Working through the backlog

Four workflows share the job. A temporary backlog importer runs every 10 minutes, pulls the full list of jobs with status Completed, and processes the next batch of 10 from where it left off. It waits for each batch to finish before moving its bookmark, so a failed run retries the same jobs instead of skipping them.

Catching every new job

A permanent watcher runs every 15 minutes and picks up newly completed jobs. It checks from its last successful run minus a five-minute overlap, which means a job near the boundary can be detected twice on purpose. The archiver's filename checks make the second pass harmless.

One archiver does the work

Both schedules call one shared archiver workflow. Per job, it confirms the job is Completed, builds a Google Doc of every job field plus the full internal note history, and copies the photos and videos as original files. PDFs, invoices and quotes are filtered out before download, so the paperwork never touches the archive.

One flat, searchable archive

The archive is one flat folder with no subfolders. Every filename starts with the ServiceM8 job number, so typing a job number into Drive search returns everything for that job in one hit. Two real examples:

  • 111978 - Job Details and Notes
  • 111978 - a64a3ae7 - driveway-before.jpg

Three layers of duplicate protection

Duplicate prevention runs in three layers: progress bookmarks that only advance after success, exact filename checks before any upload, and a daily 3 am cleanup that moves any newer exact duplicate to recoverable Drive trash. The cleanup's first full audit scanned 1,162 archive files and found zero duplicates.

Verified live before launch

We tested it on live data before switching it on: 10 completed jobs produced 10 job-detail Docs and 37 media files (28 photos, 9 videos), with all 15 PDFs correctly excluded, in 6 minutes 19 seconds. The backfill is now processing at a target of around 1,440 jobs per day, and the watcher archives new completed jobs within 15 minutes.

// EVERYTHING WE SHIPPED

What they got

Archiving system

  • Self-hosted n8n instance (Docker)
  • Historical backlog importer (temporary, every 10 minutes)
  • New completed job watcher (permanent, every 15 minutes)
  • Shared single-job archiver workflow

Archive design

  • Flat Google Shared Drive archive, searchable by job number
  • One Google Doc per job: details plus internal notes
  • Photos and videos copied as original files
  • Invoices, quotes and PDFs excluded automatically

Safety and reliability

  • Three-layer duplicate prevention
  • Daily duplicate cleanup to recoverable Drive trash
  • Retry-safe design: reruns skip existing files
  • Read-only ServiceM8 access, so the automation can never change a job

// UNDER THE HOOD

The four workflows, and the backfill running

n8n workflow canvas of the historical backlog import, showing the schedule trigger, ServiceM8 job query, batch selection, per-job archiving and progress step.
The backlog importer takes the next 10 completed jobs every 10 minutes and only advances its bookmark after the whole batch succeeds.
n8n workflow canvas of the new completed job watcher, showing the 15-minute schedule, completion window, job query and cursor save step.
The watcher checks ServiceM8 every 15 minutes with a five-minute overlap, so nothing near the boundary is ever missed.
n8n workflow canvas of the single job archiver, showing the job fetch, notes and attachments branches, filename checks and Google Drive upload nodes.
The shared archiver builds the job Doc on one branch and filters, checks and uploads photos and videos on the other.
n8n workflow canvas of the daily duplicate cleanup, showing the 3 am trigger, archive file listing, duplicate grouping and trash step.
The nightly cleanup recognises only filenames the automation created and moves newer exact duplicates to recoverable Drive trash.
The archiver workflow mid-backfill, with a sidebar of succeeded execution runs and green ticks on every completed step.
The backfill running live on 18 August 2026: a stream of succeeded runs in the sidebar, one job archived at a time.
5,000+ completed jobs queued for the archive
19,334 photos and videos catalogued for backup
15,367 PDFs excluded to keep the archive clean

Counts as at 18 August 2026. The historical backfill is live and processing; new completed jobs archive automatically within 15 minutes.

// SERVICES USED

What went into this build

AutomationSystems Integration

// READY WHEN YOU ARE

Let's get your phone ringing

Tell us about your business and the jobs you want more of. We'll come back with a plan and a price. No pressure, no jargon.

Get a quote