---
title: Caretaker Gazette Rebuild Case Study
description: Case study: 44-year subscription publication rebuilt in 5 weeks. Custom WordPress, 123K-user migration with day-one logins, SendGrid email infrastructure.
url: https://blankboxdigital.com/case-studies/caretaker-gazette-rebuild/
date: 2026-05-01
type: page
---

Case Study

# 44 Years In Print. Rebuilt In 5 Weeks.

A bi-monthly publication's full publishing platform. Site, membership system, 123K-user data migration, custom email infrastructure. Delivered six months ahead of contract.

Industry
Print & Digital Publishing

Location
Austin, TX

Service
Website & Platform Rebuild

Period
March to May 2026

> A 44-year-old subscription publication needed to leave a retiring legacy stack without losing a single subscriber, mailing, or deliverability point.
>
> We rebuilt the platform from scratch and brought every record across with passwords intact.

123,073

User Accounts Migrated

Day-one login compatibility via bcrypt cost-10 hashing

5 WEEKS

Signing to Launch

Against a 7-month contract deadline

ZERO

Paid Plugins

Custom membership engine, custom blast tool, no licensing tax

## The Situation

The Caretaker Gazette is a bi-monthly subscription publication that has been in continuous print since 1983. The site, member system, and ad-order forms ran on a PHP 5.3.29 SMART framework on a Linode box managed by a third-party admin. Newsletter blasts ran on self-hosted Pommo on the same Linode infrastructure. Reactivation campaigns and welcome flows depended on that same machine staying online.

Three pressures hit at once. The legacy admin announced he was retiring his server. PayPal flagged the publisher's integration as out of compliance with current standards. And the existing site was effectively unusable on mobile, which on its own can [tank conversion rates](https://blankboxdigital.com/blog/website-mistakes-that-kill-conversions/) for a subscription business. There was no path to keep the existing stack running, and no time to replatform incrementally.

A data audit on the dump showed 121K plaintext passwords sitting in MySQL, 63K encrypted credit card blobs, 43K CVVs, and a \`status\` field that had drifted out of sync with renewal reality (active subscribers were sometimes flagged EXPIRED because the publisher updated the \`last\_issue\` field on every renewal but rarely flipped status). Any migration that trusted the status column verbatim would have lost current subscribers.

The legacy site. PHP 5.3 SMART framework on a Linode managed by a third-party admin who was retiring his server.

## What We Built

Site & Brand

### FOUNDATION

Custom WordPress theme with retiree-first typography (Cormorant Garamond at 15px minimum, Outfit body). Homepage filmstrip and embedded NBC Today Show clip. 19 public pages, 10 caretaker profiles, 123 archived sample issues. WCAG 2.1 AA pass with a 17-template mobile sweep at desktop and 375px breakpoints.

Membership Engine

### ENTITLEMENTS

User-meta-driven custom system with no paid plugins. Five distinct statuses: active, expired, gift, lifetime, legacy. A 12-cell subscribe-page state matrix decides what each visitor sees across their current state and the four subscription tiers. Gift purchase flow synthesizes recipient accounts. Auto-renewal is opt-in, gated server-side to saved Square tokens.

Data Migration

### PIPELINE

Idempotent 25-minute pipeline. SQL dump to local SQLite, Python ETL to clean CSVs, batched WordPress importers. 123K users brought across with bcrypt cost-10 password hashing, so subscribers log in on day one with their existing credentials. Renewal-recovery promotion logic uses \`last\_issue\` as source of truth, beating the stale \`status\` column.

Database Footprint

### FOOTPRINT

JSON-blob meta collapsing under transparent \`get\_user\_metadata\` filters cut usermeta from 4.48M rows to 3.16M rows, saving 149 MB. HPOS was abandoned for a custom flat-table that took order storage from a projected 5M-plus rows down to 204K. Final database lands at 796.7 MB with headroom against the SiteGround 1 GB cap.

Email Infrastructure

### DELIVERABILITY

Custom SendGrid Web API adapter at \`inc/sendgrid.php\` preserves 5+ years of warmed IP reputation. Domain Auth and Link Branding CNAMEs in the SiteGround zone. SPF, DKIM s1 and s2 (2048-bit), and DMARC \`p=none\` aligned. A transparent \`phpmailer\_init\` filter routes every WordPress and WooCommerce mail through one chokepoint with no per-caller rewrites.

Bulk Blast System

### BLASTS

Pommo retired. Chunked self-rescheduling cron paced at 1,200 per hour matches the legacy deliverability cadence. Per-blast atomic locks survive PHP timeouts and server restarts. Two-bucket error log keeps the first 25 errors and the most recent 25 across a 50-hour run. RFC 8058 one-click unsubscribe and branded HTML chrome ship with every send.

Postal Mailing Flows

### MAILING

Mid-cycle in-house envelope PDFs (FPDF, 9.5 by 4.125 inch) emailed to the publisher's son for stuffing and stamping. Four bi-monthly mailhouse CSVs (USA\_BIG, USA\_LAST\_ISSUE, NON\_USA\_BIG, NON\_USA\_SMALL) for Thompson Mailing Solutions, replicating the legacy SMART export byte for byte so the printer's intake automation kept working without changes.

Content Workflow

### ISSUE FLOW

Issue meta box plus media-picker PDF upload plus a \`Process PDF\` button extracts each bi-monthly issue to single-column HTML. Boilerplate filtering is revertable on a per-issue basis, so the publisher can roll a bad extraction back without touching code.

Admin Dashboards

### CONTROL

A CG Dashboard top-level menu surfaces member breakdown SQL (active, gift, lifetime, expired, legacy). The unified Manage Member screen merges WooCommerce orders, ad CPT, and flat-table legacy orders into one timeline. A phone-search field on All Users makes call-in lookups instant.

Security & Cutover

### CUTOVER

HSTS, X-Frame-Options, Referrer-Policy, and Permissions-Policy headers in \`.htaccess\`. All hardcoded keys rotated. Let's Encrypt R12 SSL. Send-button lockdown on bulk blasts until the publisher's first cleared send. Hand-curated SiteGround DNS zone matching Linode record by record before the manual GoDaddy nameserver flip.

## Email Infrastructure, Verified

Domain Authentication, Link Branding, DKIM (2048-bit), SPF, and DMARC aligned on caretaker.org before the cutover. Transactional and bulk send paths verified end to end on the same SendGrid account that carried five plus years of warmed IP reputation.

SendGrid Domain Authentication: all four CNAME records validated against caretaker.org.

Live activity feed during cutover testing.

Hand-curated SiteGround zone, including SendGrid Link Branding CNAMEs.

## The Site

Cormorant Garamond display type and a homepage filmstrip set the tone for a 44-year-old print brand. The subscribe page is a 12-cell state matrix that branches on visitor status across the four subscription tiers.

Homepage hero filmstrip and brand.

Subscribe page state matrix: 12 cells across 10 visitor states.

Inside the Admin

## CUSTOM ADMIN, BUILT FOR THE PUBLISHER

Two custom admin screens replace the legacy SMART CMS and the self-hosted Pommo blast tool. Member counts, ad orders, blast composer, and postal mailing flows live in one WordPress dashboard.

![Gary's Dashboard showing member breakdown: 1,897 Active subscribers, 18 Active Gift, 10 Lifetime, plus Ad Orders, Email Blasts, and Postal Mailings cards](img/cg-admin-dashboard.png)

Gary's Dashboard. Member breakdown SQL, ad orders, blast status, and postal mailings on one screen.

![Compose Email Blast composer with audience selector showing 1,917 Active subscribers and 60,723 Expired-for-reactivation, plus subject line and TinyMCE editor](img/blast-tool.png)

The blast composer. Replaces Pommo with a chunked self-rescheduling cron paced at 1,200 messages per hour.

## The Numbers

Concrete cutover-day metrics from the production migration. The last three tiles call out the database savings, active-subscriber reconciliation, and final database size.

123,073

Users Migrated

187,420

Legacy Orders Preserved

6,527

Classified Ads Imported

0

Migration Errors

3 / 3

Bcrypt Logins Verified

8 / 8

Membership-End Spot-Checks

149 MB

Database Savings

1,897

Active Subscribers Reconciled

796.7 MB

Final Database Size

Common Questions

## FAQ

### Why a custom membership system instead of MemberPress or another plugin?

The publication has 121K users at scale, five distinct status types (active, expired, gift, lifetime, legacy), a 12-cell subscribe-page state matrix, gift-recipient synthetic accounts, and a lifetime tier safety net. No paid plugin handled all five cleanly without conflicting with WooCommerce. The custom code is roughly 1,200 lines and lives in the theme's \`inc/\` folder.

### How was the publisher's warmed IP reputation preserved through the migration?

SendGrid was already the production sender. We took over the existing account (number 25545083), verified the existing Domain Auth and DKIM 2048-bit records, added Link Branding CNAMEs in the SiteGround zone, and routed every WordPress and WooCommerce mail through one custom Web API adapter. Five plus years of sending history transferred without a warmup pause.

### What happens if SendGrid rate-limits a blast mid-send?

Bulk blasts run through a chunked self-rescheduling cron paced at 1,200 per hour (twenty messages every sixty seconds). Per-blast atomic locks survive PHP timeouts and server restarts. State persists in \`wp\_options\` with autoload off. A 60K-recipient blast runs across roughly fifty hours, and two-bucket error logging captures the first errors seen and the most recent twenty-five.

### How do existing subscribers log in on day one with their old passwords?

Bcrypt cost-10 hashing was applied during the migration. Three of three round-trip logins were verified before flip (RECIDs 50180, 51866, 143606). The legacy password hashing scheme was unwrapped at import time and stored in WordPress's native bcrypt format, so the standard \`wp\_check\_password\` call works unchanged.

### How was the legacy stored credit-card data handled?

63K encrypted CC blobs, 43K CVVs, and 121K plaintext passwords were left behind. We do not import any payment data. New billing runs through Square (saved card tokens only) and PayPal. The legacy admin's server is being decommissioned with a Brandon-issued Certificate of Destruction.

### What does ongoing support cover?

Hosting, SendGrid, Square, and 8 hours per month of engineering and support. Bi-monthly issue PDF processing, ad order monitoring, blast configuration, deliverability monitoring, and feature requests as they come up.

## Got a Platform Rebuild in Front of You?

This kind of work falls under our [full websites](https://blankboxdigital.com/services/websites/full-websites/) service. We build subscription platforms, run data migrations with day-one login compatibility, and stand up email infrastructure that keeps existing reputation intact.

---

*[Blank Box Digital Marketing](https://blankboxdigital.com) · Austin, TX · (832) 589-4133*
