About this case study: This is a composite illustration based on industry benchmarks and PostKnock's playbook design. Business names, locations, and exact figures are illustrative — typical results vary by market, list quality, and offer. We use composites here to show what a well-run campaign looks like end-to-end before customer-permission case studies are available.
Pool Services · Composite Case Study
Pool Services Spring Opening: 22 Bookings From 800 Past Customers
Updated May 2026 · 7 min read
Business profile (composite)
Practice / Shop
Crystal Clear Pool Service
Market
Suburban Houston, 13,000 households
Size
4 techs, 1 dispatcher, $740K annual revenue
The challenge
Crystal Clear Pool Service had a familiar Houston-market problem: spring opening is the highest-margin service of the year, and every January homeowners forget who opened their pool last spring. The owner had 800 households on record from spring 2025 openings, but historical data showed roughly 35-45% of those households would book with someone else if Crystal Clear didn't actively recall them by mid-February.
Existing recall was an email blast from the dispatcher's Mailchimp account in early February. Open rates were 24%, click 2.1%, and bookings tracked to it ran 60-80 per spring — meaning roughly 700+ past customers were either re-shopping the market or quietly defaulting to a cheaper competitor. With pool tech wages rising and the owner trying to push utilization above 88% for the season, every lost retention point hurt margin.
The competitive pressure was real. Two pool-service apps had begun running geo-targeted Facebook ads in the area at low CAC, undercutting on opening price. The owner couldn't compete on the $129 "loss-leader" opening price — his loaded labor cost ran $165 per opening — but he could compete on "same tech as last year, knows your pool, no surprises."
The PostKnock approach
Playbook used: Seasonal Recall
We loaded the 800 past-customer list into PostKnock's Seasonal Recall playbook configured for pool services. The list was segmented two ways: 2-year-recurring customers (520 — high-stickiness, low-effort recall) and 1-year-only customers (280 — at-risk of churn, requires more persuasive copy). The 1-year segment got the harder-working creative; the 2-year segment got a friendly "see you in spring" reminder.
Wave 1 was a 4x6 postcard with a clean visual (sparkling pool, blue sky), a personalized line referencing the customer's last opening date, the assigned tech's first name ("Greg will be back in your area April 8-15"), and a clear CTA: book your spring opening, $185 standard. The card included a QR code with a pre-filled booking form and the dispatcher's direct line. The same-tech personalization was the playbook's key differentiator — pool customers value continuity highly.
Three days after Wave 1, the dispatcher worked the 1-year-only non-responder list with a soft 90-second script ("just confirming you'd like Greg back this spring"). Wave 2 dropped at week 5 to non-responders only, with a different creative emphasizing weather-window scarcity ("week-of-Easter slots fill first") and a small loyalty perk for booking by the deadline. Total: 1,200 pieces, ~120 outbound calls, 7-week campaign window aligned to mid-January through early-March.
Campaign timeline
- Week 0
- CRM export, 2-segment split, same-tech assignment lookup.
- Week 1
- Wave 1 drops (800 cards). Tech-name personalization.
- Week 2
- Dispatcher follow-up calls on 1-year-only segment. 95 dials, 41 connects.
- Week 3-4
- Bookings flow. 14 spring openings scheduled.
- Week 5
- Wave 2 drops (~400 cards) to non-responders only. Weather-window urgency.
- Week 6
- Tail bookings. 8 incremental openings.
- Week 7
- Final tally: 22 booked openings, 18 of 22 also booked weekly maintenance for season.
Results
Response rate
2.8%
on 1,200 pieces
Conversions
22
41 calls connected
Revenue
$9,900
first-attributable
ROI
4.7x
on $2,120 cost
Twenty-two spring openings on 800 unique past customers — 2.8% response, in the upper portion of the 1.5-3.5% home-services seasonal range, helped meaningfully by the same-tech personalization. Average opening ticket ran $450 (the $185 base plus most openings adding chemical balance, filter clean, and a couple of repair add-ons), giving $9,900 in directly-attributable opening revenue.
Campaign cost ran $2,120 — $720 in postcards (1,200 at $0.60), $297 in Pro plan, and $1,103 in dispatcher follow-up labor. The 4.7x ROI on opening-only revenue understates the campaign — 18 of 22 opening customers also locked in weekly maintenance contracts averaging $185/month for 6 months ($19,980 in season-1 recurring). The full attributable season revenue lands closer to $30,000, for a real ROI above 14x. The campaign also closed the door on competitor app churn — 17 of 22 customers had received Facebook ads from the competitor and confirmed the postcard tipped the decision.
“When customers see the tech's name, the whole thing feels like a continuation, not a sales pitch. That's what Mailchimp could never do for me.”
— Owner, Crystal Clear Pool Service (composite illustration)
What we’d do differently
- Same-tech personalization was the highest-ROI design choice. 1-year-only customers booked at 4.6%, but 2-year customers booked at 2.1% — opposite of what you'd expect — because the 2-year customers were the most assumed-to-stay, not the most pursued. We'd over-mail the 1-year segment next time.
- We held Wave 2 to non-responders only and saved 400 pieces of cost. That decision made a measurable difference at this scale; full-list Wave 2 would have lifted response by maybe 0.3% but consumed $240 in extra cost.
- The $185 opening price held up well against the $129 competitor offer when paired with same-tech continuity. Trying to match the $129 would have eroded margin and probably not lifted conversion.
Run a campaign like this for your business
See how PostKnock’s playbooks adapt to your vertical, or model the math with our ROI calculator before you start.