Creating an account
This is the path a new producer takes to set themselves up: they create a user account and a production company in a single form, and automatically become that company’s admin.
This is not the contributor path — contributors don’t create accounts up-front; they’re invited per project. Contributors only end up with an account if they explicitly choose to associate their survey responses with one.
What happens
Section titled “What happens”sequenceDiagram
actor User
participant App as Your app
participant Ory as Identity system
User->>App: Open /create-account
App-->>User: Form: name, company, email, password
User->>App: Submit
App->>Ory: Register account (email + password)
Ory-->>App: Account created
App->>App: Create production company + assign user as admin
App->>App: Update user profile (name)
App-->>User: Redirect to projects list
The flow does three things in sequence: register an account in the identity system, create the production company, and store the user’s name on their profile.
What the user sees
Section titled “What the user sees”A single form with these fields:
| Field | What it’s for | Translation key |
|---|---|---|
| Name | The user’s name (becomes the producer-side display name) | auth.CreateAccount.labels.name |
| Company name | The production company they’re setting up | auth.CreateAccount.labels.company-name |
| Company URL (optional) | The company’s website | auth.CreateAccount.labels.company-url |
| Their account email | auth.CreateAccount.labels.email-address | |
| Password | Their account password (min 8 characters) | auth.CreateAccount.labels.password |
Plus:
| Visible text | Translation key |
|---|---|
| Page title | auth.common.create-account |
| Submit button | auth.CreateAccount.agree-and-create |
| Terms and conditions block | auth.CreateAccount.terms-and-condition (rich HTML, sanitised) |
| “Already have an account?” link | auth.CreateAccount.already-have-account |
A handful of toasts can appear on errors. The most user-relevant ones:
| Outcome | Translation key |
|---|---|
| Account already exists for this email | auth.CreateAccount.toast.account-exists (also redirects them to “Complete profile” so they can join an existing company instead) |
| Company creation failed | auth.CreateAccount.toast.create-failed-generic |
| Network error | auth.CreateAccount.toast.network-error |
| Profile update warning (account created but name didn’t save) | auth.CreateAccount.toast.profile-update-title / auth.CreateAccount.toast.profile-update-warning |
What you can customise
Section titled “What you can customise”Translations
Section titled “Translations”All form text lives under auth.CreateAccount.* in tep-configuration/translations/{locale}/main/auth.json. The terms-and-conditions block is rendered as HTML (sanitised) — you can include links and basic formatting.
Override per client in clients/{client}/translations/{locale}/overrides.json.
Email verification
Section titled “Email verification”If your Ory project is configured to send a verification email after account creation, the email itself is sent and templated by Ory — not by your app. Configure in the Ory dashboard.
Variations for your deployment
Section titled “Variations for your deployment”| Your deployment | What’s different |
|---|---|
| Customers with Ory verification enabled | A verification email is sent by Ory after account creation. The user can still log in immediately; the verification confirms their email is reachable. |
| Mock-auth mode (development only) | The identity step is skipped. Not relevant for customer deployments. |
Need more detail?
Section titled “Need more detail?”For code paths, the multi-mutation orchestration, and engineering notes, see Creating an account (engineering).