# Successful signup provides clear confirmation

- **Pattern:** `ab-002347` (`saas-onboarding.signup-flow.signup-success-confirmation`)
- **Severity:** medium
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-002347
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-002347)

## Why it matters

When signup succeeds silently, users cannot tell whether the click worked. Some retry the form and create duplicate attempts that the backend must deduplicate; others assume failure and leave entirely. The user-experience taxon treats acknowledgement of state changes as foundational: the moment an account is created is the single most important transition in the funnel, and a redirect with no toast, welcome screen, or onboarding handoff makes that transition invisible to the user who just completed it.

## Severity rationale

Medium because the account exists and the user is logged in, but confusion and duplicate-submission attempts erode the first-session experience.

## Remediation

Add an explicit success signal on the post-signup path. In `src/app/(auth)/signup/page.tsx`, fire a toast with a concrete confirmation message and route new users to a welcome or onboarding route rather than dropping them on the main dashboard. Many auth libraries expose an `isNewUser` flag you can branch on.

```tsx
const onSignup = async () => {
  await createAccount(data);
  toast.success('Welcome! Your account has been created.');
  router.push('/onboarding');
};
```

## Detection

- **ID:** `signup-success-confirmation`
- **Severity:** `medium`
- **What to look for:** Find what happens immediately after a successful account creation. Count all post-signup feedback mechanisms: redirect targets, toast/notification triggers, and confirmation screens. Quote the actual redirect path if found.
- **Pass criteria:** After successful signup, the user receives at least 1 clear confirmation mechanism that their account was created — either via a redirect to a welcome screen, a success toast/notification, or an onboarding flow that begins immediately. The user is never left wondering if signup worked.
- **Fail criteria:** After successful signup, the user is silently redirected to the main dashboard with no acknowledgment that their account was created. Or: the signup button shows a loading state indefinitely with no success or error feedback.
- **Skip (N/A) when:** No signup flow exists in the codebase.
- **Detail on fail:** `"Post-signup redirect lands directly on /dashboard with no success toast or welcome message. New users receive no confirmation their account was created and may attempt to sign up again."`
- **Remediation:** In the post-signup callback at `src/app/(auth)/signup/page.tsx`:

  ```tsx
  const onSignup = async () => {
    await createAccount(data);
    toast.success('Welcome! Your account has been created.');
    router.push('/onboarding');
  };
  ```

  Many auth libraries expose an `isNewUser` flag on the session for conditional routing.

---

Taxons: user-experience

HTML version: https://auditbuffet.com/patterns/ab-002347
