Case Study Association

A small veterinary society got membership software that fits how it actually works

AVSAB reviews every applicant, lets members choose how they pay, and runs a public directory of behavior consultants. We built a modest membership system around the way the office already worked.

  • 2021 client since
  • 5 membership types, one system
  • 2 ways to pay, the member's choice
  • 3 reminders before renewal lapses

A small society with a big society's membership rules

The American Veterinary Society of Animal Behavior describes itself this way: "We are a group of Veterinarians, Veterinary Technicians, and Graduate Degree level Animal Behaviorists dedicated to improving the lives of animals and people through an understanding of animal behavior."

It is a small organization, run by an executive director and a board. Its membership is anything but simple. There are veterinarians, veterinary technicians, affiliates, student chapters, and individual students, and each kind of member joins on different terms. Applicants are reviewed before they are let in. And the public uses the society's directory to find a member nearby who takes animal behavior cases.

If the membership software gets a status wrong, a veterinarian who has paid cannot sign in, or a consultant who left years ago is still the first name someone searching for help sees.

What they needed did not come in a box

Packaged membership products are built around a common case: pick a plan, pay, and you are in. AVSAB's case is different at almost every step. An application has to be looked at by a person before it becomes a membership. Individual student memberships are free, so there is no payment to trigger anything. Some members want to be charged automatically every year, and others want to pay once and decide again next year.

The directory was the sorest point. On the old site, joining the society and being listed in the directory were two separate things. A member signed up, then built a listing somewhere else, and nothing connected the listing to whether that person was still a member. Lapsed members stayed listed, and being a current member did not put anyone in it.

Bending the society's process to suit a product was one option. Paying for a large platform and using a corner of it was another. Neither made sense for an office this size.

We built the modest thing around how the office works

Application first, then a person decides. A prospective member applies and pays on the website, and the application waits in a queue. The office sees the whole application on one screen and approves or declines it. Only then does the member get access and a welcome message. The society keeps its standard for who belongs, and nobody retypes an application to enforce it.

Members choose how to pay, and can change their minds. A member can put their dues on autopay or pay once for the year. From their own dashboard, they can switch from one to the other, update a card, or renew, with Stripe handling the payment itself. A member does not have to email the office about a credit card, and the office does not have to handle one.

The directory follows membership. A current member ticks a box on their profile to be listed, and they are in the directory. When a membership lapses, the listing goes with it, without anyone remembering to remove it. Someone looking for help types a zip code, a city, or a state and sees the nearest consultants first, with the distance to each one. When the society's leadership asked for that, and for a badge showing whether a listing is a veterinarian or a technician, both were live within about a week.

The AVSAB public directory, with a world map of member locations above search fields for name, place, and consultant specialty
The public directory lists current members who chose to be included.

Renewals look after themselves. Every day the system checks who is coming due. Members on autopay get a note before their card is charged. Members who pay yearly get three reminders before their membership runs out, and a membership that does lapse is marked that way automatically.

The office runs the society, and the software keeps up

Today the executive director reviews new applicants from one screen and gets on with the rest of the job. Members look after their own profile, their own payment method, and their own directory listing. Anyone searching the directory is looking at people who are members now.

When a member does get stuck, the executive director passes it to us. We sort out that member's account, and where the software was at fault, we fix the software, so the next member does not run into the same thing. A system built for one society is never quite finished, and we would rather say so than pretend otherwise. It gets a little better each time the office finds a case it had not met before.

We also host the site and keep it updated, so the membership system and the website around it are one responsibility with one team behind it.

What changed

  • Applicants apply and pay online, then wait for the society's review before they get access
  • Members choose autopay or a yearly payment, and switch between them on their own
  • A member appears in the public directory only while their membership is current
  • The public searches the directory by place or specialty and sees the nearest consultants first
  • Renewal reminders and lapsed memberships are handled without anyone in the office lifting a finger

Under the hood

For the developer evaluating us
  • 7member email templates
  • 11managed forms
  • 16nearest consultants per search
  • 10page layouts staff can build
  • 6tools for reconciling payment records
  • 1daily membership check

What We Built

  • Online application and payment with a review step before access
  • Autopay and yearly payment, switchable by the member
  • A member dashboard for profile, payment method, and directory listing
  • A public directory with map and search, tied to current membership
  • Automatic renewal reminders and lapsing
  • An approval screen and activity log for the office

Why build it

The membership system is a custom plugin and theme code written for AVSAB, with no third-party membership plugin and no store plugin underneath. That was a fit decision. The review step, the free student path, the two payment models, and a directory driven by membership status would each have meant working against a packaged product's assumptions.

Applications and approval

The application is a Gravity Forms form with two Stripe feeds, one for autopay and one for a single yearly payment. A submitted application creates a member account in a pending state. An approval screen in the plugin shows each pending application as a card with the full profile. Approval activates the account and sends the welcome email.

Payments

A dedicated Stripe class handles webhooks for successful payments, subscription changes, cancellations, and refunds, and stores the customer and subscription identifiers on the member's record. It opens Stripe's billing portal for card updates and creates checkout sessions for yearly renewals. Six command line tools reconcile Stripe with the site's member records. They run in dry-run mode unless told otherwise.

Lifecycle

A daily scheduled job sends the autopay notice 30 days ahead, sends yearly members reminders at 30, 15, and 1 day before expiry, marks lapsed memberships as expired, and extends sitting board members automatically. Every action is written to a log table that the office can read from the admin dashboard.

Directory and map

Directory listings are member profiles with an opt-in flag, shown only for active members of eligible types. Addresses are geocoded with a fallback from full address to city and state. Search returns the nearest results by distance instead of a fixed radius. Map markers and results load without a page refresh.

Hosting

Managed cloud hosting behind Cloudflare Enterprise, with server-side malware scanning, daily backups, and transactional email sent through Elastic Email.

Figures current as of September 26, 2026

FatLab has ensured our nonprofit trade association site runs smoothly and efficiently—from quick fixes to strategic consultation.

Gage Houser Executive Director, AVSAB

More stories like this

Want a web partner who picks up the phone?

Tell us what your site needs to do, and we will tell you how we would approach it.