AXIS LABS
Proposal · August 4, 2026 Prepared by Jason For the GoHighLevel home services build

Every completed job.
Every unsold quote. Followed up.

Two sequences that run on their own, wired into fields and pipelines that actually track the money they bring back. A job gets marked complete and the maintenance offer goes out. A quote sits unsold and it gets chased on a schedule instead of on somebody's memory. Both stop the second the customer buys, both tag the contact, both write revenue back to the dashboard, and the whole thing packages into a snapshot that drops cleanly into the next sub-account.

2
Sequences: service follow up and unsold quote
8
Custom fields including calculated revenue total
12 days
Build to snapshot tested in a clean sub-account
1
Snapshot that redeploys into every future account
The Money On The Table

Three leaks every home services shop has.

Your spec already names the fix for all three, which tells me you have watched this happen. Here is the version I would say out loud to the owner.

🔧

The completed job nobody follows

The tech packs up, the invoice clears, and nobody ever mentions a maintenance plan. That customer already trusts you and already let you into their house, which makes it the cheapest sale in the business and the one most often skipped.

📄

Quotes go quiet and stay quiet

A quote that does not close on the day is usually not dead, just unattended. Without a sequence, follow up depends on whoever remembers, which means it stops entirely in busy season when the money matters most.

📉

Recovered revenue is invisible

Even when follow up does happen, nothing ties the recovered dollars back to the sequence that earned them. Without that number on a dashboard, nobody can tell whether the system is worth keeping or worth expanding.

The Build

Two sequences. One snapshot. Real numbers.

The foundation goes in first, because workflows built before the data model is right have to be rebuilt: all eight custom fields, with Recovered Revenue Total configured as a calculated field rather than something anyone updates by hand, plus the Maintenance Plan and Sales Quote pipelines with automatic stage movement so nobody is dragging cards. Workflow A fires when a job is marked complete, checks whether the customer already holds a maintenance plan before sending anything, then runs the offer out by SMS and email with follow ups at day 3 and day 7, tagging Maintenance Offer Sent and writing plan revenue back to the contact. Workflow B triggers on a quote sitting Open, Pending, or Not Sold and runs SMS and email reminders with an SMS at 48 hours, an email at day 5, and a final SMS at day 10, tagging Quote Follow Up and capturing quote revenue on close. Both sequences hard stop the moment the customer buys, which sounds obvious and is the single most common thing broken in inherited GHL builds, so both get tested with seeded contacts through every branch including the stop paths. The maintenance plan landing page carries the Join Now button through to Stripe checkout, and payment success is what fires the tag and the revenue capture, so the dashboard number comes from money actually collected rather than from a stage somebody moved manually. Then the whole system, fields, pipelines, workflows, templates, page, and dashboard, gets packaged as a snapshot and deployed into a clean test sub-account to prove it lands correctly before you ever use it on a real client.

Services and Deliverables

What you get. Phase by phase.

Five phases across twelve working days, mapped one to one against sections A through H of your spec. Each phase is a milestone you approve before the next one starts.

🗂️
Phase 1 · Days 1 to 2 · Spec C and D
Fields and Pipelines
  • All eight custom fields built: job type, plan status, quote status, technician, completion date, both revenue fields
  • Recovered Revenue Total configured as a calculated field rather than a number anyone maintains by hand
  • Maintenance Plan and Sales Quote pipelines built with stages mapped to the real job lifecycle
  • Automatic stage movement wired so contacts advance on trigger instead of on someone dragging a card
🔧
Phase 2 · Days 3 to 5 · Spec A
Repair and Service Follow Up
  • Triggers on job marked complete, with a maintenance plan check gating everything downstream
  • SMS and email offer out immediately, follow up SMS at day 3, follow up email at day 7
  • Hard stop on plan purchase so a paying customer never gets chased for something they bought
  • Maintenance Offer Sent tag applied and plan revenue written back to the contact record
📄
Phase 3 · Days 6 to 8 · Spec B
Unsold Quote Follow Up
  • Triggers on quote status Open, Pending, or Not Sold with the same purchase stop discipline
  • SMS and email reminders, then SMS at 48 hours, email at day 5, and a final SMS at day 10
  • Quote Follow Up tag applied and quote revenue captured when the quote closes
  • Both workflows tested with seeded contacts through every branch, stop paths included
💳
Phase 4 · Days 9 to 10 · Spec E and F
Landing Page, Stripe, Templates
  • Maintenance plan landing page built in GoHighLevel with the Join Now call to action
  • Stripe checkout connected, with payment success firing the tag and the revenue capture
  • SMS and email templates built as placeholders with merge fields wired for your wording later
  • Payment path tested end to end so a real purchase moves the pipeline and updates the dashboard
📊
Phase 5 · Days 11 to 12 · Spec G and H
Dashboard Reporting and Snapshot Packaging
  • Dashboard built for offers sent, plans sold, quote follow ups, quotes recovered, both revenue lines, total recovered, and conversion rates
  • Entire system packaged as a snapshot and deployed into a clean test sub-account to prove it lands correctly
  • Deployment checklist naming exactly what reconnects per sub-account: Stripe, phone number, sending domain
  • Loom walkthrough and written documentation so you can deploy and adjust the snapshot without me
Timeline and Milestone Plan

Twelve working days. Four milestones.

You asked for both a milestone plan and an estimated timeline, so they are the same thing here. Each milestone is a working deliverable you approve before the next begins. Click any one to see what it contains.

Approved before milestone 2 starts
  • Eight custom fields built and visible on the contact record
  • Recovered Revenue Total calculating automatically from both revenue fields
  • Maintenance Plan and Sales Quote pipelines built with stages agreed against your job lifecycle
  • Automatic stage movement demonstrated on a test contact
Approved before milestone 3 starts
  • Workflow A live: job complete trigger, plan check, offer, day 3 SMS, day 7 email
  • Workflow B live: quote status trigger, reminders, 48 hour SMS, day 5 email, day 10 final SMS
  • Both tags applying and both revenue fields capturing on close
  • Every branch walked with seeded test contacts, including both purchase stop paths
Approved before milestone 4 starts
  • Maintenance plan landing page built with the Join Now call to action
  • Stripe checkout connected and a live test payment completed end to end
  • Tag application and revenue capture confirmed firing on payment success
  • SMS and email templates in place as placeholders with merge fields wired
Final approval and handoff
  • Dashboard reporting offers sent, plans sold, follow ups, recoveries, both revenue lines, total, and conversion rates
  • Full system packaged as a reusable snapshot
  • Snapshot deployed into a clean test sub-account and verified working, not just exported
  • Deployment checklist, written documentation, and Loom walkthrough handed over
Next Step

Let's walk it inside GoHighLevel.

A 30 minute call where I share my screen inside a GoHighLevel account and build a piece of this live: the job complete trigger with the maintenance plan check sitting in front of it, which is the exact branch most builds get wrong. Then we confirm your stage names and job lifecycle, because those drive the pipelines and I would rather match your language than impose mine.