When people ask what I built for Center X Equine Therapy, they often expect an answer like: HTML, CSS, Cloudflare Pages, Git.

That’s part of it. The other part is the tool chain that helps a real nonprofit actually run the site — donations that don’t quietly eat the budget, forms that feel professional, data that lands somewhere useful, and a clear line between public marketing and protected health information.

This is the full-stack work that doesn’t show up in a GitHub repo, but it does determine whether the site holds up once real people start using it.

”Free” can mean different things on different tools

Before the client demo, I pulled together recommendations by re-reading our own assessment docs and checking current pricing — keeping the reasoning in the repo, and verifying the numbers fresh.

Donations: Givebutter

Givebutter’s optional-donor-tip model can be genuinely free when tips are on: $0 platform fee + $0 processing (their guarantee covers the gap). With tips off, it shifts to a flat 3% plus card processing (~2.9% + 30¢). A free donor CRM is included.

For now, the site ships a high-fidelity donation mockup because the live embed is waiting on one thing: the client’s EIN for account setup. The UI is ready; the integration is waiting on paperwork, not code.

Forms: Fillout vs Jotform vs Google Forms

ToolFree tier reality
Fillout1,000 submissions/month, unlimited forms and users — workable for a small nonprofit
Jotform5 forms, 100 submissions/month, 1 user, branding — fine for a demo, tight for production
Google FormsFree and fast, but can feel out of place on a polished nonprofit site

The stack I recommended: Fillout as the polished public front-end → Airtable as the structured back-end/CRM. Google Sheets works as a simpler fallback.

The framing that seemed to help in conversation: forms and Airtable are back-ends, not the front-end you ship. Families see Fillout embedded in a page that matches the site’s typography and colors. Staff see structured records with source tags.

Google Forms vs Airtable — different kinds of tools

This comes up a lot. Google Forms is a form-to-Sheet builder. Airtable is a database with a basic form view. The choice depends on how you’ll follow up — not just which logo feels familiar.

The HIPAA line

Center X offers therapy services, so HIPAA questions came up early — as they should.

The architecture we landed on:

  1. Public website = marketing and fundraising. No PHI collection. Clear copy asking people not to submit medical details here.
  2. Waitlist form = swappable module. The current version collects non-clinical inquiry data. Future clinical intake would move to a HIPAA tool with a signed Business Associate Agreement (BAA).
  3. CRM data ≠ clinical records. Donor, sponsor, volunteer, and referral-partner relationships stay separate from treatment intake.

HIPAA-compliant form vendors (Jotform HIPAA, IntakeQ, and others) exist on paid tiers with BAAs. We don’t need them on day one if the public boundary stays clean.

This helps avoid a common nonprofit trap: building a heavy compliance portal before you have a site people actually want to visit.

Hosting, domain, and email

Site hosting: Cloudflare Pages — free for this static build (unlimited requests, free SSL, generous build minutes). The site deploys from Git; moving to GoDaddy Website Builder would have meant rebuilding from scratch.

Domain: GoDaddy registered, Cloudflare managed. Point nameservers at Cloudflare; Cloudflare handles DNS and CNAME to Pages. The permanent domain is centerxequinetherapy.org — parked at GoDaddy with no active MX records, so cutover felt low-risk.

Email options we talked through with the client:

  • Cloudflare Email Routing — free forwarding to an existing inbox
  • Google Workspace for Nonprofits — free for verified 501(c)(3)s
  • Zoho Mail — free tier available

Forwarding is the simplest path if they just need info@ to land somewhere familiar.

Gotchas that only show up on a real phone

mailto: isn’t always a reliable primary CTA

The footer initially used mailto: for Program Edge contact. On my iPhone, tapping the email didn’t do anything — which makes sense in hindsight: mailto only opens a draft if a default mail client is registered. Webmail-only users and in-app browsers often get silence.

The pattern that worked better: primary CTA = real URL (https://program-edge.com/contact), with email as copy-able text and an optional mailto fallback.

Instagram feeds take a little more setup now

Instagram retired its Basic Display API in December 2024. A live feed on the site now needs a third-party widget (we looked at Behold, which has a free tier), an Instagram Business or Creator account, and a one-time authorization. Facebook and YouTube icon links are straightforward — just URLs. The IG feed is waiting on account access.

What full-stack meant on this project

For Center X, full-stack included:

  • Hand-built pages with accessibility and mobile-first layout
  • Third-party integrations chosen for total cost of ownership, not just feature lists
  • CRM-ready form structure before the CRM exists
  • A HIPAA boundary written into planning docs, rather than added after a compliance scare
  • Domain, hosting, and email treated as separate decisions with clear tradeoffs

The code is what people see. The integrations are what help a small nonprofit keep the site running without calling a developer every time someone submits a waitlist form.

What I’d do differently

I’d write the one-page “Tools & integration — client questions” doc before the demo, not after. Clients tend to remember the questions you ask together more than the spreadsheet you built a few days earlier.

I’d also like to publish a reusable nonprofit tool-stack cheatsheet — Givebutter fee models, Fillout vs Jotform caps, HIPAA boundary patterns — so the next healthcare-adjacent site doesn’t start from a blank page.


The research and client story that led here: Research Before Pixels. The studio site that embeds this build live: Building Program Edge.