Team member management
Access the team management page at/services/{service_id}/users to view and manage all team members.
User types
- Active users
- Invited users
- Platform admins
Users who have accepted their invitation and can access the service.Status:
Can: Log in, perform actions based on permissions
Location:
state: "active"Can: Log in, perform actions based on permissions
Location:
app/models/user.py:223Permission types
There are 5 core permission types in Notify:Manage settings, team and usage
UI Permission:manage_serviceDatabase Permissions:
manage_users, manage_settings
Users with this permission can:
- Add and remove team members
- Change service settings
- Configure branding and senders
- View usage and billing information
- Manage template folders
- Request go-live
This is the most powerful permission. At least 2 team members must have this permission before a service can go live.
See dashboard
UI Permission:view_activityDatabase Permission:
view_activity
Users can:
- View the service dashboard
- See notification statistics
- Access the notifications page
- View sent message details
- Download notification reports (if under 250,000 notifications)
- Access template usage statistics
Send messages
UI Permission:send_messagesDatabase Permissions:
send_texts, send_emails, send_letters
Users can:
- Send one-off notifications
- Upload and send bulk messages via CSV
- Send test messages to themselves
- Schedule notifications for later
Add and edit templates
UI Permission:manage_templatesDatabase Permission:
manage_templates
Users can:
- Create new templates
- Edit existing templates
- Delete templates
- Organize templates into folders
- View template version history
- Copy templates between services
Manage API integration
UI Permission:manage_api_keysDatabase Permission:
manage_api_keys
Users can:
- Create API keys
- Revoke API keys
- Configure guest lists
- Set up delivery status callbacks
- View API integration details
Platform admins cannot create or revoke API keys to prevent security issues.
Permission mappings
The system translates between UI-friendly permissions and database permissions:app/utils/user_permissions.py:5
Inviting users
Navigate to invite page
Go to
/services/{service_id}/users/invite (requires manage_service permission)Enter email address
Provide the email address of the person to invite.Validation:
- Government users: Must have a
.gov.ukor approved domain email - Non-government users: Additional verification required
Select permissions
Choose which permissions the user should have using checkboxes:
- Manage settings, team and usage
- See dashboard
- Send messages
- Add and edit templates
- Manage API integration
Configure folder access (optional)
If folder permissions are enabled, select which template folders the user can access.
app/main/views/manage_users.py:38
Inviting users from your organization
If inviting a user who:- Already has a Notify account
- Belongs to the same organization as your service
- Isn’t already a team member
/services/{service_id}/users/invite/{user_id}, which pre-fills their email address.
Editing user permissions
To modify an existing team member’s permissions:- Navigate to
/services/{service_id}/users/{user_id} - Update their permission checkboxes
- Modify folder access if needed
- Change authentication method (if not using security keys)
- Save changes
Changes are logged in the events system for audit purposes at
app/event_handlers.py.Authentication methods
Users can sign in using three methods:SMS authentication
Auth type:sms_auth
- User enters mobile number during registration
- Receives 6-digit code via text message on each login
- Code valid for 60 minutes
- Most secure for sensitive government services
Email authentication
Auth type:email_auth
- User receives a magic link via email
- Link valid for 60 minutes
- No mobile number required
- Only available if service has
email_authpermission
WebAuthn (Security keys)
Auth type:webauthn_auth
- Uses hardware security keys (like YubiKey)
- Most secure authentication method
- Cannot be changed to less secure method
- Managed at
app/models/webauthn_credential.py
Folder permissions
Whenedit_folder_permissions is enabled for a service, you can restrict users to specific template folders:
- Users can only see and edit templates in their assigned folders
- Platform admins and organization users can see all folders
- Top-level templates are always visible to everyone
- Checked at
app/models/user.py:290
- Multi-team services with separate template sets
- Restricting access to sensitive templates
- Delegating template management by department
Service join requests
For organizations withcan_ask_to_join_a_service enabled, users can request to join a service:
User submits request
User from the same organization requests access to the service.
Location:
Location:
app/models/service.py:216Manager reviews request
Navigate to
Implementation:
/services/{service_id}/join-request/{request_id}/approve to review.Implementation:
app/main/views/manage_users.py:131pending: Awaiting approvalapproved: User added to servicerejected: Request deniedcancelled: Request withdrawn by requester
app/constants.py:9-12
Removing users
To remove a user from a service:- Go to
/services/{service_id}/users/{user_id} - Click “Remove user from service”
- Confirm removal via POST to
/services/{service_id}/users/{user_id}/delete
app/main/views/manage_users.py:277.
Cancelling invitations
Invitations can be cancelled before they’re accepted:app/models/service.py:207
User account management
Team members can manage their own accounts:Change email address
- Navigate to user profile settings
- Update email address
- Verify new address via confirmation email
- Government users must use approved domains
app/main/views/manage_users.py:282
Change mobile number
- Update mobile number for SMS authentication
- Verify via code sent to new number
- Required for users with
sms_authauthentication
Email validation
Users must revalidate their email every 90 days:app/models/user.py:132
Failed login attempts
Accounts are locked after 10 failed login attempts:app/models/user.py:48, app/models/user.py:322
Locked accounts can be unlocked by:
- Platform administrators
- Waiting for automatic unlock (implementation dependent)
Organization permissions
Organization users have separate permissions from service permissions: Permission:can_make_services_live
Organization users with this permission can:
- Approve go-live requests for services in their organization
- Only if organization has
can_approve_own_go_live_requests - Checked at
app/models/user.py:458
app/utils/user_permissions.py:24