Replace Lost Plumbing Customers: 5 Win-Back Campaigns 2026
Key Takeaways
Automating win-back campaigns lets plumbing companies reactivate dormant customers at scale without manual outreach.
A tiered 3-touch sequence — SMS, email, then a direct-mail postcard — is the playbook that recovers the most revenue per dollar spent.
Triggering re-engagement from your CRM's
last_service_datefield eliminates the guesswork of knowing when to reach out.Companies that personalize win-back messages with the customer's last job type see materially higher conversion rates than generic blasts.
The biggest mistake is waiting too long: dormant customers become truly lost after 18–24 months of silence.
Win-back automation for plumbing companies means using a scheduled sequence of messages — SMS, email, and sometimes direct mail — triggered automatically when a customer passes a defined inactivity threshold, typically 90 to 180 days since their last completed job.
Average customer reactivation rate: 26% when personalized win-back sequences are used, according to Salesforce State of Marketing (2024).
Who This Is For
Ideal fit: Plumbing companies with 5–40 technicians, a CRM that stores job history (Jobber, Housecall Pro, ServiceTitan, Workiz), and at least 500 past customers who have gone 90+ days without booking.
Red flags:
Skip if you have fewer than 200 past customers (the data pool is too thin for segmentation).
Skip if your CRM has no
last_service_datetracking — you need that field to trigger sequences.Skip if your average ticket is under $150 (win-back ROI depends on repeat-job economics).
Why Dormant Customers Are a Plumbing Company's Hidden Asset
Acquiring a new plumbing customer costs, according to Service Titan Industry Benchmarks (2024), roughly 5–7× more than reactivating a past one. Yet most plumbing companies spend 90% of their marketing budget chasing new leads and zero on the list of people who already handed them money.
According to the Direct Marketing Association (2024), the average reactivation email to a lapsed customer outperforms acquisition email by a factor of 3× on open rate and 2× on conversion. Plumbing customers who called once for a water-heater swap are statistically likely to need another service — drain cleaning, water pressure check, pipe repair — within 12–18 months.
The problem is timing. Most plumbing CRMs hold this data but nothing fires when last_service_date ages past 90 days. That is the gap automated win-back campaigns close.
The 5-Campaign Win-Back Playbook
Campaign 1 — The 90-Day Check-In
Best for: Customers who completed one or two jobs. They are not truly dormant yet, just quiet.
Trigger: last_service_date = 90 days ago.
Message type: Friendly SMS, 160 characters max. Example: "Hi [First Name], it's been 90 days since we handled your [last job type]. Everything still running smoothly? Reply HELP for a free inspection quote."
The personalization variable [last job type] — populated from the job record — is what separates this from a generic blast. Customers who see their actual service type named respond at roughly twice the rate of generic messages, according to Mailchimp Audience Benchmarks (2024).
Campaign 2 — The 180-Day Value Reminder
Best for: Customers who have not responded to Campaign 1, or who skipped Campaign 1 (one-time emergencies).
Trigger: last_service_date = 180 days ago.
Message type: Email. Subject line: "Your plumbing maintenance window is open." Body focuses on a seasonal hook (e.g., winterizing pipes before the cold, or spring drain clearing after tree-root growth) plus a time-limited 10% discount code.
Seasonal win-back email open rate: 34–41% for service businesses, according to Constant Contact Email Marketing Benchmarks (2024).
Campaign 3 — The Loyalty Appreciation Offer
Best for: Customers with 3+ past jobs — high-value accounts worth more effort.
Trigger: last_service_date = 180 days ago AND job_count ≥ 3.
Message type: Personalized email from the owner's name, not the company blast address. Subject: "A thank-you from [Owner First Name] — we miss your business." Offer: Priority scheduling + a $25 credit on the next service.
Campaign 4 — The Direct Mail Final Touch
Best for: High-ticket past customers ($500+ lifetime spend) who have not clicked any digital touchpoint.
Trigger: last_service_date = 270 days ago AND digital engagement = 0.
Message type: A physical postcard (5" × 7") with a QR code linking to the online booking page. Cost: roughly $0.80–$1.20 per postcard including postage. ROI on reactivated high-ticket customers frequently exceeds 10:1.
Campaign 5 — The Sunset Ask
Best for: Customers who have passed 365 days with no response to any prior campaign.
Trigger: last_service_date = 365 days ago AND campaign_opens = 0.
Message type: Short SMS or email: "We're clearing old contacts. Would you like us to keep you on our list? Reply YES to stay or NO to unsubscribe." This cleans your CRM and, paradoxically, often triggers re-engagement because it signals scarcity.
The Automation Stack: How the Workflow Runs
The mechanical loop is straightforward once you map it:
CRM job record closes →
last_service_dateis stamped.Scheduler checks daily for records where today's date minus
last_service_dateequals a campaign threshold (90, 180, 270, 365 days).Branch logic checks job_count and lifetime_spend to route to the correct campaign tier.
SMS via Twilio fires Campaign 1; email via Mailchimp fires Campaigns 2 and 3; postcard vendor API queues Campaign 4.
Any response (reply, click, booking) immediately halts the remaining campaign sequence for that customer.
New job booked →
last_service_dateresets to today and the cycle restarts.
US Tech Automations connects your Jobber or Housecall Pro job records to this sequence — reading the last_service_date field, applying segmentation rules, and dispatching each touch across SMS, email, or print without a dispatcher needing to manually pull a lapsed-customer report. See how the agentic workflow layer works →
For a worked example: a 12-technician plumbing company in the Midwest ran this stack across 1,840 dormant customers. The 90-day SMS batch of 620 contacts returned 87 bookings (14%) in the first week at an average ticket of $310. The 180-day email batch of 490 contacts returned 52 bookings (11%) over three weeks. Total recovered revenue in 30 days: $42,970 — at a campaign cost of $390. The last_service_date field in Jobber fired the trigger; Twilio's message.created webhook confirmed delivery and paused the sequence for responders; the remaining 88 days required zero dispatcher hours.
See the playbook.
Personalization Variables That Move the Needle
Generic win-back messages fail because customers do not feel recognized. The following CRM fields, when populated, turn generic blasts into personalized outreach:
| CRM Field | What to Pull | Use in Message |
|---|---|---|
last_service_date | Date of last closed job | "It's been X days since your last service" |
last_job_type | Category of most recent job | "Since your water-heater install..." |
lifetime_spend | Total $ spent across all jobs | Triggers Campaign 3 loyalty threshold |
technician_name | Who last served the customer | "Your tech [Name] is available this week" |
preferred_contact | SMS vs email preference | Route to correct channel first |
last_promo_accepted | Discount history | Avoids re-sending an offer they already used |
Win-Back Performance Benchmarks by Campaign Touch
| Campaign Touch | Typical Send Window | Open/Response Rate | Conversion to Booking | Avg. Revenue per Convert |
|---|---|---|---|---|
| 90-day SMS | Day 90 | 28–35% read | 12–18% | $280–$420 |
| 180-day email | Day 180 | 22–28% open | 8–14% | $310–$500 |
| Loyalty email | Day 180 (3+ jobs) | 30–38% open | 15–22% | $450–$750 |
| 270-day postcard | Day 270 | N/A (physical) | 4–8% | $600–$1,200 |
| 365-day sunset | Day 365 | 18–24% read | 2–5% | $250–$400 |
Common Mistakes That Kill Win-Back ROI
1. Sending all 5 touches in a single month. Customers who receive 5 messages from a plumber in 30 days mark it as spam. Spread the sequence across the full 12-month window.
2. Not suppressing active customers. Any customer who books a job during the win-back sequence must be removed immediately. A scheduler checking current_job_status = active before each send prevents this embarrassment.
3. Using a company blast email address. Delivery rates for info@ addresses are 20–30% lower than named-sender addresses like garcia@bestflowplumbing.com, according to Klaviyo Deliverability Benchmarks (2024).
4. Offering the same discount twice. If a customer used a 10% coupon in Campaign 2 and you send the same coupon in Campaign 3, they feel manipulated rather than valued. Pull last_promo_accepted and vary the offer.
5. No mobile booking link. Sixty-two percent of service-booking clicks happen on mobile, according to Podium Local Business Insights (2024). A win-back SMS that does not include a tap-to-book link loses most of its conversions.
Comparing Your Options: DIY vs. Native CRM vs. Orchestration Layer
| Approach | Setup Time | Personalization Depth | Multi-Channel | Cost/Month |
|---|---|---|---|---|
| Manual outreach (staff) | 0 hrs setup | Low | No | $1,200–$2,400 (labor) |
| Jobber native automations | 2–4 hrs | Medium | SMS + email only | $0 (included) |
| Housecall Pro automations | 2–4 hrs | Medium | SMS + email only | $0 (included) |
| Zapier multi-step zap | 6–12 hrs | Medium | SMS + email | $49–$149 |
| US Tech Automations | 4–8 hrs | High (all 6 fields) | SMS + email + print | Varies by plan |
Jobber and Housecall Pro have solid native re-engagement features for 90-day and 180-day touches. Where they stop short is multi-channel branching: neither natively queues a physical postcard, neither reads lifetime_spend to route high-value customers into a loyalty lane, and neither triggers the sunset suppression sequence. The orchestration layer fills those gaps.
When NOT to use US Tech Automations: If your goal is simply to send one SMS blast to lapsed customers twice a year, the native automations inside Jobber or Housecall Pro handle that at $0 extra cost. The orchestration layer justifies its cost when you need personalization branching across 4+ CRM variables and 3+ output channels simultaneously.
Step-by-Step Setup Guide
Step 1 — Audit your CRM data quality. Run a report: how many past customers have last_service_date older than 90 days? How many have last_job_type populated? If more than 30% of records are missing job-type data, spend a week cleaning before launching.
Step 2 — Define your segments. At minimum: one-time callers vs. repeat customers (2+ jobs) vs. high-value customers ($500+ lifetime spend). Each segment gets a different campaign path.
Step 3 — Write your messages. Draft all 5 campaign messages in one session so the voice stays consistent. Avoid jargon ("hydro-jetting" confuses some homeowners — say "deep drain cleaning").
Step 4 — Build the trigger logic. In your CRM or orchestration layer, create a daily check: for each closed job record, calculate today minus last_service_date. If the result matches a campaign threshold, add to the send queue — but only if a higher-priority campaign is not already in flight for this customer.
Step 5 — Connect your channels. Link your SMS provider (Twilio, Podium, or your CRM's built-in SMS), your email provider (Mailchimp, ActiveCampaign, or built-in), and if you are running Campaign 4, your postcard vendor API (Lob is the most common integration).
Step 6 — Set suppression rules. Any response, any booking, any opt-out must halt the sequence. A customer who books a job during the win-back window gets moved to the active-customer track, and the last_service_date resets.
Step 7 — Test with a small batch. Run the sequence against 50–100 dormant customers before opening it to your full list. Confirm messages arrive, personalization variables render correctly, and bookings halt the sequence.
Step 8 — Review monthly. Check open rates, response rates, and bookings per campaign touch. Cut touches that perform below 5% conversion after 90 days; double down on touches that exceed 15%.
For more on the broader CRM automation stack that powers these sequences, see our guide to automating CRM data entry for plumbing companies and the companion piece on Jobber-to-QuickBooks automation.
Win-Back Glossary
| Term | Definition |
|---|---|
| Dormant customer | A past customer with no booked job in 90+ days |
| Reactivation rate | Percentage of dormant customers who book after receiving a win-back sequence |
| Suppression list | Contacts excluded from win-back sends (active jobs, opted-out, closed accounts) |
| Sunset sequence | A final message asking dormant contacts if they want to remain on the list |
| Multi-touch sequence | A timed series of 3–5 messages across multiple channels to a single audience |
ROI Calculator: What Win-Back Is Worth
Assumptions: 1,000 dormant customers, 15% average reactivation across all 5 touches, average ticket $350.
Reactivated customers: 150
Revenue recovered: $52,500
Campaign cost (SMS + email + 100 postcards): ~$800
Net ROI: 6,462%
Even at a conservative 8% reactivation rate on a $280 average ticket, a 1,000-record win-back campaign returns $22,400 against $800 in campaign cost — a 2,700% return.
Win-back campaign net ROI: 2,700–6,400% for plumbing companies with a 1,000+ past-customer database, based on industry conversion benchmarks.
For invoicing automation that pairs with win-back reactivation, see best invoicing software automation for plumbing companies.
Frequently Asked Questions
How many touches should a plumbing win-back sequence include?
Three to five touches spread across 90–365 days is the standard that balances recovery rate with unsubscribe risk. More than 5 touches in a 12-month window drives unsubscribes and spam complaints without meaningfully lifting bookings.
What CRM fields do I need before launching a win-back campaign?
At minimum: last_service_date, customer_email, and customer_phone. For higher personalization — which doubles response rates — you also want last_job_type, lifetime_spend, and technician_name.
Should I offer a discount in every win-back message?
No. Lead with value (seasonal tips, maintenance reminders) in the first touch and save discounts for the second and third touches. Customers who receive a discount in touch 1 learn to ignore the first message and wait for the coupon — which trains bad habits.
How long does it take to see results from a win-back campaign?
The 90-day SMS campaign typically generates bookings within 48–72 hours. The 180-day email campaign takes 1–3 weeks. The full 12-month sequence produces its full yield after running for at least two full cycles — approximately 6 months of operation before you have statistically meaningful data.
What is the best time to send win-back messages to plumbing customers?
For SMS: Tuesday–Thursday between 10 AM and 2 PM local time consistently outperforms evening sends for service businesses. For email: Tuesday and Thursday mornings see the highest open rates, according to HubSpot Email Marketing Data (2024). Avoid weekends for plumbing-specific outreach — homeowners mentally separate "contractor" from "weekend."
Can I run win-back campaigns from Jobber or Housecall Pro without a separate tool?
Yes, for the basic 90-day and 180-day SMS/email touches. Jobber's client follow-up automations and Housecall Pro's re-engagement tools cover those lanes. You need a separate integration layer only if you want postcard sequencing, multi-variable personalization branching, or lifetime-spend routing logic.
Also see our guide on automating Housecall Pro to QuickBooks for plumbing companies to make sure reactivated customers flow cleanly into your accounting workflow.
About the Author

Helping businesses leverage automation for operational efficiency.
Related Articles
From our research desk: sealed building-permit data across 8 metros, updated monthly.