Voog is an Estonian-built multilingual website builder that manages users through its admin panel and REST API. It supports two user categories: site editors who manage content through the admin interface, and membership area users who access protected content on the front end.
How Voog User Management Works
Voog's permission model is straightforward:
- Site Owner -- The Voog account holder with full control over billing, design, and settings
- Editors -- Invited collaborators who can edit content, pages, and blog posts
- Contributors -- Users with limited editing capabilities (available on higher-tier plans)
- Membership Users -- Front-end users who register for access to protected content areas
The admin panel is accessed at https://your-site.voog.com/admin or your custom domain's admin path.
Adding Editors via Admin Panel
- Log in to the Voog admin at
https://your-site.voog.com/admin - Navigate to Settings (gear icon in the sidebar)
- Click Users or Team
- Click Add user or Invite editor
- Enter the user's email address
- Select their role:
- Editor -- Can edit pages, blog articles, media, and languages
- Contributor -- Can edit content on assigned pages only
- Click Send invitation
The invited user receives an email to accept and set up their Voog account.
Managing Language-Specific Access
Voog is built for multilingual websites. When adding editors:
- Open the user's profile after they accept the invitation
- Under Language access, select which language versions they can edit
- This is useful for translation teams where each editor manages a specific language
Adding Users via Voog API
Voog provides a REST API for programmatic user management:
# List all users on the site
curl "https://your-site.voog.com/admin/api/users" \
-H "X-API-TOKEN: your_api_token" \
-H "Content-Type: application/json"
# Invite a new editor
curl -X POST "https://your-site.voog.com/admin/api/users" \
-H "X-API-TOKEN: your_api_token" \
-H "Content-Type: application/json" \
-d '{
"email": "editor@company.com",
"role": "editor"
}'
Get details for a specific user:
curl "https://your-site.voog.com/admin/api/users/{user_id}" \
-H "X-API-TOKEN: your_api_token"
Managing Membership Area Users
For sites with protected content areas:
# Create a membership user
curl -X POST "https://your-site.voog.com/admin/api/people" \
-H "X-API-TOKEN: your_api_token" \
-H "Content-Type: application/json" \
-d '{
"email": "member@example.com",
"first_name": "Jane",
"last_name": "Member",
"send_invite": true
}'
# List all membership users
curl "https://your-site.voog.com/admin/api/people" \
-H "X-API-TOKEN: your_api_token"
Bulk User Management
Bulk Editor Invitations via API
// Node.js script for bulk editor invitations
const API_TOKEN = 'your_voog_api_token';
const SITE_URL = 'https://your-site.voog.com';
async function inviteEditor(email, role = 'editor') {
const response = await fetch(`${SITE_URL}/admin/api/users`, {
method: 'POST',
headers: {
'X-API-TOKEN': API_TOKEN,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, role }),
});
const data = await response.json();
if (response.ok) {
console.log(`Invited: ${email} as ${role}`);
} else {
console.error(`Failed: ${email} -`, data.message || response.status);
}
return data;
}
async function bulkInvite() {
const editors = [
{ email: 'editor1@company.com', role: 'editor' },
{ email: 'editor2@company.com', role: 'editor' },
{ email: 'translator-fr@company.com', role: 'contributor' },
{ email: 'translator-de@company.com', role: 'contributor' },
];
for (const editor of editors) {
await inviteEditor(editor.email, editor.role);
// Respect rate limits
await new Promise(resolve => setTimeout(resolve, 500));
}
}
bulkInvite();
Bulk Membership User Import
// Bulk import membership area users
async function importMembers(members) {
for (const member of members) {
const response = await fetch(`${SITE_URL}/admin/api/people`, {
method: 'POST',
headers: {
'X-API-TOKEN': API_TOKEN,
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: member.email,
first_name: member.firstName,
last_name: member.lastName,
send_invite: true,
}),
});
if (response.ok) {
console.log(`Created member: ${member.email}`);
} else {
const err = await response.json();
console.error(`Failed: ${member.email} -`, err.message);
}
await new Promise(resolve => setTimeout(resolve, 300));
}
}
importMembers([
{ email: 'member1@example.com', firstName: 'Member', lastName: 'One' },
{ email: 'member2@example.com', firstName: 'Member', lastName: 'Two' },
{ email: 'member3@example.com', firstName: 'Member', lastName: 'Three' },
]);
Removing and Deactivating Users
Removing Editors
Via Admin Panel:
- Navigate to Settings > Users
- Find the editor in the list
- Click the Remove icon or button next to their name
- Confirm the removal
Via API:
# Remove an editor
curl -X DELETE "https://your-site.voog.com/admin/api/users/{user_id}" \
-H "X-API-TOKEN: your_api_token"
The removed editor immediately loses access to the admin panel and editing interface. Their Voog account remains active for other sites they may manage.
Removing Membership Users
Via Admin Panel:
- Navigate to your site's membership settings
- Find the member in the people list
- Click Remove or Delete
Via API:
# Delete a membership user
curl -X DELETE "https://your-site.voog.com/admin/api/people/{person_id}" \
-H "X-API-TOKEN: your_api_token"
What Happens to Their Content
- Pages and articles edited by the removed user remain unchanged. Voog attributes content to the site rather than individual editors.
- Blog posts authored by the removed user stay published. The author name displayed on the front end may show as the removed user's name or default to the site name, depending on your template.
- Media uploads (images, files) remain in the media library regardless of who uploaded them.
- Membership users lose access to all protected content areas immediately. Their form submissions and any data collected through Voog forms remain in the system.
- Comments on blog posts from membership users remain visible.
Deactivating Without Deleting
Voog does not have a native "deactivate" toggle for editors. To effectively block access without deleting:
- Change the user's role to the most restricted level available
- Or remove them entirely and re-invite when needed
For membership users, some Voog plans support marking members as inactive through the admin panel.
SSO and Enterprise Authentication
Voog does not natively support SAML, LDAP, or OpenID Connect for admin or editor authentication. All users authenticate through Voog's built-in email/password system.
Available security features:
- Two-factor authentication for admin accounts (if available on your plan)
- API token authentication for programmatic access
- Invite-only editor access (no self-registration for admin users)
For membership areas, Voog supports:
- Email/password registration
- Invite-only membership (disable public registration)
- Custom registration forms with approval workflows
For organizations requiring centralized identity management, consider:
- Using API tokens with a secrets manager to control programmatic access
- Implementing a reverse proxy with authentication (e.g., Cloudflare Access) for additional security
- Maintaining a separate user directory and syncing membership users via the Voog API
Access Audit Checklist
- Review all editors under Settings > Users quarterly
- Verify each editor's language access matches their current translation responsibilities
- Check membership user lists for inactive or expired accounts
- Audit API tokens: regenerate tokens if team members with API access leave
- Verify that the site owner account has a strong password and current email
- Review blog post authorship to ensure accurate attribution
- Check that invite-only mode is enabled if you do not want public editor registration
- Document all editor and membership user changes in your access management log