Load each customer into your gutter cleaning software as a recurring job with two visits a year, switch on a reminder about a week before each visit, group visits into route days by neighbourhood, and let AI draft the reminder wording and rebooking replies. Put an opt-out on every message and test it before the first send.
Software only helps if the data is right, so the first job is the dull one: a clean customer list with a reliable next-due date for every address. After that the three parts depend on each other. Reminders fill route days, route days decide which slots you can offer, and the slots decide what a rebooking reply can promise. Build them in that order, one patch at a time.
The customer's year in four messages
Twice-yearly work is a loop, so design the messages before the software settings. Each customer gets four moments, and only one of them is a visit reminder in the software's sense.
| Moment | Starting-point timing | Channel | What the customer can do |
|---|---|---|---|
| 1. Booking window | About six weeks before the target date | Text or email you send in a batch | Reply YES to keep the usual slot, or name a day |
| 2. Visit confirmed | When the visit is created | Text or email | Confirm or ask to move it |
| 3. Visit reminder | One day before, at a fixed time | Text, plus an earlier email | Confirm or reschedule |
| 4. Job done | Same day | Email with the proof pack | See the work; next visit pencilled in for a named month |
Here is what Jobber's own help says about moment 3, because it shows constraints most apps share. Visit reminders are on select plans, and Jobber's pricing page lists automated client reminders from the Connect plan upwards, not on Core. You can schedule two reminders per visit, either one text and one email or two of the same kind. Text templates are limited to 160 characters and cannot include emojis or URLs, which Jobber says helps stop phone carriers blocking its numbers. A text for a visit with no set time only goes out if you set a reminder time, and Jobber suggests a fixed time such as 9:00 the day before. Clients can confirm a text by replying Yes or C. If you move a visit, reminders tied to the old time are cancelled and new ones are scheduled. Text reminders are offered only in some countries, so check yours.
Moment 1 happens before a visit exists, so it comes from your own template or a bulk text, not from the reminder setting. That is why recurring jobs are the next step: they create the visits that reminders hang on. First, though, get the reminder wording right. Ask the assistant for templates that respect the limits:
Write two reminder texts for a gutter cleaning visit, each under 140 characters, no emojis,
no links. One for the day before, one confirming a booked visit. Use [business], [day] and
[window] as merge fields. Each must end with "STOP to opt out".
Sample output: "Gutter clean tomorrow, 9 to 12, with [business]. Reply C to confirm or call us to move it. STOP to opt out." (107 characters) and "[business] here: your autumn gutter clean is booked for [day], [window]. Reply C to confirm. STOP to opt out." (109 characters). The merge fields will lengthen both once real names go in, so leave headroom under 160. If your app does not reply to "C" the way Jobber does, change the wording to match whatever your app understands.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowThree ways to model two visits a year
Jobber's help describes the repeat choices for a recurring job as weekly, biweekly, monthly or a custom schedule, where custom can repeat weekly, monthly or annually. The page does not say whether an interval such as every six months exists, so do not assume it. There is also an "As needed" option that creates the job with no visits at all. That gives three workable set-ups for twice-yearly gutter work.
| Set-up | How it works | Suits | Catch |
|---|---|---|---|
| A. One job, custom schedule | One recurring job per customer on a custom repeat | Customers who always book the same two months | May not offer a six-month interval; test with a dummy customer |
| B. Two annual jobs per customer | One job for spring and one for autumn, each repeating yearly | Fixed-month customers who want separate invoices | Twice the records, so a price change is made twice |
| C. As needed job plus batch visits | The job holds no visits; you generate them twice a year in batches | Gutter work, where the date moves with leaf fall and weather | Nothing appears on the diary until you create it, so diarise the batch dates |
I would choose C. The right date moves with Leaf Week and the weather, and C lets you create visits patch by patch. Jobber's help describes a New Visits tool for these jobs: it shows recurring jobs on a map with filters (by tag, by description, by line item, or by jobs with no incomplete visits before a date) and can generate visits for up to 100 jobs at a time (help article updated July 2026). So tag each customer with a patch, such as patch-north or patch-east, filter by that tag, and generate that patch's visits in one go. With 240 customers that is three batches under the limit, or six if you go patch by patch.
In the recurring-job form, set invoicing to "After each visit is completed" so every clean produces an invoice reminder. Jobber also offers monthly, when the job closes, a custom schedule and "as needed, no reminders". A fixed price per invoicing period suits a monthly service, not a clean twice a year.
If you are importing a spreadsheet, Jobber's job import has a Repeating column, and As needed is the value to use for gutter work. Check the import's row limit and which users on your account can run it before you start, and import one patch first.
Before you commit, line the requirements up against your own app. This table shows what to look for and what Jobber's pages say, as of October 2026. Connect starts at $99 a month billed annually for one user, or $139 with no commitment, on its pricing page.
| Step | What to look for | What Jobber's pages say |
|---|---|---|
| Recurring work with no fixed date | An as-needed option and bulk visit creation | As needed repeat; New Visits tool, 100 jobs at a time |
| Client reminders | Two reminders, a fixed send time, reply to confirm | From Connect; two per visit; Yes or C to confirm |
| Route reordering | Reorders open visits across a day or week | Connect, Grow and Plus; reorders only visits with no set time, up to seven days, web admins only |
| Online booking | Customers pick from slots you allow | Listed on every plan, Core included |
| Photos on invoices | Customer can see before-and-after images | Listed on the pricing page; check which plan includes it |
| AI call and text answering | Takes rebooking calls, escalates urgent ones | Receptionist add-on, $29 a month with 30 conversations, then $0.79 each; included on Plus |
Another app may offer different tiers. Housecall Pro, for instance, keeps drive-time optimisation to its top Max plan, according to its own help article. So the useful question is never "which tool", only whether the app you already use can do each row, and at what plan.
Cleaning the customer list before it goes in
Messy lists are why recurring bookings fail. A duplicate customer gets two reminders, and a missing phone number gets none. Use an assistant to clean a copy of the list, never the original. If you use a consumer plan, strip names first: consumer ChatGPT and Claude plans have a model-training switch in privacy settings, while the business plans do not train on your content by default, according to their vendors.
Clean the customer table below. Rules:
- One row per address. Merge duplicates and tell me which rows you merged.
- Columns: address, house type, last clean (YYYY-MM), next due (last clean plus 6 months),
patch (use my patch list), contact preference, notes.
- Never guess. If a value is missing or ambiguous, write MISSING and say why.
- A note such as "no text" becomes contact preference: no texts.
MY PATCH LIST: [street: patch]
TABLE: [paste]
Three raw rows make a made-up before and after. The raw entries read: "elm rd 14 - 3 bed - did oct 25 - dog in garden"; "14 Elm Road, 3bed, last done 10/2025"; and "Mill Ln 7?, bungalow, spring 2025, no text pls".
| Address | House | Last clean | Next due | Patch | Contact | Flags from the assistant |
|---|---|---|---|---|---|---|
| 14 Elm Road | 3-bed | 2025-10 | 2026-04 | patch-north | Any | Rows 1 and 2 merged; "oct 25" read as October 2025, please confirm; dog in garden |
| Mill Lane, number uncertain | Bungalow | MISSING | MISSING | patch-east | No texts | "7?" is unclear; "spring 2025" gives no month |
Without the "never guess" rule, this prompt will happily fill the number as "7 Mill Lane" and read "spring 2025" as April. Both are inventions, and the rule is what stops them. Once last clean holds a real date, the sheet can compute the next visit with =EDATE(C2,6), which adds whole months. Spot-check one row in ten against your invoices, and do not import until the flags column is empty.
Route patches first, days second
A patch is a group of addresses close enough that driving between consecutive visits is short. Decide patches before dates, give each patch a weekday in each season window, and the diary starts to build itself. Two sums tell you whether the plan fits.
First, capacity. Take 240 customers on two visits a year: that is 240 visits per season. At six visits a day, 240 visits need 40 working days, which is eight weeks. Add a 15 percent buffer for rain and sickness and it is 46 days, a little over nine weeks. If your leaf-fall window is shorter than that, either widen the window, offer fewer slots, or add a second crew.
Second, driving. Say clustering cuts the average gap between visits from 14 minutes to 8. With five gaps in a six-visit day, that saves 30 minutes a day, or 20 hours across a 40-day season. At an assumed van-and-crew cost of $60 an hour, that is $1,200 a season. These are illustrative figures, so time your own gaps for a week before you believe them.
Jobber's route optimisation helps with the ordering inside a patch day, within limits: its help says it reorders only visits with no set time, for up to seven days, and only web admins can run it. So keep patch-day visits flexible and give customers a window in the message rather than a clock time on the visit. Without route optimisation, a free map link will do. Google Maps routes are limited to 10 locations including start and end, so six visits plus a start and an end make one link per patch day.
An assistant can propose the patches if you give it the streets and nothing else.
Group these streets into six patches of roughly 40 customers each so that driving between
streets in a patch is short. Use only the street names and area labels I give you. Do not
guess distances. If you cannot place a street, list it under UNPLACED.
Output: patch, streets, customer count.
STREETS: [street, area label, customers]
In one illustrative run it put Mill Lane and Mill Road in the same patch because the names matched, though they sit either side of a railway line. The assistant only knows what you told it, so check every patch on a map before you tag it. Then write the rain-day rule down: a washed-out day moves to the first free day in the same patch, and the app sends the customer a reschedule notice. In Jobber, moving a visit prompts you to notify the client and replaces the old reminders automatically.
Rebooking replies: AI drafts, you hold the diary
When the booking-window text goes out, the replies arrive in a rush: yeses, "can you do Thursday", "how much is it now", "we have moved". An assistant can sort and draft, but the diary stays yours. Give it three things: the reply, the customer's record and the free slots for that patch, pasted as a short list. Forbid any time that is not on the list.
Classify each customer reply as: confirm, reschedule, question, opt-out, complaint or other.
Then draft a reply of under 50 words. Offer only times from FREE SLOTS. Never promise a time
that is not listed and never quote a price that is not in the customer record. For an opt-out,
write one short line confirming that we will stop.
FREE SLOTS (patch-north): [list]
RECORD: [paste]
REPLY: [paste]
| Customer reply | Class | Illustrative draft |
|---|---|---|
| "Can we do Thursday instead? We are out until 1." | Reschedule | Thursday works. We have the 1 to 5 window on Thursday 12th. Reply C to confirm. STOP to opt out. |
| "How much is it now?" | Question | Your usual clean is $[price from the record]. Which suits you: Tuesday 10th or Thursday 12th? |
| "Please stop texting me." | Opt-out | Understood, we will not text you again. |
Two fixes are typical. If the record is missing from the prompt, the assistant answers the price question with the standard price rather than the customer's, so always paste it. And on an opt-out, a first draft often adds "If you change your mind, just reply", which invites exactly the contact the customer asked you to stop. Keep opt-out replies to one line.
If calls matter more than texts, an AI receptionist can take the rebooking calls. Jobber's Receptionist add-on is $29 a month with 30 conversations, then $0.79 each, and is included on Plus. Jobber says it can book jobs into your calendar using the online booking settings you have already configured, turns a message into a follow-up task, handles several calls at once, and can be set to pause at the conversation limit instead of paying overage. Forwarding from your existing number is set up with your phone provider, after a set number of rings or outside business hours, and callers should hear at the start that an AI is answering. Jobber set up with an AI receptionist for junk removal walks through the same add-on in a neighbouring trade.
Opt-outs, consent and quiet hours
There are two kinds of message here: service messages about a visit the customer booked, such as confirmations and reminders, and marketing messages such as plan offers. The rules for each differ between markets, so ask your messaging provider and a qualified adviser what applies to you. The habits below work either way.
- Record consent. Log the date, the source ("ticked on the booking form", "said yes on the doorstep") and the channel.
- End every text with the stop line, then test it. Text STOP to your own business number from a personal phone and see what the app does. Ask the provider how it handles the reply and whether the opt-out shows on the customer's record.
- Treat any clear refusal as an opt-out, including "please stop texting me", not only the keyword.
- Switch it off in the app. In Jobber, each client's settings include a switch for upcoming visit reminders, and their communication settings let you turn off other automated notifications. Labels change, so search the help centre if you cannot find them.
- Keep an opt-out list outside the app, so a later re-import cannot revive someone you promised to stop contacting.
- Set quiet hours you would accept on your own phone, and cap marketing messages at one a fortnight per customer.
A realistic mistake shows why the outside list matters. A customer texted STOP in the spring. In the autumn a fresh export from last year's spreadsheet was imported, and the booking-window text went to that customer again. The fix was a rule that every import is filtered against the opt-out list first, and an illustrative log line to make it easy: "14 Oct, 14 Elm Road, texts, replied 'please stop texting me', app toggle off, email still allowed".
The no-software version: a sheet, a calendar and a map
A one-van firm can run this loop for a season without paying for an app. You need a spreadsheet, a calendar and a map link, plus a weekly habit.
- The sheet. One row per customer: address, patch, last clean, next due (
=EDATE(D2,6)), contact preference and status. Filter by patch and by "due in the next 14 days". - The calendar. Google Calendar can import a CSV. Only two headers are required, Subject and Start Date, the headers must be in English, and its example dates are month first. Repeating events do not import as a series; they arrive as separate one-time events, so give every visit its own row.
- The map. One link per patch day, which fits inside Google Maps' limit of 10 locations including start and end.
- The habit. Every Monday, filter the sheet for the next two weeks, ask the assistant to draft that week's reminder texts and replies, and send them yourself from your phone.
This version has no automatic reminders, so the weekly habit is the system. It costs an hour a week and no subscription. If you want help with the spreadsheet formulas, Google Sheets AI prompts has patterns for filters and date maths. Round-based trades face the same problem, and window cleaning round software and AI rebooking and pest control route optimisation for quarterly customers compare how far software goes before a person has to step in.
Five numbers that show whether it is working
Run one patch of about 40 customers through the whole loop first, from booking window to job done, then import the other five once it holds. After a season, measure these. The figures below are illustrative.
| Measure | Last season | This season | How to count it |
|---|---|---|---|
| Customers who book again within the window | 58 in 100 | 71 in 100 | Booked visits divided by customers on last season's list |
| Same-day cancellations per 100 visits | 11 | 4 | Count from job status |
| Average minutes between visits on a patch day | 14 | 9 | Timestamps, or a stopwatch for one week |
| Reminders that get a reply | Not tracked | 62 in 100 | Replies divided by reminders sent |
| Opt-outs per 100 customers messaged | 1 | 2 | Your opt-out log |
Read the last row without alarm: a small rise in opt-outs can simply mean you are now honouring requests you used to miss. A jump after a wording change is different, and the fix is to put the old wording back. The first row is the one that pays. Use it to test whether the twice-yearly plan from eight spring and autumn campaigns for gutter cleaners is worth offering, and send the proof pack from photo proof and AI job summaries with moment 4, so the customer sees the work before the next window opens.
Questions about reminders and recurring gutter jobs
Can one recurring job repeat every six months?
Jobber's help says a custom schedule can repeat weekly, monthly or annually, and it does not say whether a six-month interval exists, so test it with a dummy customer. If it does not, use an As needed recurring job and generate visits in batches, or set up one annual job for spring and another for autumn.
Do I need a paid app for this?
Not to start. A spreadsheet with a next-due date, a calendar and a map link will carry a one-van firm for a season, as the spreadsheet section shows. A paid app earns its fee once reminders, route reordering and invoicing take more of your week than the monthly price, which starts at $99 a month billed annually for one user on Jobber's Connect plan.
How early should the first reminder go out?
There is no universal answer. As a starting point, send a booking-window message about six weeks before the target date, a confirmation when the visit is set, and a reminder the day before at a fixed time such as 9:00. Then read your own reply and cancellation numbers and move the dates to suit.
What if a customer opts out of texts?
Mark the record at once, stop sending texts, and ask whether email is acceptable. Treat any clear request as an opt-out, not only the word STOP. Keep a note of the date and channel, and test the stop reply with your own number before you rely on it.
Further reads
- Chimney Sweep Business Software With AI: Reminders and Online Booking — Another yearly-visit trade with reminders and online booking.
- Bin Cleaning Business: Route Pricing and Subscription Reminders With AI — Route pricing and subscription reminders for repeat rounds.
- AI Job Scheduling and Dispatch for Trades and Field Service Teams — The wider picture of AI scheduling for field teams.
- Software for Lawn Care Automation: Which AI Features Are Worth Paying For — Which AI features in field software are worth paying for.
- AI Service Plan Reminders for Heating and Cooling Customers — Service-plan reminders for heating and cooling customers.
- How to Reduce No-Shows With AI Reminders and Automatic Rebooking — Cut no-shows with reminders and automatic rebooking.
- How to Set Up Missed Call Text Back for a Service Business — Catch rebooking calls you miss on job days.
- Gutter Cleaning Flyers: Three Leaflet Versions Written and Tested With AI — Three leaflet headlines, matched streets, a code per version and a two-week scorecard: find out which gutter cleaning flyer really brings calls.
- Pest Control Reminders: Quarterly Visit Text and Email Templates With AI — A quarterly-visit sequence for pest control: when to send, filled-in texts and emails, reply rules and STOP wording, drafted with AI.
- Solar Panel Cleaning Business: Quote and Route Jobs With AI — A worked pricing sum by panel count and access class, plus where AI helps with quotes, route clustering and recurring-plan reminders.
- Can AI Help a Roof Cleaning Business? Photo Quotes and Safety Notes — Which roof cleaning jobs AI can take (replies, photo requests, captions, rebooks) and which safety checks must stay human.
- Can You Price Gutter Cleaning From Street View? What AI Gets Wrong — A worked gutter cleaning quote from imagery, the surcharges to add, and the cases where you must see the roof before you commit.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Jobber help articles (Create a Recurring Job; Create New Visits for Existing Recurring Jobs; Import Jobs; Assessment and Visit Reminders; Receptionist), Jobber pricing and Receptionist pages, Housecall Pro help (route optimisation), Google Calendar help (CSV import). Counts, times and costs in the examples are illustrative.