Worked example: the math, not a testimonial. We build these from third-party industry benchmarks (USPS, ANA, JICMAIL) and PostKnock's real pricing, then show every number so you can run your own. Business names and exact figures are illustrative; results vary by market, list quality, and offer.

Pool Services · Composite Case Study

Pool Services Spring Opening: 24 Bookings From 800 Past Customers

Updated October 2026 · 9 min read

Business profile (composite)

Practice / Shop

Crystal Clear Pool Service

Market

Suburban Columbus, OH, 13,000 households

Size

4 techs, 1 dispatcher, $740K annual revenue

The challenge

Crystal Clear Pool Service works in a market where the safety cover goes on in the fall and comes off in April. Spring opening is the highest-margin job of the year, and it is also the one customers lose track of: every January, homeowners forget who closed their pool last October. The owner had 800 households on record from spring 2025 openings, and past seasons suggested roughly 35-45% of them 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. That left roughly 700 of the 800 either re-shopping the market or drifting 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 acquisition cost, undercutting on opening price. The owner couldn’t match the $129 “loss-leader” opening, because his loaded labor cost ran $165 per opening. What he could compete on was “same crew as last year, knows your pool, no surprises.”

The PostKnock approach

Playbook used: Spring Pool Opening. The playbook has three waves; this shop ran the first two.

Pulling the list

The list came out of the shop’s route and billing software as an Excel file: every household with a spring 2025 opening on record, with service address, phone, last service type and date, and the first name of the tech on that route. If your customers live in QuickBooks Online, PostKnock’s QuickBooks contact sync can bring them in. For any other system the route is the same: export a CSV or Excel file, then import it. Before importing, the dispatcher cleaned the file. Out went pools on houses that had sold since October, accounts closed over a complaint, commercial and HOA pools that someone else books, and anyone who had asked to be left alone.

The 800 then split two ways: 520 customers who had been through two or more openings with the shop, and 280 who had been through one and were the likeliest to re-shop. Each group went in as its own list, so the 280 could get the harder-working card and the 520 a friendly “see you in spring” reminder.

The first card

Wave 1 was a 4x6 postcard built on the playbook’s “Time To Open Your Pool” copy: what the opening includes (cover removal, equipment start-up, water test and balance, vacuuming, a full system check), the $185 standard price, and a QR code to the shop’s online booking page beside the dispatcher’s direct line. “Same crew as last year” went on every card as plain copy. The assigned tech’s first name came in on the phone rather than on the card, because the dispatcher had the route sheet in front of her. Pool customers value continuity, so the name belongs in the conversation.

One thing to check on your own version: the playbook’s default copy puts a $200 to $400 figure on what a late opening costs in extra chemicals. Replace it with what recovering a green pool really costs your shop, or leave the number off the card.

The call

The Call Queue fills with the delivered postcards 5 business days after delivery by default (adjustable from 1 to 10). Crystal Clear’s dispatcher worked the one-year customers first, in week 2, with a soft 90-second script. This is the opening of the playbook’s wave 1 call script:

“Hi [Name], this is [Rep] from [Company]. I’m calling because we’re heading into spring opening season and our calendar is starting to fill up. How is the pool looking after the winter?”

From the Spring Pool Opening playbook, wave 1 call script

Two parts of that script do most of the work. When a homeowner says it is still cold, the answer is that the shop books about three weeks out, so the visit would land right on time. When someone hesitates, the answer is timing: the script’s rule of thumb is that algae takes off once the water passes about 60 degrees. The dispatcher also steered each caller toward the week their tech was already working that neighborhood, so the customer heard “Greg will be back in your area April 8-15” and the shop kept drive time down.

Waves 2 and 3

In the playbook, wave 2 follows 21 days after wave 1 with the “Don’t Wait For Algae” angle and a bundle of the opening plus the first month of weekly service. Wave 3 is a postcard-only “Last Spots” reminder, because three calls is too many for this kind of service. Crystal Clear ran the first two. The owner stretched the gap to four weeks so wave 1’s calls and bookings could settle before the second card went out, and mailed wave 2 to everyone still in the sequence, with a booking deadline on the card. Total: 1,200 pieces, ~120 outbound calls, 7-week campaign window aligned to mid-January through early-March.

Cards landed a few weeks ahead of the mid-February first-wave date that the spring opening playbook page suggests for most of the US. The owner wanted bookings filling the April calendar before the pool stores’ own spring promotions began. Start from your own calendar: work backward from the week you want your first openings, and leave room for the call follow-up.

Campaign timeline

Week 0
CRM export, 2-segment split, same-tech assignment lookup.
Week 1
Wave 1 drops (800 cards). “Same crew as last year” on every card.
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. 10 incremental openings.
Week 7
Final tally: 24 booked openings, 18 of 24 also booked weekly maintenance for season.

Results

Response rate

3.0%

on 1,200 pieces

Conversions

24

41 calls connected

Revenue

$10,800

first-attributable

ROI

4.3x

on $2,492 cost

Twenty-four spring openings on 800 unique past customers: 3.0% 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 $10,800 in directly-attributable opening revenue.

Campaign cost ran $2,492: $1,092 in postcards (1,200 at $0.91), $297 in Pro plan, and $1,103 in dispatcher follow-up labor. The 4.3x ROI on opening-only revenue understates the campaign: 18 of 24 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 $31,000, for a real ROI above 12x. The campaign also closed the door on competitor app churn. 17 of 24 customers had received Facebook ads from the competitor and confirmed the postcard tipped the decision.

What we’d do differently

  • Same-tech personalization was the highest-ROI design choice. 1-year-only customers booked at 4.6% (13 of 280), but 2-year customers booked at 2.1% (11 of 520), 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.
  • Start from last season’s opening and closing jobs. A pool you closed in October is a pool you are expected to open, so those records are the cleanest “who is due” file a pool company owns, and they carry the details that make the call credible.
  • Decide how many openings April can absorb, and the date your booking offer ends, before the cards land. Otherwise the first week of phone calls sets your policy for you.
  • Count bookings against the mailed list, not QR scans. A scan is a curious homeowner; a booked opening is revenue. How to count a response honestly covers the match and a holdout check.

Run a campaign like this for your business

Browse postcard designs for pool services, or run your own list through the ROI calculator before you start.

The math above is modeled. The postcard is real.

We’ll print an actual PostKnock postcard and mail it to you so you can judge the paper, the print, and the offer for yourself. No account, no credit card.

Mail me a free sample →

Have a website? Turn it into a postcard →