The Void
← All projects
Website 2026 In development

Greyhounds as Pets

A complete redesign and Drupal-to-WordPress move for a greyhound rehoming charity, with a custom WordPress CRM replacing the Drupal one and over 75,000 records carried across.

Built with

Greyhounds as Pets

Specs

At a glance

Length 2 weeks
Year 2026
Stack WordPress · Breakdance · ACF Pro · custom CRM plugin
Hosting AWS
Records migrated 75,000+
CRM record types 5
Previous platform Drupal 7

The work

Write-up

Greyhounds as Pets rehomes retired racing greyhounds across Aotearoa, and with racing coming to an end, around 2,000 more dogs will soon need homes. Their old site and the CRM behind it ran on Drupal 7. We replaced both: a complete redesign of the public site in WordPress and Breakdance, and a custom WordPress CRM that does everything the Drupal one did, in a form the team already recognises.

A modern site, built around the dogs

  • A complete redesign with a palette sampled from the logo and campaign artwork, clean typography, and pages rebuilt for adopting, fostering, volunteering, events, settling in, health and behaviour.
  • Meet our dogs. The adoption page lists the dogs the team has ticked for the website, newest first, twelve to a page. Each card shows the photo, name, age, sex and location. Visitors can filter by location, and by whether a dog can live with a cat, asked the way someone with a cat actually asks it.
  • Filters that work properly. The filters narrow the actual list rather than hiding cards on the current page, so counts and page numbers stay right, and a filtered list can be shared as a link.
  • A page per dog with a full photo gallery, a facts panel, and an age worked out from the birth date, so it’s never out of date.
  • Private stays private. A dog not ticked for the website is off the listing and its page returns “not found”, so vet notes and contact details are never sitting at a guessable address.
  • The home page features a real dog pulled straight from the CRM, falling back to the newest arrival if nobody has picked one.
  • Events show what’s coming up, soonest first, tagged “Today”, “Tomorrow”, “This weekend” or “Next up”, with a region filter that only offers regions that have something on.

Applications that file themselves

The adoption and foster forms are long, around 65 questions over five steps, because the team needs the answers. Each submission becomes an application record in the CRM automatically. The answers are kept exactly as they were asked, so records survive the form being reworded over the years, and the CRM adds its own working fields alongside: status, the person it becomes, the matched dog and the vetting notes.

A CRM built on WordPress

The Drupal CRM was replaced with a custom WordPress plugin of about 7,700 lines, with ACF Pro as the field engine and every field group defined in code. It covers five record types: dogs (64 fields), people (59), transactions, applications and events.

  • Familiar to staff. Field names, choices and conditional questions mirror the old Drupal forms. Questions only appear when they apply, such as a fence height once someone says their section is fenced.
  • Lookups that scale. Linking a transaction to a dog or a person is type-ahead, with each result showing its record number so two people with the same name can be told apart, across thousands of dogs and people.
  • Transactions with rules. The status list narrows to the chosen transaction type, reason fields appear only for the statuses that need them, and notes become mandatory for failures, returns and transfers. Every rule is checked again on save.
  • Proper lists and a dashboard. Each record type has one list with combinable filters, such as dogs by status, kennel, location, colour, sex and whether they’re on the website. A dashboard shows the latest dogs, people, transactions, applications and upcoming events.
  • Read-only access for people who need to look but not touch.

Migrating nearly twenty years of records

The importer carries the Drupal data across: 12,165 people, 6,113 dogs, 47,151 transactions, 8,655 applications, 1,329 events and 113 staff accounts, over 75,000 records reaching back to 2007. It runs in batches that resume where they stopped and can never run twice at once, and it dates every record from Drupal in New Zealand time, correct either side of daylight saving.

Fast

  • Pages that read records got six times faster. Response times dropped from 1.5 seconds to 0.24 on the home page, and from 1.9 seconds to 0.29 on the adoption page, after adding the database index the record queries were missing and removing a session the page builder was starting on every request.
  • 74% lighter photos. Imported photos arrived at full original weight, some saved as PNG. Optimising them cut the dog photos from 6.8 MB to 1.75 MB, and anything uploaded from a phone is optimised automatically.

Screenshots

Click to enlarge

Got something like this in mind?