Back to Case Studies
A US employee-experience SaaS company

US Employee-Experience SaaS Website + Custom CMS

The complete public face of OrgAcuity — a fast, fully editable marketing website plus a purpose-built admin panel that lets the marketing team change anything on the site without touching code, while every form submission flows straight into the sales CRM.

IndustryB2B SaaS marketing siteStatusLive in production

The problem

The SaaS had a great product (the SaaS platform we'd just built — see the prior case study). But they had a problem most early-stage SaaS companies have: the website was holding them back.

Their marketing site was running on WordPress with a stack of plugins. Every time the marketing team wanted to change a heading or update a hero image, they had to file a developer ticket. Every time they wanted to add a new form or change a field, the form plugin would do something unexpected. Every time they wanted to launch a popup on a specific page, they'd hit a wall. And — the part that hurt the most — none of the forms were connected to their sales CRM. Leads were being copied from the website into HubSpot by hand. Some never made it.

The brief was direct:

  1. Build a fast, modern, beautiful website that holds its own next to Glint, Culture Amp, Qualtrics, and the rest of the well-funded competition.
  2. Build a custom admin panel so the marketing team can change anything on the site without filing a developer ticket — images, forms, popups, podcast episodes, the lot.
  3. Wire every form into HubSpot in real time so the sales team never has to copy data again.
  4. Make the entire thing GDPR-compliant with a proper cookie consent log, because the SaaS sells to US enterprises that have EU operations and the legal team wasn't going to ship without it.
  5. Don't use WordPress. Whatever we build, it has to be ours, fully under our control, no plugin hell.

The approach

A marketing website is one of those projects where the hardest decisions get made up front. The temptation is always to reach for an off-the-shelf CMS — Strapi, Sanity, Contentful, Webflow, even fancy WordPress — because that's what most agencies do. We thought about this hard and decided to build the CMS ourselves.

Here's why:

  • Off-the-shelf CMSes solve generic problems generically. The SaaS didn't have generic problems. They needed every form submission to flow into HubSpot as a contact + a deal + a note. They needed popups with specific triggers (delay, scroll) targeted to specific pages. They needed assets organized by page name. They needed a cookie consent log with specific GDPR fields. None of that comes free with Strapi or Contentful — you'd be customizing your way out of the box on day one.
  • Custom-built means the marketing team gets exactly the words and buttons they actually use. "Add a new podcast episode" is one click. "Change the hero image on the homepage" is one click. Not "find the right collection, add a new entry, populate twelve fields, set the relation to the page record."
  • Owning the CMS means we own the integration logic. When a form is submitted, we control what happens next — the HubSpot upsert, the deal creation, the note attachment, the parallel CRM integration. No webhook plugins, no Zapier, no 3rd-party services in the critical path between visitor and salesperson.
  • It's not as hard as it sounds. A purpose-built admin panel for the things this team actually edits is a few weeks of work. Not months.

So we built it as three coordinated pieces:

  1. The public website — fast, modern, beautiful, animated, SEO-optimized, fully driven by content from the CMS
  2. The admin panel — separate app, separate CMS subdomain, purpose-built for the things the marketing team actually does
  3. The brain — a single back-end API that serves both, handles form submissions, manages assets, tracks consent, and integrates with HubSpot and Attio

What we built

The public website

A 14-page B2B SaaS marketing site with everything a serious enterprise software company needs:

  • Home, Why Us, Platform tour, Use Cases, About, Resources (book / media / meetups), Careers, Brochure, Demo request, and the full GDPR-compliance suite (Privacy, Terms, Cookies, Subprocessors, Manage Privacy)
  • Fast, animated, SEO-optimized — sitemap auto-generated on every build
  • A built-in chatbot in the corner of every page so visitors can ask questions without filling out a form
  • Smooth scroll-triggered animations using Framer Motion
  • Carousels, FAQ sections, popup overlays, dynamic forms — all driven from the CMS, all updateable without a deploy
  • Fully responsive, accessibility-conscious, optimized for both mobile scrolling and desktop browsing

The admin panel

A separate, secure admin app where the marketing team logs in and controls the live site. Built around what they actually do, not around generic CMS concepts:

Asset management

  • Upload, replace, reorder any image, video, or PDF on any page
  • Tag each asset by page name (e.g. "homepage hero", "platform tour slide 3")
  • Add alt text for accessibility and SEO
  • The website pulls the latest assets automatically — no rebuild, no developer needed

Form builder + form responses

  • Create any form by adding fields in a clean interface
  • Tag each form to a specific page
  • See every submission in one place, filter by form/date/page
  • Each response shows the GDPR consent the visitor gave
  • Export to CSV when needed
  • Soft-delete and restore — nothing is ever permanently lost

Popup management

  • Launch a popup on any page
  • Choose the trigger: time-delay or scroll-percentage
  • Choose the type: newsletter signup, demo request, custom message
  • Toggle on or off without touching code

Newsletter signups

  • Every newsletter signup tracked with email and consent
  • Export the list for email campaigns
  • GDPR-compliant consent logged with each signup

Media blocks (the resources section)

  • Add new podcast episodes (audio files) and articles (URLs)
  • Set display order, icons, titles, descriptions
  • The website's resources page reflects the changes immediately

Cookie consent log

  • A full GDPR audit trail
  • Every visitor's accept/reject choice logged with timestamp, browser info, hashed IP, policy version, session ID
  • Exactly the kind of evidence the legal team needs in a privacy review

User management

  • Add admin users, change passwords, deactivate accounts
  • Each user has their own login with audit trail

The CRM integration — the unsexy bit that earns its keep every day

When a visitor fills out the demo form, this is what happens behind the scenes in the next two seconds:

  1. The form submission lands in the back-end
  2. The system searches HubSpot by email to see if the contact already exists
  3. If not, it creates a new contact with name, email, company, job title
  4. If yes, it updates the existing contact
  5. It creates a deal in the right pipeline with the right stage
  6. It attaches a note to the contact with the form details ("submitted demo request from /demo on 2026-04-09 with these answers...")
  7. It also pushes the contact into Attio (a parallel CRM the team uses)
  8. The form response is stored in the website database too, as a backup

The sales team never has to copy a thing. They open HubSpot in the morning and yesterday's leads are already there with full context.

Built-in GDPR compliance

Selling to US enterprises with EU operations means GDPR is a deal-blocker if you don't have it right. We built the consent log into the foundation:

  • Every visitor sees a cookie banner on first visit
  • Their accept/reject choice is logged with: a unique consent ID, timestamp, browser user-agent, hashed IP (for compliance without storing raw PII), session ID, and the version of the cookie policy in effect
  • "Manage Privacy" page lets visitors review and change their choices
  • Full Privacy Policy, Terms of Service, Cookies Policy, and Subprocessors page — all of them editable from the admin panel when the legal team needs to update them

Daily database backups

A scheduled job runs every day, exports every table from the website database into Excel files, zips them up, and stores them safely. If anything ever goes wrong, the marketing team has a complete daily snapshot to restore from.

Production deployment script

We wrote the production deployment so it's repeatable and secure: dedicated deploy user with limited sudo access, SSH key authentication only, root login disabled, password authentication disabled, proper file ownership for the web directories. The kind of hardening you'd want before exposing a public-facing site to the internet.

Three services, clean separation

  • Public website runs on its own port, serves the main site
  • Admin panel runs on its own port, serves the CMS subdomain
  • Backend API runs on its own port, serves both
  • All three on the same server, all three with separate environment configs (development vs production)

The hard part — and how we solved it

The temptation on a marketing website project is to underbuild — slap up some pages, plug in a form, call it done. Or to overbuild — pick a heavyweight headless CMS and spend three weeks configuring it.

The hard part on this project was actually the integration layer between the website and HubSpot. Most agencies treat this as an afterthought — "we'll send the form data to a webhook and let Zapier handle it." That falls apart the moment a form has more than a few fields, the moment the sales team wants the contact in a specific pipeline, the moment the legal team asks "where's the audit trail?"

We built the integration as a first-class feature of the back-end. When a form is submitted:

  • The system handles the upsert logic itself (find by email, update if exists, create if not) — not a webhook firing into a third party
  • The deal creation is targeted: the right pipeline, the right stage, the right deal name based on which form was filled out
  • The note attached to the contact has the actual form data, formatted readably, so a salesperson opening the contact sees the full context immediately
  • It's idempotent — if HubSpot has a temporary outage and the same form is retried, the contact doesn't get duplicated
  • Everything is logged — if a HubSpot push fails, the form response is still saved in the website database and can be replayed
  • The same logic runs in parallel against Attio, so the team gets the same record in both CRMs

The other "hard part" was making the admin panel feel like a product, not a tool. A bad admin panel is a confusing, jargon-laden interface where you're never sure what button does what. A good one feels like the team's own software — the labels match how they actually talk about their work, the workflows match what they actually do, and editing the live site never feels like "I might break something."

We solved this the way you always have to: by watching the marketing team do their actual job for a day, then designing the admin panel around what we saw — not around what a CMS-builder thinks an admin panel should be. The result: their team uses it without training. New hires figure it out in an afternoon. Nobody asks "where do I change X?" — because X is exactly where they'd expect it to be.


The outcome

  • Live in production — the public face of a US-based employee experience SaaS company
  • The marketing team runs the site themselves — every change to images, forms, popups, podcast episodes, blog content, careers listings happens in the admin panel without a developer ticket
  • Every form submission flows into HubSpot in seconds — contact created, deal opened, note attached, parallel push to Attio. Sales never copies a lead by hand.
  • Full GDPR compliance — cookie consent log with the audit trail the legal team needs. The site can be reviewed in a privacy audit and pass.
  • 14+ marketing pages covering everything a serious B2B SaaS needs — home, why us, platform tour, use cases, about, resources, careers, brochure, demo, and the full compliance suite
  • Built-in chatbot on every page so visitors can ask questions without filling out a form
  • Daily automated database backups — every table exported to Excel, zipped, stored safely
  • Production-hardened deployment — dedicated deploy user, SSH keys only, root login disabled
  • Three coordinated services — website + CMS + back-end API — running cleanly with separate concerns

The big-picture outcome: the SaaS team got the website they needed to compete in B2B SaaS, and they got control over it. They no longer file developer tickets to update a heading. They no longer copy leads from the website to HubSpot. They no longer worry about plugin conflicts breaking the site at 11pm.

And every visitor who lands on the site, fills out a demo form, signs up for the newsletter, or accepts the cookie banner is now flowing into the SaaS sales machine automatically — instead of disappearing into a spreadsheet that someone might process next Tuesday.

Read the full story

Finish reading — and take the PDF.

Drop your details to unlock the rest of US Employee-Experience SaaS Website + Custom CMS on this page and download the full write-up as a PDF.

No spam — we just need to know who's reading.