Complete guide to managing team member accounts in Duda, including adding collaborators, adjusting permissions, and offboarding staff members.
Prerequisites
To manage team members, you must:
- Be the account owner, OR
- Have Staff Manager or Admin permissions
- Have an active Duda plan (Team plan or higher for multiple users)
Plan Limits:
- Basic: 1 user (account owner only)
- Team: Up to 4 team members
- Agency: Up to 10 team members
- White Label: Up to 50 team members
- Custom: Unlimited team members
Adding Team Members to Duda
Method 1: Dashboard Team Management
Best for: Adding individual team members, general user management
Step 1: Access Team Settings
Dashboard → Settings (gear icon) → Team → Team Members
Screenshot reference: /screenshots/duda-team-settings.png
Step 2: Invite New Team Member
- Click "Invite Team Member" button
- Enter team member information:
Required Fields:
- Email address: Must be unique (not already a team member)
- First name: Team member's first name
- Last name: Team member's last name
Optional Fields:
- Phone number: For notifications
- Language: Interface language preference
Step 3: Assign Role and Permissions
Select role from dropdown:
- Admin: Full account access (except billing)
- Staff Manager: Manage team and site permissions
- Designer: Create and edit sites
- Developer: Code access and advanced features
- Site Contributor: Limited editing per site
- Client: View-only or specific site access
See Roles & Permissions for detailed role descriptions.
Step 4: Assign Site Access (Optional)
For non-Admin roles:
- Select specific sites team member can access
- Choose permission level per site:
- Full Edit: Complete site editing
- Limited Edit: Content only
- Stats Only: Analytics access
Site group assignments:
- Assign to site groups for bulk access
- Useful for agencies managing client sites
Step 5: Send Invitation
- Review invitation details
- Click "Send Invitation"
- Email sent to team member containing:
- Link to accept invitation
- Instructions to create password
- Access details
Invitation status: Shows "Pending" until accepted
Invitation expiration: 7 days (can be resent)
Step 6: Team Member Accepts Invitation
Team member receives email and:
- Clicks invitation link
- Creates Duda account (if new user)
- Sets password (minimum 8 characters)
- Verifies email (confirmation link)
- Accesses dashboard with assigned permissions
Method 2: Client Access (Site-Specific)
Best for: Giving clients access to their specific site
Client Portal Access
Select Site → Settings → Client Permissions → Invite Client
Client invitation:
- Enter client email
- Select permissions:
- View Stats: Analytics only
- Edit Content: Content updates
- Full Edit: Complete site editing
- No Access: Revoke access
- Send invitation
Client features:
- Simplified interface
- Site-specific access only
- Can't access other sites
- Mobile app access available
Method 3: API-Based Team Management
Best for: White label partners, automated user provisioning
API Endpoint
POST https://api.duda.co/api/accounts/{{account_name}}/team/members
Authorization: Basic {{base64_credentials}}
Content-Type: application/json
Request Body
{
"email": "john.doe@agency.com",
"first_name": "John",
"last_name": "Doe",
"role": "DESIGNER",
"site_permissions": [
{
"site_name": "site-12345",
"permissions": ["EDIT", "PUBLISH"]
}
]
}
JavaScript Example
const axios = require('axios');
async function addDudaTeamMember() {
const credentials = Buffer.from(
`${API_USER}:${API_PASSWORD}`
).toString('base64');
try {
const response = await axios.post(
'https://api.duda.co/api/accounts/your-account/team/members',
{
email: 'john.doe@agency.com',
first_name: 'John',
last_name: 'Doe',
role: 'DESIGNER',
site_permissions: [
{
site_name: 'site-12345',
permissions: ['EDIT', 'PUBLISH']
}
]
},
{
headers: {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/json'
}
}
);
console.log('Team member added:', response.data);
} catch (error) {
console.error('Error:', error.response.data);
}
}
Python Example
import requests
import base64
def add_duda_team_member():
credentials = base64.b64encode(
f"{API_USER}:{API_PASSWORD}".encode()
).decode()
headers = {
'Authorization': f'Basic {credentials}',
'Content-Type': 'application/json'
}
data = {
'email': 'john.doe@agency.com',
'first_name': 'John',
'last_name': 'Doe',
'role': 'DESIGNER',
'site_permissions': [
{
'site_name': 'site-12345',
'permissions': ['EDIT', 'PUBLISH']
}
]
}
response = requests.post(
'https://api.duda.co/api/accounts/your-account/team/members',
json=data,
headers=headers
)
return response.json()
Managing Existing Team Members
View Current Team
Access team list:
Dashboard → Settings → Team → Team Members
Information displayed:
- Name and email
- Role assignment
- Site access count
- Last login date
- Active/Pending status
Edit Team Member Permissions
Change Role
- Navigate to: Settings → Team → Team Members
- Click team member name
- Select new role from dropdown
- Modify site access if needed
- Click "Save Changes"
When to change roles:
- Promotion or role change
- Project completion
- Temporary elevated access
- Reducing permissions
Modify Site Access
Add site access:
- Edit team member
- Site Access section
- Click "Add Sites"
- Select sites and permission level
- Save
Remove site access:
- Edit team member
- Find site in access list
- Click "Remove"
- Confirm removal
Bulk site assignment:
- Use site groups
- Assign entire group at once
- Modify group membership to update access
Resend Invitation
For pending invitations:
Settings → Team → Team Members → Find pending user → Resend Invitation
Use cases:
- Invitation expired (7 days)
- Email not received
- Invitation link broken
Temporarily Disable Access
Suspend without deletion:
- Edit team member
- Status: Change to "Inactive"
- Save
Effects:
- Cannot log in
- Retains account and permissions
- Can be reactivated
- No email sent
Use for:
- Temporary leave
- Investigation periods
- Seasonal workers
- Between projects
Removing Team Members from Duda
Pre-Removal Checklist
Before removing a team member:
- Transfer site ownership if they're primary owner
- Reassign active projects to other team members
- Export their work if needed
- Document removal reason for records
- Notify stakeholders if applicable
- Review recent activity for any issues
- Check client sites they managed
Method 1: Remove from Dashboard
Step 1: Navigate to Team Settings
Settings → Team → Team Members
Step 2: Select Team Member
- Find team member in list
- Click team member name or Actions menu
Step 3: Remove Team Member
- Click "Remove Team Member" button (bottom of edit screen)
- Confirmation dialog appears:
Are you sure you want to remove [Name]? This will revoke all access immediately. Site ownership will need to be transferred. - Click "Remove" to confirm
Step 4: Transfer Site Ownership
If team member owned sites:
- System prompts for ownership transfer
- Select new owner from dropdown
- Apply to all sites or select individually
- Confirm transfer
What happens:
- Access revoked immediately
- Cannot log into account
- Email notifications stop
- Site ownership transferred
- Activity history preserved
Method 2: Remove via API
API Endpoint
DELETE https://api.duda.co/api/accounts/{{account_name}}/team/members/{{member_email}}
Authorization: Basic {{base64_credentials}}
Example
async function removeDudaTeamMember(memberEmail) {
const credentials = Buffer.from(
`${API_USER}:${API_PASSWORD}`
).toString('base64');
try {
await axios.delete(
`https://api.duda.co/api/accounts/your-account/team/members/${encodeURIComponent(memberEmail)}`,
{
headers: {
'Authorization': `Basic ${credentials}`
}
}
);
console.log('Team member removed successfully');
} catch (error) {
console.error('Error:', error.response.data);
}
}
Method 3: Bulk Team Member Removal
Via Dashboard (one at a time):
- Settings → Team → Team Members
- Select first team member
- Remove and transfer sites
- Repeat for each member
- Document each removal
async function bulkRemoveTeamMembers(emails) {
for (const email of emails) {
try {
await removeDudaTeamMember(email);
console.log(`Removed: ${email}`);
// Rate limiting
await new Promise(resolve => setTimeout(resolve, 1000));
} catch (error) {
console.error(`Failed to remove ${email}:`, error.message);
}
}
}
// Usage
bulkRemoveTeamMembers([
'former-employee1@company.com',
'former-employee2@company.com'
]);
Special Scenarios
Removing Account Owner
Account owner cannot be removed directly
To change owner:
- Add new owner as team member
- Upgrade to Admin role
- Contact Duda support to transfer account ownership
- Billing transfers to new owner
- Old owner becomes regular team member
- Remove old owner if needed
Required for:
- Selling agency
- Ownership change
- Company restructuring
Client Access Revocation
Remove client from specific site:
Select Site → Settings → Client Permissions → Find client → Remove Access
Effects:
- Can't access site editor
- Can't view stats
- Email notifications stop
- No data deleted
Use when:
- Project completed
- Client switched to different platform
- Contract ended
- Client requested removal
Emergency Access Removal
Security incident response:
- Immediately disable account: Set to Inactive
- Change site passwords: If applicable
- Review recent activity: Check Site History
- Audit changes made: Review published content
- Reset API credentials: If they had access
- Remove from integrations: Third-party tools
- Document incident: Security log
Post-incident:
- Investigate what happened
- Review permissions of all team
- Implement additional security measures
- Update access policies
Contractor/Freelancer Management
Project-based access:
Start of project:
- Add as Designer or Developer
- Grant specific site access
- Set expected end date (calendar reminder)
End of project:
- Review completed work
- Transfer site ownership
- Export final files
- Remove access
- Send confirmation email
Recurring contractors:
- Keep account inactive between projects
- Reactivate when needed
- Update site access per project
- Track hours/work via site history
White Label Account Management
Multi-Tier User Structure
For white label partners:
White Label Account (You)
├── Sub-Account 1 (Client A)
│ ├── Team Member 1
│ ├── Team Member 2
│ └── Sites (10)
├── Sub-Account 2 (Client B)
│ ├── Team Member 1
│ └── Sites (5)
└── Agency Team
├── Admin
├── Designers (5)
└── Developers (3)
Staff Account Types
Agency staff (your team):
- Managed at white label level
- Access across sub-accounts
- Full feature access
Client staff (sub-account):
- Managed by client or you
- Limited to their sub-account
- Restricted features
Site-specific:
- Individual site access
- No account-level access
- Ideal for contractors
Team Collaboration Features
Team Notifications
Configure notifications:
Settings → Team → Notifications
Notification types:
- Site published
- Team member added/removed
- Client feedback received
- Site transfer requested
- Form submissions
Per-user settings:
- Email notifications
- In-app notifications
- SMS alerts (premium)
Site Comments and Mentions
Collaborate on sites:
- Use @mentions in site editor
- Leave comments on elements
- Assign tasks to team members
- Track conversation history
Access:
- Editor mode → Comment icon
- Mention team member: @name
- Notifications sent automatically
Monitoring and Auditing
View Team Activity
Activity log:
Settings → Team → Activity Log
Tracked activities:
- Logins and logouts
- Sites accessed
- Changes made
- Content published
- Team member changes
- Role modifications
Filter by:
- Team member
- Date range
- Site
- Action type
Regular Access Reviews
Best practice schedule: Quarterly
Review checklist:
- List all active team members
- Verify employment status
- Check role appropriateness
- Review site access
- Identify inactive accounts (90+ days)
- Remove unnecessary access
- Update documentation
Best Practices
Adding Team Members
Do:
- ✓ Use least privilege principle
- ✓ Grant site-specific access when possible
- ✓ Set expected access duration
- ✓ Document reason for access
- ✓ Send secure password separately
- ✓ Review access after 30 days
Don't:
- ✗ Give Admin by default
- ✗ Share login credentials
- ✗ Add before employment confirmed
- ✗ Grant access to all sites unnecessarily
Removing Team Members
Do:
- ✓ Remove access same day as departure
- ✓ Transfer site ownership first
- ✓ Export important work
- ✓ Document removal
- ✓ Notify relevant clients
- ✓ Review for any issues
Don't:
- ✗ Delay removal
- ✗ Leave inactive accounts
- ✗ Forget to transfer sites
- ✗ Delete without documentation
Troubleshooting
Can't Add Team Member - Plan Limit
Error: "You've reached your team member limit"
Solutions:
- Remove inactive members
- Upgrade plan: Team → Agency or higher
- Use client access: For client-facing users
- Site-specific access: Instead of team member
Invitation Not Received
Checklist:
- Check spam/junk folder
- Verify email address spelling
- Invitation not expired (7 days)
- Email server not blocking
Fix:
- Resend invitation
- Use different email address
- Contact Duda support
Can't Remove Team Member
Possible causes:
- You lack permissions: Must be Admin or Staff Manager
- They own sites: Transfer ownership first
- Account owner: Can't remove owner
- Active sessions: May need to wait
Solutions:
- Transfer site ownership
- Request owner assistance
- Check your role permissions
Team Member Can't Access Sites
Debug steps:
- Verify account active: Check status
- Check site permissions: Edit member access
- Confirm invitation accepted: Look for "Pending"
- Clear browser cache: Have user try
- Try different browser: Rule out browser issue
Common fixes:
- Resend invitation
- Manually add site access
- Update role permissions
- Contact Duda support
Site Ownership Transfer Failed
Issue: Can't transfer site to another team member
Requirements:
- New owner must be team member (not client)
- New owner must have appropriate role
- You must have Admin or Staff Manager role
Fix:
- Add new owner as team member first
- Assign appropriate role
- Transfer ownership
- Remove old owner if needed
Next Steps
- Duda Roles & Permissions - Detailed permission guide
- Duda User Management Overview - General concepts
- Duda Help Center