Skip to content

People & Access

Manage platform user accounts and roles, and use the People CRM to get a unified view of every supporter, donor, and volunteer across all modules.

Users Management


User Management

Creating Users

Navigate to Users (/app/users) and click Add User. Fill in name, email, and role. The user will receive a welcome email with login instructions.

Roles

Role Access Use Case
SUPER_ADMIN Full platform access Campaign managers
INFLUENCE_ADMIN Campaigns, responses, email queue Advocacy coordinators
MAP_ADMIN Locations, areas, shifts, canvassing Field organizers
USER Volunteer portal only Active volunteers
TEMP Limited volunteer access Shift signups (auto-created)

Password Policy

Passwords must be at least 12 characters with uppercase, lowercase, and a digit. This is enforced at the API schema level.

Deactivating Users

Edit a user from the Users page and toggle their active status. Deactivated users cannot log in but their data is preserved. Banned users have their sessions invalidated immediately.

Service Accounts Panel

When editing a user, the Service Accounts panel shows provisioning status for each integrated service (Rocket.Chat, Gitea, Vaultwarden, Listmonk). You can provision, deprovision, or re-sync individual services per user.


People CRM

Enable with enablePeople in Settings. The People module serves as the platform's CRM, aggregating data from all other modules into a unified view.

Virtual Aggregation

The People page does not store a separate "people" table. Instead, it aggregates records in real time from seven data sources:

Source Data
Users Platform accounts (name, email, phone, last login)
Address Occupants Named residents from the map/canvassing module
Campaign Senders People who sent advocacy emails
Shift Signups Volunteer shift registrants
SMS Contacts Contacts from SMS campaign lists
Donations/Orders Buyers from the payments module
Manual Contacts created directly in the CRM

Records are deduplicated by normalized email or phone number, with Users taking highest priority.

Managed Contacts

Any virtual person can be "promoted" to a managed Contact record. This creates a persistent Contact entity in the database with:

  • Display name, first/last name — editable independently of the source
  • Tags — custom CRM tags for segmentation and filtering
  • Notes — free-text notes field
  • Support level — LEVEL_1 (Strong) through LEVEL_4 (Opposition)
  • Opt-out flags — email opt-out, SMS opt-out, and do-not-contact
  • Sign requested — track yard sign status

Contact Details

Each managed contact supports multiple structured data entries:

  • Addresses — link to map locations with optional unit numbers and primary flag; new addresses can be auto-added to the map for geocoding
  • Emails — multiple email addresses with labels (e.g., Personal, Work) and primary designation
  • Phones — multiple phone numbers with labels and primary designation

Activity Timeline

View a chronological timeline of all interactions for a person, across every module:

  • Advocacy emails sent and responses submitted
  • Shift signups and canvass visits
  • Donations and product purchases
  • SMS messages sent and received
  • Video views
  • Notes added and contact merges

Duplicate Detection and Merge

The platform identifies potential duplicates by matching normalized email addresses and phone numbers across sources. The merge workflow lets you:

  • Select which fields to keep from the source vs. target contact
  • Merge tags, addresses, emails, and phones
  • Preserve the full audit trail (merged contacts are soft-linked, not deleted)

Connection Graph

Build a relationship graph between contacts using typed connections:

  • Connection types — Household, Family, Colleague, Referred By, and Custom
  • Bidirectional — connections can be one-way or mutual
  • Visual graph — interactive force-directed graph visualization showing contacts as nodes and connections as edges
  • Configurable depth — explore up to 3 degrees of separation

Generate shareable public profile pages for contacts:

  • Unique token URLs at /profile/:token
  • Configurable expiration — 24 hours, 7 days, 30 days, 90 days, 1 year, or never
  • Optional password protection — require a PIN or password to view

Household Detection

The Household panel groups contacts who share the same physical address, making it easy to see all members of a household and their combined engagement.

Create User from Contact

Promote a CRM contact to a full platform user account directly from the People interface, with role assignment and optional welcome email.


Admin Routes

  • /app/users — user CRUD, role assignment, service accounts
  • /app/people — contact list with search, filters, source/tag filtering, and bulk actions