45 KiB
Administrator Guide
Overview
The Administrator role is the highest-level role in Changemaker Lite. As an administrator, you have complete control over the platform, including:
- User management: Create, edit, suspend, and delete user accounts
- Campaign oversight: Manage all advocacy campaigns and moderate responses
- Location and mapping: Import locations, create territorial cuts, and organize canvassing efforts
- Volunteer coordination: Create shifts, manage signups, and monitor canvassing activity
- Site configuration: Configure global settings, themes, email, and feature toggles
- Content management: Create landing pages, edit email templates, and manage media library
- Monitoring: View queue status, geocoding quality, and system health
This guide will walk you through all administrative functions in Changemaker Lite V2.
Getting Started
First Login
When you first access Changemaker Lite, you'll log in at the admin portal URL:
https://app.cmlite.org
Or if running locally:
http://localhost:3000
Default credentials (change immediately after first login):
- Email:
admin@example.com - Password:
Admin123!
!!! danger "Security Critical" The default password is publicly known. Change it immediately after your first login to prevent unauthorized access.
Screenshot placeholder: Login page showing email/password fields and "Remember me" checkbox
Dashboard Overview
After logging in, you'll see the Administrator Dashboard, which provides an at-a-glance overview of your platform:
Key dashboard sections:
-
Statistics Cards
- Total users (breakdown by role)
- Active campaigns
- Total locations
- Active canvass sessions
-
Recent Activity Feed
- New user registrations
- Campaign responses
- Shift signups
- Canvass visits
-
Quick Actions
- Create new campaign
- Import locations
- Create volunteer shift
- View email queue
-
System Health
- API status
- Database connectivity
- Redis cache status
- Queue worker status
Screenshot placeholder: Dashboard showing statistics cards, activity feed, and quick action buttons
Changing Your Password
!!! warning "Required First Step" You must change the default password before performing any other administrative tasks.
To change your password:
- Click your email address in the top-right corner
- Select "Change Password" from the dropdown
- Enter your current password
- Enter new password (must meet requirements below)
- Confirm new password
- Click "Update Password"
Password requirements:
- Minimum 12 characters
- At least one uppercase letter (A-Z)
- At least one lowercase letter (a-z)
- At least one digit (0-9)
- Cannot reuse recent passwords
Screenshot placeholder: Change password modal showing current/new password fields and requirements checklist
Navigating the Admin Interface
The admin interface uses a sidebar navigation with the following sections:
Main Navigation:
- Dashboard — Overview and quick actions
- Influence — Campaigns, responses, representatives, email queue
- Map — Locations, cuts, shifts, map settings, data quality
- Canvass — Dashboard, sessions, activity reports
- Content — Landing pages, email templates, media library
- Services — Listmonk, Pangolin, docs, integrations
- Observability — Monitoring, metrics, alerts
- Users — User management
- Settings — Global site settings
Screenshot placeholder: Sidebar navigation showing expanded Influence and Map sections
User Management
Creating Users
To create a new user:
- Navigate to Users in the sidebar
- Click "Create User" button (top-right)
- Fill in user details:
- Email: User's email address (must be unique)
- Name: User's full name
- Password: Temporary password (user should change on first login)
- Role: Select from dropdown (see roles below)
- Status: ACTIVE or SUSPENDED
- Click "Create"
The new user will receive a welcome email (if email is configured) with their login credentials.
Screenshot placeholder: Create User modal showing email, name, password, role dropdown, and status toggle
Understanding Roles
Changemaker Lite has five user roles with different permission levels:
1. SUPER_ADMIN (You)
- Access: Everything
- Capabilities: All administrative functions, user management, site configuration
- Use case: Primary administrator(s)
2. INFLUENCE_ADMIN
- Access: Influence module only
- Capabilities:
- Create and manage campaigns
- Moderate responses
- View representative cache
- Monitor email queue
- Restrictions: Cannot manage users, locations, or site settings
- Use case: Campaign managers who don't need full admin access
3. MAP_ADMIN
- Access: Map module only
- Capabilities:
- Import and manage locations
- Create cuts
- Organize shifts
- Monitor canvassing
- Restrictions: Cannot manage users, campaigns, or site settings
- Use case: Field organizers, volunteer coordinators
4. USER
- Access: Volunteer portal only
- Capabilities:
- View assigned shifts
- Start canvassing sessions
- Record door visits
- View own activity
- Restrictions: Cannot access admin areas
- Use case: Regular volunteers
5. TEMP
- Access: Very limited, volunteer portal only
- Capabilities:
- Sign up for public shifts (creates TEMP account automatically)
- Cannot start canvassing sessions
- Restrictions: Cannot access most features until upgraded to USER
- Use case: Anonymous shift signups (converted to USER by admin)
!!! tip "Role Upgrading" You can upgrade TEMP users to USER role to give them full volunteer access. This is common after a volunteer attends their first shift.
Screenshot placeholder: User list table showing users with different roles and color-coded role badges
Managing Existing Users
The Users page shows all user accounts in a searchable, filterable table.
Table columns:
- Name — User's full name
- Email — Login email
- Role — Current role (color-coded badge)
- Status — ACTIVE (green) or SUSPENDED (red)
- Last Login — Most recent login timestamp
- Created — Account creation date
- Actions — Edit, suspend/activate, delete
Available filters:
- Search: Search by name or email
- Role filter: Show only specific roles
- Status filter: Active, suspended, or all
- Date range: Filter by creation date
Screenshot placeholder: Users table with search bar, role filter dropdown, and action buttons
Editing Users
To edit a user:
- Click the Edit icon (pencil) in the Actions column
- Modify any of:
- Name
- Email (must remain unique)
- Role (change permissions)
- Status (activate/suspend)
- Click "Save"
!!! warning "Email Changes" Changing a user's email will require them to log in with the new email address. Notify them before making this change.
Suspending Users
To temporarily disable a user account:
- Find the user in the table
- Click "Suspend" in the Actions column
- Confirm suspension
Suspended users:
- Cannot log in
- Existing sessions are invalidated immediately
- Can be reactivated at any time
- Data and history are preserved
When to suspend:
- Volunteer is temporarily unavailable
- Security concerns (investigate before deleting)
- User requests account pause
Screenshot placeholder: Suspend confirmation dialog explaining effects
Password Resets
To reset a user's password:
- Edit the user
- Click "Reset Password"
- Choose one of:
- Generate temporary password (shown on screen, expires in 24 hours)
- Send reset email (user clicks link to set new password)
- Provide temporary password to user securely (not via email)
!!! tip "Security Best Practice" Always use "Send reset email" option when possible. Only generate temporary passwords for in-person support scenarios.
Deleting Users
!!! danger "Permanent Action" Deleting a user is permanent and cannot be undone. All associated data (canvass visits, responses, etc.) will be anonymized.
To delete a user:
- Click the Delete icon (trash) in the Actions column
- Type the user's email to confirm
- Click "Delete Permanently"
When deletion is appropriate:
- Duplicate accounts
- Test accounts in production
- User requests account deletion (GDPR compliance)
Data handling on deletion:
- User account record is deleted
- Associated content (responses, visits) remains but user reference is nullified
- Email queue jobs remain (email address is preserved for audit)
Viewing Login Activity
To see recent login activity:
- Navigate to Users
- Check the "Last Login" column
- Click on a user to see detailed login history (if audit logging is enabled)
Screenshot placeholder: User detail view showing login history table with timestamps and IP addresses
Campaign Management
Campaign Overview
Campaigns are at the heart of the Influence module. A campaign allows citizens to:
- Enter their postal code
- Find their elected representatives
- Send advocacy emails
- Share their story on a public response wall
As an administrator, you can create, configure, publish, and monitor campaigns.
Creating a Campaign
To create a new campaign:
- Navigate to Influence > Campaigns
- Click "Create Campaign" (top-right)
- Fill in the campaign form (see fields below)
- Click "Create"
Required fields:
Basic Information:
- Title: Campaign name (shown to public)
- Example: "Protect Our Climate"
- Slug: URL-friendly identifier (auto-generated from title)
- Example:
protect-our-climate - Used in public URL:
/campaigns/protect-our-climate
- Example:
- Description: Campaign overview (supports HTML)
- Shown on campaign listing page
- Recommended: 2-3 sentences
Email Configuration:
- Email Subject: Subject line for advocacy emails
- Example: "Please support climate action legislation"
- Variables supported:
{{USER_NAME}},{{REP_NAME}}
- Email Body: The email message citizens send
- HTML editor available
- Variables:
{{USER_NAME}},{{USER_EMAIL}},{{REP_NAME}},{{REP_EMAIL}},{{USER_MESSAGE}} - Preview before publishing
Targeting:
- Government Level: FEDERAL, PROVINCIAL, or MUNICIPAL
- Determines which representatives are looked up
- Can select multiple levels
Screenshot placeholder: Create Campaign form showing title, slug, description, email subject, and body editor
Understanding Feature Flags
Campaigns have 12 feature flags that control functionality:
Core Features
-
Published
- Controls public visibility
- Unpublished campaigns only visible to admins
- Toggle to launch/pause campaign
-
Featured
- Featured campaigns appear at top of listing page
- Use for high-priority campaigns
- Limit to 2-3 featured campaigns
-
Has Response Wall
- Enables public response wall
- Citizens can share their story after emailing
- Responses require admin approval (unless
auto_approve_responses)
-
Collect Phone Numbers
- Adds optional phone number field
- Used for call-in campaigns
- Numbers stored for admin use
-
Track Calls
- Adds "I called my representative" button
- Tracks call attempts separately from emails
- Good for blended campaigns
Advanced Features
-
Require Verification
- Sends verification email before submitting
- Prevents spam and bot submissions
- Recommended for public campaigns
-
Auto Approve Responses
- Response wall submissions appear immediately
- No admin moderation required
- Only use for trusted campaigns
-
Allow Anonymous
- Citizens can submit without creating account
- Reduces friction but limits tracking
- Good for privacy-sensitive topics
-
Custom Recipients
- Override representative lookup
- Send to specific email addresses
- Use for non-government campaigns
-
Show Progress Bar
- Displays email count goal and progress
- Motivates participation
- Requires setting
email_goalfield
-
Disable After Date
- Automatically unpublish after specified date
- Good for time-sensitive campaigns
- Requires setting
disable_datefield
-
Enable Comments
- Allow comments on response wall entries
- Creates discussion threads
- Requires moderation
Screenshot placeholder: Campaign feature flags showing toggles for all 12 flags with descriptive labels
!!! tip "Recommended Defaults" For most campaigns, enable: Published, Has Response Wall, Require Verification. Leave others off unless specifically needed.
Configuring Email Template
The email template is what citizens send to their representatives. Make it:
Effective email guidelines:
- Personal: Use variables like
{{USER_NAME}}to personalize - Clear: State the ask in first paragraph
- Specific: Reference specific legislation or issue
- Respectful: Professional tone, even if issue is urgent
- Actionable: Tell representatives exactly what you want them to do
Example template:
Subject: Please vote YES on Bill C-123 for climate action
Dear {{REP_NAME}},
My name is {{USER_NAME}}, and I am a constituent in your riding. I'm writing to urge you to vote YES on Bill C-123, the Climate Action Framework.
Climate change is the defining issue of our generation. This bill provides a realistic pathway to reduce emissions while protecting jobs and supporting workers.
I'm specifically asking you to:
1. Vote YES on Bill C-123 when it comes to the floor
2. Speak publicly in support of climate action
3. Oppose any amendments that weaken the bill
Thank you for considering my views. I look forward to your response.
Sincerely,
{{USER_NAME}}
{{USER_EMAIL}}
---
{{USER_MESSAGE}}
Available variables:
{{USER_NAME}}— Citizen's full name{{USER_EMAIL}}— Citizen's email address{{USER_PHONE}}— Citizen's phone (if collected){{REP_NAME}}— Representative's name{{REP_EMAIL}}— Representative's email{{REP_TITLE}}— Representative's title (MP, MPP, Councillor){{USER_MESSAGE}}— Custom message from citizen (optional field)
Screenshot placeholder: Email template editor showing subject and body fields with variable insertion dropdown
Publishing a Campaign
Before publishing, verify:
- Email template is proofread (send test email to yourself)
- Feature flags are configured correctly
- Representative lookup is working (test with your postal code)
- Response wall moderation is ready (if enabled)
To publish:
- Edit the campaign
- Toggle "Published" flag to ON
- Click "Save"
The campaign is now live at /campaigns/[slug].
Promoting your campaign:
- Share direct link:
https://yourdomain.org/campaigns/protect-our-climate - Embed in email newsletter
- Post on social media
- Add to landing page
Screenshot placeholder: Published campaign card on public campaigns listing page
Monitoring Email Sends
To view email statistics:
- Navigate to Influence > Campaigns
- Click "Emails" button in the Actions column for your campaign
The Campaign Emails drawer shows:
Statistics:
- Total emails sent
- Successful deliveries
- Failed deliveries
- Emails waiting in queue
Email list table:
- Recipient name and email
- Status (PENDING, SENT, FAILED)
- Sent timestamp
- Representative targeted
- Error message (if failed)
Actions:
- Retry failed: Re-queue failed emails
- Export CSV: Download full email list
Screenshot placeholder: Campaign Emails drawer showing statistics cards and email list table
Managing the Email Queue
The email queue processes advocacy emails asynchronously using BullMQ.
To monitor queue health:
- Navigate to Influence > Email Queue
Queue statistics:
- Waiting: Emails queued but not yet processing
- Active: Emails currently being sent
- Completed: Successfully sent emails (last 24 hours)
- Failed: Failed emails requiring retry
- Delayed: Scheduled for future sending
Queue controls:
- Pause Queue: Stop processing new emails (emergencies only)
- Resume Queue: Restart after pause
- Clean Completed: Remove old completed jobs (frees memory)
- Retry Failed: Re-queue all failed emails
!!! warning "Queue Pausing" Only pause the queue during system maintenance or if email configuration is broken. Citizens expect immediate sends.
Screenshot placeholder: Email Queue page showing statistics cards, job counts, and control buttons
Moderating Responses
If your campaign has "Has Response Wall" enabled, citizens can share their stories publicly.
To moderate responses:
- Navigate to Influence > Responses
- Use filters to find pending responses
- Review each response
- Approve or reject
Response filters:
- Campaign: Filter by specific campaign
- Status: PENDING, APPROVED, REJECTED
- Search: Search response text
- Date range: Filter by submission date
Response table columns:
- Name: Citizen's name
- Campaign: Which campaign
- Status: Approval status (color-coded)
- Upvotes: Number of upvotes received
- Submitted: Submission date
- Actions: View, approve, reject, delete
Screenshot placeholder: Responses table with filter controls and status badges
To review a response:
- Click "View" in Actions column
- Read full response text
- Decide:
- Approve: Make public (appears on response wall)
- Reject: Hide from public (not deleted)
- Delete: Permanently remove
Moderation guidelines:
Approve responses that:
- Are authentic personal stories
- Relate to the campaign issue
- Use respectful language
- Add value to the public conversation
Reject responses that:
- Contain profanity or hate speech
- Are spam or off-topic
- Violate privacy (include private information about others)
- Are duplicate submissions
Screenshot placeholder: Response detail modal showing full text, citizen info, and approve/reject buttons
Location Management
Location Data Overview
Locations represent physical addresses where canvassing occurs. Each location has:
- Address: Street address, city, province, postal code
- Coordinates: Latitude/longitude (from geocoding)
- Metadata: Building type, federal district, unit count
- Cut assignment: Which territorial cut it belongs to
- Canvass history: Visits, outcomes, support levels
Importing Locations from CSV
To import locations:
- Navigate to Map > Locations
- Click "Import CSV" button
- Upload CSV file
- Map CSV columns to location fields
- Click "Import"
Required CSV columns:
- address — Full street address
- city — City name
- province — Province/state code (e.g., "ON", "BC")
- postalCode — Postal code (e.g., "K1A 0B1")
Optional columns:
- latitude — Pre-geocoded latitude
- longitude — Pre-geocoded longitude
- buildingType — RESIDENTIAL, APARTMENT, BUSINESS
- unitCount — Number of units in building
- federalDistrict — Electoral district
- notes — Internal notes
CSV example:
address,city,province,postalCode,buildingType
"123 Main St","Ottawa","ON","K1A 0B1","RESIDENTIAL"
"456 Queen St E","Toronto","ON","M5A 1T1","APARTMENT"
"789 Granville St","Vancouver","BC","V6Z 1K3","BUSINESS"
!!! tip "Excel to CSV" If your data is in Excel, use "Save As" > "CSV (Comma delimited)" to export.
Screenshot placeholder: CSV import dialog showing file upload, column mapping interface, and preview table
NAR Import (Canadian Electoral Data)
For Canadian campaigns, you can import official electoral data from Elections Canada NAR (National Address Register) files.
To import NAR data:
- Navigate to Map > Locations
- Click "NAR Import" button
- Select province
- Choose NAR dataset (year)
- Apply filters:
- City filter (optional)
- Postal code filter (optional)
- Cut filter (assign to specific cut)
- Residential only (exclude commercial)
- Click "Start Import"
The import runs server-side and can take several minutes for large provinces.
NAR data includes:
- Precise civic addresses (from Address files)
- Geocoded coordinates (from Location files)
- Federal electoral districts
- Building use (residential, commercial, institutional)
Screenshot placeholder: NAR Import modal showing province selector, dataset picker, and filter options
!!! note "NAR Data Source"
NAR data must be obtained from Elections Canada and placed in the /data directory on the server. Contact your system administrator.
Geocoding Addresses
Geocoding converts addresses to latitude/longitude coordinates for map display.
Automatic geocoding:
- CSV imports without lat/lng are automatically geocoded
- NAR imports include pre-geocoded coordinates
- Manual location creation triggers geocoding
Manual geocoding:
- Navigate to Map > Locations
- Filter for "Ungeocoded" locations
- Select locations to geocode
- Click "Geocode Selected" (bulk action)
Geocoding providers (tried in order):
- Nominatim (OpenStreetMap) — Free, no API key required
- ArcGIS — Free tier, accurate for North America
- Photon — Free, Europe-focused
- Mapbox — Requires API key, very accurate
- Google — Requires API key, most accurate
- LocationIQ — Requires API key, Nominatim-based
!!! tip "Geocoding Quality" Check Map > Data Quality to review geocoding confidence levels. Re-geocode low-confidence addresses.
Screenshot placeholder: Locations table with "Geocode Selected" button and geocoding status column
Creating Cuts
Cuts are geographic areas (wards, neighborhoods, districts) used to organize canvassing.
To create a cut:
- Navigate to Map > Cuts
- Click the "Map Drawing" tab
- Click "Start Drawing"
- Click on the map to add polygon vertices
- Close the polygon (click near first point)
- Fill in cut details:
- Name: Cut identifier (e.g., "Ward 5", "Downtown")
- Category: WARD, NEIGHBORHOOD, DISTRICT, or CUSTOM
- Color: Display color on map
- Description: Internal notes
- Click "Save Cut"
Cut best practices:
- Size: 200-500 locations per cut (manageable for canvassing)
- Boundaries: Use natural boundaries (roads, rivers, parks)
- Naming: Use official ward/district names when available
- Colors: Use distinct colors for adjacent cuts
Screenshot placeholder: Cut drawing map interface showing polygon being drawn with vertex markers
Assigning Locations to Cuts
Automatic assignment (during cut creation):
- Locations inside polygon are automatically assigned
- Uses point-in-polygon algorithm
Manual assignment:
- Navigate to Map > Locations
- Select locations to assign
- Choose "Assign to Cut" from bulk actions
- Select target cut
- Click "Assign"
Viewing cut assignments:
- Location table has "Cut" column
- Filter locations by cut using dropdown
Screenshot placeholder: Bulk action modal showing "Assign to Cut" with cut selector dropdown
Managing Locations
To edit a location:
- Navigate to Map > Locations
- Click "Edit" in Actions column
- Modify fields:
- Address details
- Coordinates (manually adjust map pin)
- Building type
- Unit count
- Notes
- Cut assignment
- Click "Save"
To delete locations:
- Select locations in table
- Choose "Delete" from bulk actions
- Confirm deletion
!!! warning "Canvass History" Deleting a location preserves associated canvass visits (visits are linked to coordinates, not location records).
Screenshot placeholder: Edit Location modal showing address fields, map with draggable pin, and metadata fields
Exporting Walk Sheets
Walk sheets are printable lists of addresses for door-to-door canvassing.
To generate a walk sheet:
- Navigate to Map > Locations
- Filter to specific cut
- Click "Walk Sheet" in the cut's action menu
OR:
- Navigate to Canvass > Walk Sheet
- Select cut from dropdown
- Configure settings (see below)
- Click "Print"
Walk sheet settings (from Map > Map Settings):
- Header text: Organization name, campaign info
- Instructions: How to use the walk sheet
- QR code: Include QR code linking to volunteer canvass map
- Sorting: Sort by street name or walking route
- Include map: Embed cut map on first page
Walk sheet contents:
- Cut name and statistics
- QR code (volunteers scan to start canvass session)
- Location table:
- Address
- Unit count
- Last visit date
- Last outcome
- Notes field (blank for volunteers to fill)
Screenshot placeholder: Walk sheet PDF preview showing header, QR code, and address table
Volunteer Management
Creating Shifts
Shifts are scheduled volunteer canvassing sessions assigned to specific cuts.
To create a shift:
- Navigate to Map > Shifts
- Click "Create Shift"
- Fill in shift details:
- Title: Shift name (e.g., "Saturday Morning Canvass - Ward 5")
- Description: Additional details for volunteers
- Start Time: Shift start date and time
- End Time: Shift end date and time
- Cut: Which cut to canvass (optional, but recommended)
- Max Signups: Capacity limit (0 = unlimited)
- Meeting Location: Where volunteers should meet
- Click "Create"
Screenshot placeholder: Create Shift modal showing date/time picker, cut selector, and capacity field
!!! tip "Cut Assignment" Shifts assigned to a cut appear in the volunteer portal under "My Assignments" for volunteers who signed up. Volunteers can start canvassing directly from their dashboard.
Managing Shift Signups
To view shift signups:
- Navigate to Map > Shifts
- Click "Signups" in Actions column
The signups drawer shows:
- Total signups vs capacity
- Signup list: Name, email, role, signup date
- Actions: Remove signup, upgrade TEMP users to USER
Signup sources:
- Public signup form:
/shiftspage (creates TEMP users) - Admin-created: You manually add volunteers
- Volunteer portal: USER-role volunteers sign up themselves
Screenshot placeholder: Shift Signups drawer showing capacity gauge and signup list table
Emailing Shift Volunteers
To email all volunteers in a shift:
- Navigate to Map > Shifts
- Click "Signups" for the shift
- Click "Email All" button
- Compose email:
- Subject: Email subject line
- Body: Message (supports HTML)
- Variables: Use
{{NAME}},{{SHIFT_TITLE}},{{SHIFT_START}}
- Click "Send"
Common email scenarios:
- Reminder: Day before shift
- Cancellation: Weather or other issues
- Location change: Meeting point updated
- Follow-up: Thank you after shift
Screenshot placeholder: Email Volunteers modal showing subject, body editor, and variable insertion buttons
Monitoring Canvass Sessions
To view active canvass sessions:
- Navigate to Canvass > Dashboard
The dashboard shows:
Statistics cards:
- Active sessions: Currently in progress
- Total visits today: Doors knocked
- Completed sessions: Finished today
- Average session duration
Activity feed:
- Real-time visit stream
- Shows: Volunteer name, address, outcome, timestamp
- Updates every 30 seconds
Cut progress table:
- Progress by cut (% of locations visited)
- Session count per cut
- Visit count per cut
Leaderboard:
- Top volunteers by visit count
- Session count
- Success rate (SPOKE_WITH outcomes)
Screenshot placeholder: Canvass Dashboard showing stats cards, activity feed, and leaderboard
Viewing Canvass Activity Reports
To see detailed canvassing data:
- Navigate to Canvass > Dashboard
- Use filters:
- Date range: Last 7 days, last 30 days, custom
- Cut: Specific cut or all
- Volunteer: Specific volunteer or all
- Outcome: Filter by visit outcome
Exportable reports:
- Visit history CSV: All visits with outcomes, notes, timestamps
- Support levels CSV: LEVEL_1 through LEVEL_4 breakdown
- Session summary CSV: Session duration, visit count, volunteer info
Screenshot placeholder: Activity report filters and export buttons
Site Configuration
Site Settings
To configure global site settings:
- Navigate to Settings (gear icon in sidebar)
Available settings:
Branding:
- Site Name: Your organization name
- Site URL: Public website URL
- Logo URL: URL to your logo image
- Primary Color: Brand color (hex code)
- Secondary Color: Accent color
Email Configuration:
- From Name: Sender name for system emails
- From Email: Sender email address
- SMTP Host: Email server hostname
- SMTP Port: Usually 587 (TLS) or 465 (SSL)
- SMTP Username: SMTP authentication username
- SMTP Password: SMTP authentication password
- Test Mode: Send to MailHog instead of real SMTP (dev only)
Representative API:
- Represent API Base URL: Usually
https://represent.opennorth.ca - API Key: If required by provider
- Cache TTL: How long to cache representative data (hours)
Feature Toggles:
- Enable Media Features: Enable video library and media management
- Enable Listmonk Sync: Sync contacts to Listmonk newsletter platform
- Allow Public Shift Signup: Anyone can sign up for shifts (creates TEMP users)
- Require Email Verification: Campaign responses require email confirmation
Screenshot placeholder: Settings page showing branding, email, and feature toggle sections
!!! tip "Test Email Configuration" After changing SMTP settings, click "Send Test Email" to verify configuration before publishing campaigns.
Map Settings
To configure map defaults:
- Navigate to Map > Map Settings
Map Configuration:
- Default Center: Latitude/longitude for map center
- Used on public map and admin map
- Usually your city center
- Default Zoom: Zoom level (1-18)
- 12 = city-wide view
- 15 = neighborhood view
- Enable Fullscreen: Allow fullscreen button on public map
- Enable Geolocation: Allow "Find My Location" button
Walk Sheet Configuration:
- Header Text: Appears at top of walk sheets
- Footer Text: Appears at bottom
- Include QR Code: Add QR code linking to volunteer map
- QR Code Size: Small, medium, or large
- Instructions: Text explaining how to use walk sheet
Screenshot placeholder: Map Settings page showing map center picker and walk sheet config
Feature Toggles
Feature toggles allow you to enable/disable major platform features without code changes.
To manage feature toggles:
- Navigate to Settings
- Scroll to Feature Toggles section
- Toggle features on/off
- Click "Save"
Available toggles:
ENABLE_MEDIA_FEATURES
- Enables Media Library and video management
- Shows Media menu in sidebar
- Allows video uploads and public media gallery
- Requires media-api service running
ENABLE_LISTMONK_SYNC
- Enables newsletter integration
- Syncs campaign participants to Listmonk lists
- Shows Listmonk menu in sidebar
- Requires Listmonk service configured
ALLOW_PUBLIC_SHIFT_SIGNUP
- Public can sign up for shifts at
/shifts - Creates TEMP user accounts automatically
- Shows shifts on public pages
- Disable for invitation-only volunteering
REQUIRE_EMAIL_VERIFICATION
- Campaign responses require email verification
- Prevents spam and fake submissions
- Sends verification link before recording response
- Recommended for public campaigns
Screenshot placeholder: Feature Toggles section showing four toggles with descriptions
!!! warning "Media Features"
Enabling media features requires the media-api Docker container to be running. Check with your system administrator.
Email Templates
Understanding Email Templates
Changemaker Lite uses email templates for system-generated emails:
System templates:
- Welcome Email: Sent to new users
- Password Reset: Sent when user requests password reset
- Shift Confirmation: Sent when volunteer signs up for shift
- Shift Reminder: Sent day before shift
- Response Verification: Sent to verify campaign response
Custom templates:
- You can create custom templates for specific needs
- Use in shift emails, campaign follow-ups, etc.
Editing Templates
To edit an email template:
- Navigate to Content > Email Templates
- Click "Edit" for the template
- Modify:
- Subject: Email subject line
- HTML Body: Rich email content
- Plain Text Body: Fallback for text-only clients
- Use variables (e.g.,
{{USER_NAME}},{{SHIFT_TITLE}}) - Click "Preview" to see rendered email
- Click "Save"
Screenshot placeholder: Email Template Editor showing subject field, HTML editor, and variable buttons
Available Variables
Templates support variable interpolation:
User variables:
{{USER_NAME}}— User's full name{{USER_EMAIL}}— User's email address
Shift variables:
{{SHIFT_TITLE}}— Shift name{{SHIFT_START}}— Start date/time{{SHIFT_END}}— End date/time{{SHIFT_LOCATION}}— Meeting location{{SHIFT_CUT}}— Cut name
Campaign variables:
{{CAMPAIGN_TITLE}}— Campaign name{{CAMPAIGN_URL}}— Link to campaign page
System variables:
{{SITE_NAME}}— Your organization name{{SITE_URL}}— Website URL
Screenshot placeholder: Variable reference table in template editor sidebar
Testing Templates
To test an email template:
- Edit the template
- Click "Send Test Email"
- Enter your email address
- Click "Send"
You'll receive the email with sample data filled in for variables.
!!! tip "Always Test" Test templates before using them in production. Check both HTML and plain text versions.
Media Library
!!! note "Optional Feature" Media features must be enabled via Settings > Feature Toggles > ENABLE_MEDIA_FEATURES. Requires media-api service.
Uploading Videos
To upload a video:
- Navigate to Content > Media > Library
- Click "Upload Video"
- Either:
- Drag and drop video file
- Click to browse and select file
- Fill in metadata:
- Title: Video title
- Description: Video description
- Producer: Organization or creator
- Creator: Individual creator/director
- Tags: Comma-separated tags
- Directory: Organize into folders
- Click "Upload"
Supported formats:
- MP4 (recommended)
- MOV
- AVI
- MKV
- WebM
- M4V
- FLV
File size limit: 10 GB per file
Screenshot placeholder: Upload Video modal showing drag-drop area, metadata form, and progress bar
Automatic Metadata Extraction
When you upload a video, the system automatically extracts:
- Duration: Length in seconds
- Dimensions: Width x height in pixels
- Orientation: PORTRAIT, LANDSCAPE, or SQUARE
- Quality: SD, HD, FULL_HD, or 4K
- Has Audio: Boolean
- File Size: Bytes
This metadata is used for filtering and organizing videos.
Organizing the Library
Directory structure:
- Create directories to organize videos
- Directories are simple text paths (e.g., "events/2024", "testimonials")
- Set directory when uploading or editing
Filtering videos:
- Search: Search title, description, tags
- Directory: Filter by directory
- Quality: Filter by SD, HD, etc.
- Orientation: Portrait, landscape, square
- Locked: Show only locked or unlocked
Sorting:
- Upload date (newest first)
- Title (A-Z)
- Duration (shortest first)
Screenshot placeholder: Media Library showing directory tree, filters, and video grid
Sharing Videos Publicly
To make videos public:
- Navigate to Content > Media > Shared Media
- Select videos from library
- Choose category:
- TESTIMONIAL
- EVENT
- EDUCATIONAL
- PROMOTIONAL
- Click "Share"
Shared videos appear on the public media gallery at /media.
To unshare videos:
- Go to Shared Media
- Select videos
- Click "Unshare"
Screenshot placeholder: Shared Media page showing category filter and share/unshare buttons
Locking Videos
Locked videos cannot be deleted or moved. Use locks to protect important content.
To lock a video:
- Select video in library
- Click "Lock" (padlock icon)
To unlock:
- Select locked video
- Click "Unlock"
!!! warning "Lock Before Sharing" Lock videos before sharing publicly to prevent accidental deletion.
Monitoring & Reports
Viewing Queue Status
To monitor the email queue:
- Navigate to Influence > Email Queue
Key metrics:
- Waiting: Emails queued for sending
- High number = slow processing (check SMTP)
- Active: Currently processing
- Should be 1-5 (concurrent workers)
- Completed: Sent in last 24 hours
- Failed: Delivery failures
- Click "View Failed" to see error messages
Queue health indicators:
- Green: < 50 waiting, < 5 failed
- Yellow: 50-200 waiting, 5-20 failed
- Red: > 200 waiting, > 20 failed
Screenshot placeholder: Email Queue dashboard showing job counts with color-coded health indicators
Geocoding Quality Dashboard
To review geocoding quality:
- Navigate to Map > Data Quality
Quality metrics:
- Total locations: All location records
- Geocoded: Have lat/lng coordinates
- Ungeocoded: Missing coordinates
- Low confidence: Confidence < 0.5
- Medium confidence: 0.5-0.8
- High confidence: > 0.8
Quality breakdown:
- Provider distribution: Which geocoding service was used
- Confidence histogram: Distribution of confidence scores
- Error analysis: Common geocoding failures
Actions:
- Re-geocode low confidence: Retry with different provider
- Export ungeocoded: CSV of failed addresses
- Manual review: Edit addresses and re-geocode
Screenshot placeholder: Data Quality Dashboard showing geocoding statistics and confidence distribution chart
Canvass Completion Statistics
To view canvass progress:
- Navigate to Canvass > Dashboard
Completion metrics:
- Locations visited: Total unique addresses visited
- Visit rate: Visits per day/week
- Completion by cut: % of each cut visited
- Outcome breakdown: % NOT_HOME, REFUSED, SPOKE_WITH, etc.
Support level analysis:
- LEVEL_1 (Strong support): Count and percentage
- LEVEL_2 (Leaning support): Count and percentage
- LEVEL_3 (Undecided): Count and percentage
- LEVEL_4 (Opposition): Count and percentage
Volunteer performance:
- Sessions per volunteer: Distribution histogram
- Visits per volunteer: Leaderboard
- Average session duration: Time spent canvassing
Screenshot placeholder: Canvass statistics showing completion gauges, outcome pie chart, and support level breakdown
Observability Dashboard
To monitor system health:
- Navigate to Observability
The observability dashboard has three tabs:
Metrics Tab
- Custom metrics: 12
cm_*Prometheus metrics- API uptime
- Request counts
- Email queue size
- Active sessions
- Geocoding success rate
- HTTP metrics: Request duration, status codes
- System metrics: CPU, memory, disk
Screenshot placeholder: Metrics tab showing API uptime gauge and request count graph
Dashboards Tab
- Links to Grafana dashboards:
- API Health (uptime, response times, error rates)
- Queue Monitoring (email queue, geocoding queue)
- Canvassing Activity (sessions, visits, outcomes)
- Click dashboard name to open in Grafana
Screenshot placeholder: Dashboards tab showing three dashboard cards with "Open" buttons
Alerts Tab
- Active alerts: Currently firing alerts
- Alert history: Recent resolved alerts
- Alert rules: Configured thresholds
- Silence alerts: Temporarily mute alerts
Common alerts:
- API Down: API not responding
- High Error Rate: > 5% requests failing
- Queue Backed Up: > 1000 emails waiting
- Disk Space Low: < 10% free space
Screenshot placeholder: Alerts tab showing active alert for "Queue Backed Up" with severity and details
Troubleshooting
Common Admin Issues
Issue: Cannot Log In
Symptoms: "Invalid credentials" error
Solutions:
- Verify email address: Check for typos, spaces
- Try password reset: Use "Forgot Password" link
- Check account status: Ask another admin if account is suspended
- Check browser console: Look for API errors
Issue: Emails Not Sending
Symptoms: Emails stuck in "Waiting" status
Solutions:
- Check SMTP configuration:
- Navigate to Settings
- Verify SMTP host, port, username, password
- Click "Send Test Email"
- Check email queue:
- Navigate to Influence > Email Queue
- Look for error messages in failed jobs
- Check email test mode:
- If
EMAIL_TEST_MODE=true, emails go to MailHog (not real recipients) - Change in environment settings
- If
- Restart queue worker:
- Ask system administrator to restart api service
Issue: CSV Import Fails
Symptoms: Error during CSV upload
Solutions:
- Check CSV format:
- Must be valid CSV (comma-separated)
- First row must be headers
- Required columns: address, city, province, postalCode
- Check file encoding:
- Use UTF-8 encoding
- Excel users: "Save As" > "CSV UTF-8"
- Check file size:
- Maximum 10,000 rows per import
- Split large files
- Check for special characters:
- Remove emoji, unusual symbols
- Use standard quotes ("not "" or '')
Issue: Geocoding Fails
Symptoms: Addresses remain ungeocoded after import
Solutions:
- Check address format:
- Include full civic address
- Include city and postal code
- Use standard abbreviations (St, Ave, Rd)
- Check geocoding providers:
- Navigate to Map > Data Quality
- See which providers are responding
- Try manual geocoding:
- Edit location
- Click and drag map pin to correct position
- Save
- Use NAR data (Canada only):
- NAR import includes pre-geocoded coordinates
- More reliable than automatic geocoding
Issue: Map Not Loading
Symptoms: Blank map or loading spinner
Solutions:
- Check browser console: Look for JavaScript errors
- Check internet connection: Map tiles require network
- Try different browser: Test in Chrome, Firefox
- Clear browser cache: Hard refresh (Ctrl+Shift+R)
- Check locations:
- Navigate to Map > Locations
- Verify locations have coordinates
- At least one location needed to display map
Issue: Campaign Not Appearing Publicly
Symptoms: Campaign visible in admin but not on /campaigns
Solutions:
- Check "Published" flag:
- Edit campaign
- Ensure "Published" toggle is ON
- Save
- Check URL:
- Campaign URL is
/campaigns/[slug] - Slug is auto-generated from title
- Must be unique
- Campaign URL is
- Clear browser cache: Public pages may be cached
- Check representative lookup:
- Test with your postal code
- If lookup fails, campaign won't display form
Issue: Volunteer Cannot Start Canvass Session
Symptoms: Error when volunteer clicks "Start Canvassing"
Solutions:
- Check shift assignment:
- Navigate to Map > Shifts
- Verify shift has a cut assigned
- Shifts without cuts cannot be canvassed
- Check volunteer role:
- Navigate to Users
- Verify volunteer is USER role (not TEMP)
- Upgrade TEMP users to USER
- Check cut locations:
- Navigate to Map > Cuts
- Verify cut has locations assigned
- Empty cuts cannot be canvassed
- Check for existing session:
- Volunteer may have abandoned session
- Ask admin to close abandoned session
Getting Help
Documentation:
- Feature docs:
/docs/v2/features/(detailed feature guides) - API reference:
/docs/v2/api/(API endpoint documentation) - User guides:
/docs/v2/user-guides/(this guide and others) - Deployment:
/docs/v2/deployment/(server setup, Docker, backups)
Support channels:
- GitHub Issues: Report bugs, request features
- Community Forum: Ask questions, share tips
- Email Support: Contact your system administrator
Before asking for help:
- Check browser console for errors (F12)
- Try in different browser
- Check server logs (if you have access)
- Document steps to reproduce issue
Related Documentation
- Volunteer Guide: Guide for volunteers using the canvassing portal
- Campaign Manager Guide: Deep dive on campaign strategy and management
- Map Organizer Guide: Advanced location and territory management
- Content Editor Guide: Landing pages and media library
- Influence Module: Technical details on campaigns and email sending
- Map Module: Technical details on geocoding and canvassing
- API Reference: REST API documentation for integrations
Last updated: February 2026 (V2 complete)