Sarah clicks Start Free Trial on the homepage. She is taken to the trial signup page — a clean form asking for her first name, last name, work email, company name, address, preferred plan, and billing interval.
She selects the PRO plan with monthly billing. No credit card required — just her details. She clicks Start Free Trial.
Sarah fills every required field correctly. The form validates on the client side and submits the signup request.
Behind the scenes, the system creates her company, sets up her subscription as a trial, and queues an invitation email with an OTP. In seconds, she sees a success message: "Check your email to verify your account."
| Failure | What the user sees | What happens next |
|---|---|---|
| Empty required field | Field highlighted with validation message | User fills it in and resubmits |
| Invalid email format | "Enter a valid work email" | User corrects the email |
| Invalid plan selection | Show available plans | User picks a valid plan |
| Invalid billing interval | "Select MONTHLY or ANNUAL" | User corrects selection |
| Email already used for trial | "This email already has a trial" | User signs in instead, or contacts support |
| Domain already used for trial | "Your company already has a trial" | Existing trial must convert or expire first |
| IP used for too many trials | "Too many trials from this network" | Contact support |
| Company name already taken | "Company name already exists" | User chooses a different name |
| Company creation fails | Error message, no partial state created | Everything rolls back, user tries again |
| OTP email fails to send | "Check your email" with resend option | User clicks resend, or contacts support |
| Rate limited (too many signups) | "Too many attempts, try again later" | User waits and retries |
| Transaction timeout | Generic error | Rollback, user retries |
| Scenario | Behavior | Why |
|---|---|---|
| User closes browser mid-flow | No partial state — transaction either completes or rolls back | Provisioning is all-or-nothing |
| User double-clicks submit | Duplicate submission blocked | Idempotency prevents duplicate companies |
| Plan is ENTERPRISE | No self-serve trial, redirect to contact sales | Enterprise requires custom onboarding |
| Direct signup page visited | Redirected to the trial signup page | Direct signup is disabled for this deployment |
| Trial expires without subscribing | Company access restricted, billing page shown | Protects against unpaid usage |
| 7 / 3 / 1 day before trial ends | Email reminders sent automatically | Gives user time to subscribe before lockout |
ZettaHRM
A modern HRM workspace for employee management, attendance tracking, leave approvals and structured day-to-day HR operations.