Platform · Campaigns

The money is in the follow-up. So we automated the follow-up.

Estimates that sit unanswered. Invoices that drift past due. Happy customers who'd leave a review if anyone asked. Campaigns watch the calendar and send the right message at the right moment, by email and text, written like you, without you. And not just one message. Every campaign can be a sequence: a first note, a different follow-up two days later, another the week after, as many as you need. The sequence stops itself the moment the customer acts.

Ready on day one

Four campaigns every service business needs, pre-built

They ship with your account, wired to your real data. Flip each one on when you're ready, nothing sends until you do.

Reputation

Review Request

The day after a job closes, completed and paid, the customer gets a direct link to your Google review page, by email and text. Every customer gets the same link, and the message invites anyone who wasn't happy to reply to you directly, so you catch problems without filtering who gets asked.

TimingFires the day after closeout · 90-day per-customer cooldown so repeat customers are never over-asked
Sales

Estimate Follow-up

Most quotes don't get answered the day they're sent, people sit on them. This campaign nudges customers whose estimate went out with no reply, mentioning the exact work they asked about, with the approval link one tap away.

TimingReaches estimates 3-14 days old · one nudge per customer · email + text
Collections

Payment Reminder

Polite, automatic, persistent, then it stops. Every reminder carries the live invoice link with Pay Now online checkout, so each nudge is also a payment opportunity. Most slow payers resolve themselves without you typing a word.

TimingStarts 14 days past due · repeats every 14 days · maximum 3 reminders, then stops
Bring them back

Win-back

A year after their last job, customers get a friendly we-miss-you note with your number and a reason to rebook. Last season's book becomes this season's schedule while you're out working.

Timing365 to 430 days after their last service · one message per customer per year

Beyond the built-ins

Build your own in five minutes

A campaign is a rule: when a customer matches, send this. Pick a trigger, set the timing, write the message once.

Haven't had service in X days Invoice overdue Flagged non-pay Estimate awaiting approval All past customers Upcoming scheduled job Recent closeout
  • Target precisely: all customers, residential only, or commercial only, and optionally narrow to people who had one specific past service
  • Time it: days after the trigger, an optional repeat interval, a hard max-sends-per-customer stop, and run-month pinning so a spring promo only runs in spring
  • Both channels or one: email, SMS, or both, texting rides the Texting module's monthly segment allowance
  • Stack messages: day 0, day 2, day 9, each with its own name and its own copy, unlimited steps per campaign
  • Start finished: six pre-written sequences drop in complete, from seasonal specials to referral asks, ready to edit
The classic that pays for the whole module: "Haven't had service in 350 days" + a friendly we-miss-you message = last year's customers rebooking themselves every single week.
What you write once
Hi {{first_name}}, it's been about a year since your {{service}} with {{business_name}}. Want us to get you back on the schedule? Reply here or call {{phone}}.
▼ what each customer receives
Hi Sarah, it's been about a year since your Fall Cleanup with Streamline Property Care. Want us to get you back on the schedule? Reply here or call (859) 555-0147.

New

One campaign. A whole conversation.

A campaign isn't limited to one message anymore. Stack as many as you want. Message one goes out the day the campaign matches. A different follow-up goes out days later, in different words, so it reads like a person circling back and not a robot repeating itself.

  • Every message has a name and a day. "The offer" on day one. "Last chance" a week later. You choose the gaps, the words, and the channel for each step.
  • Email and text on every step. Each message carries its own text and its own branded email. Leave one blank and that step skips the channel.
  • Follow-ups stop themselves. The moment the customer pays, books, approves the estimate, or taps your link, the rest of the sequence cancels. Nobody hears "just checking in" after they already said yes.
  • Drag to reorder. The campaigns page is a clean stack of cards. Drag the ones you care about to the top, open one at a time, edit in place.
A two-message campaign sequence open in PressureWashingOS with named steps, timing, text message, and branded email

Start finished

Six more campaigns, already written

Starting a campaign from a blank box is where most owners give up. So we removed the blank box. Pick what the campaign should do and the whole sequence appears: named messages, day gaps, texts, and branded emails that use your business name, your colors, and your logo. Read it, tweak a word if you want, save.

Remind before a job Seasonal special + last-chance follow-up Ask for referrals Six-month check-in Collect non-pay accounts Message past customers
The new-campaign picker with six pre-written sequences

Answer first Campaigns module

A brand-new lead gets a text back in seconds

Most jobs go to whoever answers first, not whoever quotes lowest. The moment a lead lands with a phone number, Instant Lead Reply texts them back as you, so you've already answered while you're still up the ladder.

  • Write the message once. A ready-made template ships with it, and {first_name} and {business} fill in per lead so every reply reads personal.
  • Every lead path is covered: your website's quote form, the site chatbot, and leads created from email replies all trigger the same text
  • Their answer lands in your Inbox on the customer's own thread, so the conversation just continues when you're back on the ground
  • Off by default, one checkbox to turn on, and a running count shows how many replies it has sent for you
Sending takes the Texting module with an active number, replies go out from your own dedicated business number, never a shared one.
The Instant lead reply card on the Leads page: one toggle, an editable message template, and a running sent count
The whole feature: one toggle, one message, a running count

Route density Neighborhood Offers · Premium

Book the houses next door to tomorrow's jobs

The cheapest job to serve is one street over from a job you already have. Each evening, Neighborhood Offers looks at tomorrow's route, finds past customers who live near one of the stops, and texts a small, capped batch of them a friendly offer to swing by while the truck is already close.

The Neighborhood offers card on the Campaigns page: on toggle, radius and nightly cap dials, and the message preview
Two dials and a toggle, the nightly run does the rest
  • You set the dials: how close to a stop counts (half a mile to 5 miles) and how many texts go out per night (3, 5, or 10, hard cap)
  • Past customers only, people who already know your work, never cold numbers
  • Polite by design: a 60-day cooldown after a delivered offer, reply-STOP opt-outs honored automatically, and nothing sends on nights with no route
  • See the exact text before you turn it on, and a counter shows offers sent over the last 30 days
Sending takes the Texting module with an active number. One extra stop a month pays for this module several times over.

Repeat revenue Maintenance Plans · Pro and up

Next year's work, already on the schedule

A plan is one sentence: this customer gets this service every so many months. When the next round comes due, the CRM creates the job on your schedule, pings you, and can text the customer a heads-up, so repeat work books itself instead of waiting for someone to remember.

  • Set it once: pick the customer, the service, the price, and how often it repeats, every month up to every 24
  • The job appears ahead of time, 1 week to 1 month before it's due, your call, so there's room to schedule around it
  • You get a bell, they can get a text. The customer heads-up says the day and invites a reply to change it (customer texts take the Texting module)
  • Pause or delete a plan anytime, jobs it already created stay on the schedule
Every plan is a job you don't have to re-sell. A house wash every 12 months, a roof treatment every 24, gutters every spring: one customer becomes steady, scheduled revenue.
The Plans page listing four repeating service plans with next due dates, a due-soon badge, and pause controls
Four plans, their next due dates, and who gets a heads-up text

Deposits Online Payments module

Approved estimates ask for a deposit on their own

An approval is a promise. A deposit is a booking. With deposits on, the moment a customer approves an estimate, the same page asks them to put money down through your own Square checkout.

Customer taps ApproveOn the estimate you sent them, from their phone, no login.
The deposit ask appearsYour choice of a percent (10 to 50) or a flat dollar amount, computed from the estimate total.
Money lands in your SquareThe invoice records the deposit as paid, and the balance collects at the end like any other job.
Approval never blocks on payment. The deposit is a skippable next step, so a customer who won't pay by card can still approve the work and you still get the job. Takes the Online Payments module with Square connected.

Trust the engine

Built so you can't embarrass yourself

Automated messaging only works if you trust it completely. Three layers make sure you do.

Campaigns page showing the outgoing forecast, money-maker campaigns switched on, and opens and clicks stats
Live campaigns, forecast, sends, opens, clicks, per campaign
  • Preview Recipients dry-runs any campaign and shows exactly who would get it right now, who matched but got filtered out and why, and a fully rendered sample using real data
  • Send Test to Me delivers the message to your own phone and email first
  • The Outgoing Forecast shows what the engine will try to send today and tomorrow, by campaign, before anything goes out
  • Paced sending: the engine runs hourly from 8am-6pm Eastern, never at midnight, sending a slice of your daily cap each run so messages spread naturally across the day
  • Receipts for everything: per-campaign totals, a send log for every single message, and opens + clicks feeds across all campaigns

Where replies land

Every reply lands in a real inbox

When a customer answers a campaign, a text, or an email, the whole conversation is waiting in one place, organized like the email app you already know how to use.

  • Folders with live counts: Inbox, Starred, Snoozed, Sent, Drafts, Updates, Spam, and Archived, so vendor noise never buries a customer
  • Drafts save themselves. Start a reply between stops, finish it at the kitchen table, nothing lost in between.
  • Snooze a thread until you can deal with it. It comes back on its own, and it wakes up early if the customer writes again.
  • Whole-thread actions: star, archive, mark unread, or clean up a batch of conversations in one pass
  • The estimate rides along: the customer's latest estimate or invoice sits pinned at the top of the conversation, one tap away while you talk
PressureWashingOS inbox with folders and live counts, unread conversations, starred threads, and text and email messages together
Texts and emails together, with folders, stars, unread counts, and drafts

Compliance on autopilot

Opt-outs, caps, and carrier rules, handled

  • Every email gets an unsubscribe link automatically; every text carries reply-STOP wording
  • Opt-outs land on a do-not-send list that every campaign respects from then on, removable if a customer asks to come back, and you can exclude one customer from one campaign without losing them from the rest
  • Consent carries through: when a website lead checks the text-consent box, that consent follows them onto the customer record
  • Failure handling: after three failed sends to the same address, the engine stops retrying it and the log shows the error
  • Carrier registration built in: SMS campaigns require A2P 10DLC registration, ours is a guided wizard inside the app, not a support ticket
Daily cap, monthly allowance, dollar ceiling. The default 20-messages-a-day cap paces your sends. Your monthly email allowance and text-segment bucket (500 segments a month with the Texting module) set the ceiling, and text overage is metered at $0.04 a segment under a dollar cap you control, default $50, settable to $0.
This replaces the review-automation subscription. Tools like NiceJob and Podium charge real money to do one thing campaigns already do here, ask for the review after the job, except ours also knows when the job actually closed, because it closed in the same system.

Questions

About campaigns

When exactly does the review request go out? +
The day after a job is closed, meaning completed and paid. Each customer can only receive it once every 90 days, so repeat customers are never over-asked. Every customer gets the same direct Google link, and the message invites anyone who had a problem to reply to you directly.
Do I write the messages? +
Templates ship ready for review requests, estimate follow-ups, payment reminders, and seasonal check-ins. Edit any of them, or write your own with merge tokens, first name, service, amount due, review link, so every customer gets a personal copy.
What if a campaign matches someone it shouldn't? +
Run Preview Recipients first: it dry-runs the campaign and lists exactly who would receive it, who got filtered out and why, with a rendered sample. You can also exclude a specific customer from a specific campaign.
Does this count against my text allowance? +
Yes, campaign texts use the Texting module's monthly segment bucket like every outbound text. Keep campaign messages short and skip the emoji and the bucket goes far. Email campaigns draw on a separate monthly email allowance.
Can it stop chasing someone who paid? +
Automatically. Campaigns evaluate their rule at every run, the moment an invoice is paid or an estimate is approved, that customer no longer matches and the sequence stops on its own.
What do the texting autopilots need to run? +
Instant Lead Reply, Neighborhood Offers, and maintenance-plan customer texts all send through the Texting module's dedicated business number, so texting has to be set up with an active number first. The parts that don't text, plan scheduling, bell notifications, the deposit ask, work without it.
Can neighbors opt out of the nightly offers? +
Yes. Every offer carries reply-STOP wording, opt-outs land on the same do-not-send list every campaign respects, and a customer who received an offer won't get another for 60 days.

Keep exploring

Set the rules once. Collect forever.

Reviews asked, estimates chased, invoices reminded, starting the day you flip them on.

Start with PressureWashingOS