
Wise Batten, Inc. has brokered timberland and plantations across South Carolina and Georgia since 1978. In July 2026 we moved them off Drupal 8, which stopped receiving security patches in November 2021, onto a hand-coded WordPress site their own staff can run.
This post is the build log. What we migrated, what we built, and what happened when the new site sent its first email to 1,848 subscribers.
The short version: 29 properties, 556 photos, and 197 sales packet PDFs moved across without losing a URL. The live site scores 97 to 99 on desktop Lighthouse with 100 for best practices and SEO, and mobile went from 69 to 93. The first listing blast came back with a 48.46% open rate and a 10.07% click rate.
If you are running a business on software that no longer gets patched, this is what the other side looks like.
Key takeaways
- The platform was the liability. Drupal 8 hit end of life on November 2, 2021. No patches, no security team, no vendor extended support.
- The content was worth keeping. We migrated 29 active properties, 73 sold tracts, 556 photos, and 197 sales packet PDFs, then redirected every old URL.
- Speed came from removing things. Self-hosting the fonts and right-sizing images took mobile PageSpeed from 69 to 93, and one page from a 13.4 second load to 2.7 seconds. Desktop now scores 97 to 99 with a 1.0 to 1.2 second LCP.
- The email tool is the sleeper feature. A “Create Blast” button turns live inventory into a branded Mailchimp campaign in one click.
- First send results: 1,848 recipients, 48.46% open rate, 10.07% click rate, 4 unsubscribes.
What this post covers
- Why end-of-life software is the actual problem
- Migrating 29 properties without losing a URL
- A listing system the office can actually run
- Speed and accessibility: what the live site scores
- The listing blast: inventory to Mailchimp in one click
- What the first send actually did
- Frequently asked questions
Why end-of-life software is the actual problem
Wise Batten came to us through a free website review. The grade we gave the old site was a C minus, and the summary was “a trusted company on a neglected website.” Their credibility was real and hard to fake. The site was several years behind the business.
The root cause was not design. It was the platform. Drupal 8 reached end of life on November 2, 2021, when Symfony 3 stopped being supported. Every Drupal 8 release lost security team coverage, and unlike Drupal 7, there was no vendor extended support program to fall back on.
That meant four years of publicly known vulnerabilities with no official fix. It also explained the staleness. When a platform is frozen, so is everything built on it. The footer still read 2022. The privacy policy contained a leftover email address belonging to a completely different company. Every listing change had to route back through their old developer, so changes stopped happening.
This is the pattern we see most often. The security problem and the “our site feels old” problem are usually the same problem wearing two hats.
Migrating 29 properties without losing a URL
The temptation with a rebuild is to start clean. That would have been a mistake here. Their listings were detailed, honest, and written by foresters who had walked the land. Acreage, timber composition, soil maps, downloadable sales packets. You cannot regenerate that from a template.
So we built an importer instead of retyping anything. It pulled from the old site and keyed every post to its source URL, and every photo and PDF to its source asset URL. That made the whole thing idempotent, which is the part that matters: we could re-run it the day before launch to catch anything the client had changed, and nothing duplicated.
What came across:
- 29 active properties with full descriptions, acreage, and pricing
- 556 photos
- 197 sales packet PDFs
- 73 sold tracts, kept as a public track record and excluded from search indexing
Then we redirected every old Drupal URL to its new home. A rebuild that drops the old URLs throws away years of accumulated search equity, and for a business whose buyers find them through property searches, that is the expensive kind of mistake.
A listing system the office can actually run
Properties are not blog posts, so we did not treat them like blog posts. Each one is a structured record with its own fields for acreage, price, county, state, property type, and status, plus a photo gallery and a set of downloadable packets.
That structure is what makes the front end work. A buyer can filter to timberland in Hampton County under 100 acres and get exactly that. The archive sorts high to low by price, and switches between grid and map views.

One detail worth calling out, because it shows why structured data beats free text. Their flagship property is listed as “Call for Pricing,” but they still wanted it at the top of a price-sorted page. We store the real figure so the sort works, and a separate flag hides it everywhere it would otherwise render: the card, the property page, the map pin, and the structured data. The sort knows the price. The visitor does not.
Each property gets a full dossier page with the gallery, the facts, an aerial map pin, the downloadable packets, and an inquiry form that records which tract the buyer was looking at when they asked.

Every listing also carries real estate structured data, so search engines can read the acreage, location, and price as facts rather than guessing at them from paragraph text.
All of it is editable in a cleaned-up dashboard. We built them a restricted owner role that strips out plugin installs, theme editing, and file access, and removed 22 unused fields from the edit screens so staff only see controls that do something. Nothing about this site requires us.
In practice they send us the new tract and we have it live the same business day, because they are on our Hands-Off plan and would rather spend their time selling land than managing a website. That is the arrangement we prefer too, but it should be a preference, not a trap. Plenty of businesses end up on a platform they cannot touch and a developer they cannot leave. Building it fully editable means the option is theirs. They own the site either way.
Speed and accessibility: what the live site scores
The first build was correct and slow. Lighthouse told the real story, and fixing it was mostly a matter of removing things rather than adding them.
Here is where the live site sits today on desktop, measured with Lighthouse 12:
| Page | Performance | Accessibility | Best practices | SEO | LCP |
|---|---|---|---|---|---|
| Homepage | 97 | 100 | 100 | 100 | 1.2s |
| Properties archive | 99 | 100 | 100 | 100 | 1.0s |
| Forestry services | 99 | 98 | 100 | 100 | 1.0s |
Zero layout shift and zero total blocking time on all three. Every page paints its largest element in about a second, which is the “loads in under two seconds” bar we hold ourselves to.
Mobile is the harder test, and it is where the work actually showed. The homepage went from 69 to 93, with Largest Contentful Paint dropping from 6.8 seconds to 2.9. One interior page went from a 13.4 second load to 2.7.
Three changes did most of the work:
- We self-hosted the fonts. A Google Fonts link is a render-blocking request to a third-party server on every single page load. Moving the font files onto the site removed roughly 2.5 seconds of that chain sitewide. This is the single biggest speed tax we find on otherwise well-built sites.
- We generated responsive WebP versions of the large photos. Land photography is beautiful and enormous. The homepage was shipping a 2 MB background image that had an optimized version sitting right next to it, unused.
- We right-sized one avatar. WordPress automatically flags the first image in the page as high priority. On one interior page that was an 800 pixel headshot being displayed in a 56 pixel circle, and it was stealing bandwidth from the actual hero image. Requesting it at thumbnail size took that page from 13.4 seconds to 2.7.
Accessibility landed at 100 on the main pages, with one interior page at 98. The fixes were unglamorous: contrast on the footer credit, width and height attributes on images, and real accessible names on card links.
The listing blast: inventory to Mailchimp in one click
Wise Batten had roughly 1,400 contacts in a spreadsheet and no practical way to email them. Building the list was the easy half. The hard half is that sending a good property email every month is a real job, and it is the job that quietly stops getting done.
So we built the tool that removes the work. There is a “Create Blast” button in their dashboard. It reads the live listings, sorts new and recently changed properties to the top, renders a branded email from real data, and pushes it to Mailchimp as a draft campaign.

Two design decisions matter here.
It creates a draft, never a send. There is no auto-send and no cron job. A person reviews the campaign in Mailchimp and presses the button. An automated tool that emails 1,800 people without a human in the loop is a liability, not a feature.
It reuses the connection that already existed. The Mailchimp API key was already stored by their signup form plugin, and the audience was already configured in site settings. No new credentials, no second integration to maintain.
The email pulls status badges, acreage, price, county, and photos straight from the listings. When a property goes under contract on the site, the next blast says so. There is no separate content to keep in sync, which means there is nothing to fall out of sync.
What the first send actually did
The first campaign went out on July 29, 2026 to the full audience, with the subject line “Three New Tracts on the Market, 4,682± Acres.”
| Metric | Wise Batten, first send | Mailchimp all-industry average |
|---|---|---|
| Recipients | 1,848 | – |
| Open rate | 48.46% (881 unique) | 35.63% |
| Click rate | 10.07% (183 unique) | 2.62% |
| Bounces | 30 | – |
| Unsubscribes | 4 | – |
Averages come from Mailchimp’s published email marketing benchmarks, measured the same way (unique opens and unique clicks against delivered).
Two honest caveats, because the numbers deserve them.
First, open rates across the whole industry have been inflated since Apple’s Mail Privacy Protection began pre-loading images on behalf of users. That affects the benchmark and this campaign equally, so the comparison holds, but nobody should treat a raw open rate as a headcount.
Second, this was a first send to a list that had not been emailed in a long time. Re-engagement sends often run hot. The number to watch is send three, not send one.
The click rate is the one we would point at. 183 people clicked through to look at property pages, against an all-industry average of 2.62%. Clicks are hard to fake and they are the metric that turns into phone calls. For a brokerage where a single transaction can run eight figures, 183 qualified people arriving on listing pages from one button press is the entire return on the build.
Four unsubscribes out of 1,848 also says the list wanted to hear from them. It was a distribution problem, not an interest problem.
What a build like this involves
Start to launch was about four weeks, from the first commit on June 26, 2026 to the domain cutover on July 27, 2026. That covered the migration, the listing system, five rounds of client revisions, an accessibility and speed pass, and a pre-launch audit.
Wise Batten is on our website subscription, so hosting, security, backups, and ongoing edits are included rather than billed separately. If you would rather pay once and own it outright, our custom builds start at $5,000, and managed hosting runs $40 to $80 a month depending on the tier.
The launch itself was uneventful, which is how it should be. We built the whole site locally, then deployed it to a private, search-engine-blocked staging site for the client to review. It went through five rounds of revisions there, plus a pre-launch audit, before they signed off.
Going live was then a matter of pointing the domain at the build they had already approved. Their IT company changed the DNS record and the site was live in about 16 minutes. Nothing was migrated on launch day, and nothing changed between the version they reviewed and the version the public got. That is what staging is for, and it is why launch day was boring.
Frequently asked questions
Is Drupal 8 still safe to use in 2026?
No. Drupal 8 reached end of life on November 2, 2021, and all Drupal 8 core releases lost security team support. There was no vendor extended support program, unlike Drupal 7. Any Drupal 8 site today is running on nearly five years of unpatched, publicly documented vulnerabilities.
Will I lose my Google rankings if I move off Drupal?
Not if the migration is done properly. The risk is not the platform change, it is dropping URLs. We redirected every old Drupal URL to its new equivalent, carried the content across intact, and added structured data the old site did not have. Expect a short reindexing period while search engines catch up.
How long does a migration like this take?
About four weeks for a site of this size, which was 29 property listings, 556 photos, 197 PDFs, and roughly a dozen pages. Most of the calendar time goes to client review rounds rather than the build itself. A simpler brochure site is closer to two weeks.
Can staff really manage property listings themselves?
Yes. Properties are structured records with clearly labeled fields, edited through a restricted dashboard that hides everything a non-technical user should never touch. Wise Batten chooses to have us handle updates instead, on our Hands-Off plan, and we turn new listings around the same business day. The site is built so that is a preference rather than a dependency.
Do I need a separate tool to send listing emails?
No. The blast tool lives in the site dashboard and builds the campaign from listings that are already there, then hands it to Mailchimp as a draft for review. You keep your Mailchimp account and audience. You skip the part where someone rebuilds the same property details by hand every month.
What does a website like this cost?
Custom builds start at $5,000 one time, with managed hosting from $40 a month. Our website subscription is $299 a month with hosting, security, and edits included. Wise Batten added a done-for-you email add-on at $50 a month on top of the subscription.
The takeaway
Wise Batten did not have a content problem. They had 29 well-documented properties, a 1978 heritage story, and 1,800 people who wanted to hear from them. What they had was a platform that had stopped moving four years earlier, and had taken the business’s online presence with it.
The rebuild did not invent anything. It moved good content onto software that is maintained, made it fast enough to hold on a phone, made it editable by the people who actually know the properties, and gave them a one-click path to the list they already owned. The first email produced a 10.07% click rate against a 2.62% average.
If your site is sitting on software that no longer gets security updates, or you have good content trapped behind a developer who has to make every change, that is a fixable problem. Get a free website review and we will tell you honestly what is worth keeping and what is not. That is how this project started.
You can see the finished site at wisebatten.com, or read the full Wise Batten case study.