Adding & Removing Users on Voog | OpsBlu Docs

Adding & Removing Users on Voog

Adding & Removing Users on Voog — setup, configuration, and best practices for Voog.

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

  1. Log in to the Voog admin at https://your-site.voog.com/admin
  2. Navigate to Settings (gear icon in the sidebar)
  3. Click Users or Team
  4. Click Add user or Invite editor
  5. Enter the user's email address
  6. Select their role:
    • Editor -- Can edit pages, blog articles, media, and languages
    • Contributor -- Can edit content on assigned pages only
  7. 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:

  1. Open the user's profile after they accept the invitation
  2. Under Language access, select which language versions they can edit
  3. 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:

  1. Navigate to Settings > Users
  2. Find the editor in the list
  3. Click the Remove icon or button next to their name
  4. 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:

  1. Navigate to your site's membership settings
  2. Find the member in the people list
  3. 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:

  1. Change the user's role to the most restricted level available
  2. 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