ESS that actually gets used

Employee self-service portal for teams under 150

Most ESS portals look like SAP from 2009 and employees avoid them. CrewBase is built mobile-first, ships under your brand at your-company.crewbase.app, and lets employees do the things they actually need: submit requests, acknowledge policies, see leave balances, find documents.

Free 14-day trial · No credit card required · Set up in under 10 minutes

Why your last ESS rollout failed

Three classic patterns. Skip them this time.

Designed for HR, not employees

If the form has 14 fields and you can't do it on a phone, employees will email HR instead. ESS only saves time when the self-service path is genuinely faster than emailing.

Bolted onto an HRIS

Most HRIS portals look like database admin tools. The 'self-service' is technically there but it requires reading a wiki to use. Employees give up after one bad attempt.

Generic, not branded

Employees who land on a portal that says 'BambooHR' or 'Workday' don't feel ownership of it. Branded portals (your logo, your color, your subdomain) feel like internal tools — they get used.

Mobile-first

Designed to work from a phone first

Half the requests employees make come from phones — sick leave at 7am, expenses after a client lunch, photo of a hospital bill from a parking lot. CrewBase is mobile-first by default: 16px form fonts (no iOS auto-zoom), 44px touch targets, native date/time pickers, camera-attach for receipts, card-based mobile lists.

  • 16px input fonts — iOS won't auto-zoom on focus (the #1 ESS UX bug)
  • 44px touch targets per Apple guidelines
  • Camera shortcut for attachments on mobile (capture=environment)
  • Card-based mobile lists — no horizontal scrolling on phones
16px input fonts — iOS won't auto-zoom on focus (the #1 ESS UX bug)
44px touch targets per Apple guidelines
Camera shortcut for attachments on mobile (capture=environment)

Branded portal

Your-company.crewbase.app, your logo, your color

Each tenant gets a subdomain (acme.crewbase.app). The login page shows your logo and brand color, the email From address says 'Acme Inc. via CrewBase' — recipients see your name first. Employees don't feel like they're using a third-party tool; they feel like they're using your tool.

  • Subdomain branding — your-company.crewbase.app
  • Logo + brand color per tenant
  • Tenant-branded From: 'Acme via CrewBase <noreply@crewbase.app>'
  • Email subject sanitization — header injection blocked at the backend
Subdomain branding — your-company.crewbase.app
Logo + brand color per tenant
Tenant-branded From: 'Acme via CrewBase <noreply@crewbase.app>'

One stop

Requests, policies, documents — same portal

Employees don't want three tools for three workflows. The same portal handles: 16 request types (vacation, sick leave, expenses, overtime, etc.), policy campaigns (read & acknowledge with e-sign), document downloads, attendance corrections, and the built-in support form for tickets to HR or the SaaS team.

  • 16 built-in request types + custom types
  • Policy acknowledgement campaigns with completion tracking
  • Document attachments per request — files stay with the workflow
  • Built-in support tickets — employees ask HR without leaving the portal
16 built-in request types + custom types
Policy acknowledgement campaigns with completion tracking
Document attachments per request — files stay with the workflow

Roles

The right info for the right person

Employees see their own requests. Managers see direct reports. Admins see company-wide. Owners see everything plus billing. Confidential request types narrow further (admin-only). The role model is simple enough that a 5-person company gets it instantly and structured enough that a 150-person company doesn't outgrow it.

  • Four roles: Owner, Admin, Manager, Employee
  • Manager-direct-reports filtering automatically applies
  • Confidential request types restrict viewing to admins/owners
  • Per-request-type visibility for fine-grained control
Four roles: Owner, Admin, Manager, Employee
Manager-direct-reports filtering automatically applies
Confidential request types restrict viewing to admins/owners

Common questions about employee self-service portals

Do you replace our existing HRIS?

No. CrewBase is the self-service request + acknowledgement layer. Your HRIS (BambooHR, Gusto, Rippling, ADP, etc.) stays the source of truth for employee data, payroll, and benefits. CrewBase fills the gap between 'we have employee data' and 'employees can actually self-serve.' Most customers run both; we plug in via CSV export until a direct integration ships.

How do employees sign in?

Email + password by default. Each employee gets an invitation email when an admin adds them; they accept, set a password, and they're in. Argon2id password hashing, per-IP + per-email rate limiting on login, and self-serve password reset are all live. SSO via Google/Microsoft is on the roadmap.

What does 'mobile-first' mean specifically?

Every page is designed and tested at 360–390px viewport (Android Pixel + iPhone 14) before desktop. Inputs are 16px font (so iOS doesn't auto-zoom on focus, a common ESS UX bug). Touch targets are 44px (Apple's accessibility guideline). Lists collapse to mobile cards instead of horizontal-scrolling tables. We measured + tested every flow on a real phone before shipping.

Can we customize what employees see?

Yes. Admins control which request types are enabled, who can see which types (per-role, per-department, or per-employee visibility rules), and what the request form looks like (custom fields, validation, attachments). Two employees in the same company can have completely different portal experiences if their role and department warrant it.

How do you handle GDPR / data residency?

Data is stored in the US East region (Vercel + Prisma Postgres). Per-tenant data isolation is enforced at the database query layer (every query scopes by companyId; cross-tenant access is impossible without explicit code paths in our platform-admin tools). For EU customers, we don't yet offer a EU-region option — that's on the roadmap. The privacy policy at /privacy lists every sub-processor.

What's the cost vs traditional ESS?

A traditional HRIS with self-service runs $8–30 per seat per month. CrewBase is priced for small businesses — see the pricing page on the homepage. Most customers pay 1/3 to 1/5 of a full HRIS rate while getting the request + ESS workflows that were the main reason they wanted the HRIS.

Build the ESS your team will actually use

Mobile-first, branded, ready in 10 minutes. Free 14-day trial.

14-day free trial · Set up in under 10 minutes · Cancel any time