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:

  1. Statistics Cards

    • Total users (breakdown by role)
    • Active campaigns
    • Total locations
    • Active canvass sessions
  2. Recent Activity Feed

    • New user registrations
    • Campaign responses
    • Shift signups
    • Canvass visits
  3. Quick Actions

    • Create new campaign
    • Import locations
    • Create volunteer shift
    • View email queue
  4. 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:

  1. Click your email address in the top-right corner
  2. Select "Change Password" from the dropdown
  3. Enter your current password
  4. Enter new password (must meet requirements below)
  5. Confirm new password
  6. 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:

  1. Navigate to Users in the sidebar
  2. Click "Create User" button (top-right)
  3. 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
  4. 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:

  1. Click the Edit icon (pencil) in the Actions column
  2. Modify any of:
    • Name
    • Email (must remain unique)
    • Role (change permissions)
    • Status (activate/suspend)
  3. 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:

  1. Find the user in the table
  2. Click "Suspend" in the Actions column
  3. 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:

  1. Edit the user
  2. Click "Reset Password"
  3. Choose one of:
    • Generate temporary password (shown on screen, expires in 24 hours)
    • Send reset email (user clicks link to set new password)
  4. 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:

  1. Click the Delete icon (trash) in the Actions column
  2. Type the user's email to confirm
  3. 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:

  1. Navigate to Users
  2. Check the "Last Login" column
  3. 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:

  1. Enter their postal code
  2. Find their elected representatives
  3. Send advocacy emails
  4. 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:

  1. Navigate to Influence > Campaigns
  2. Click "Create Campaign" (top-right)
  3. Fill in the campaign form (see fields below)
  4. 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
  • 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

  1. Published

    • Controls public visibility
    • Unpublished campaigns only visible to admins
    • Toggle to launch/pause campaign
  2. Featured

    • Featured campaigns appear at top of listing page
    • Use for high-priority campaigns
    • Limit to 2-3 featured campaigns
  3. Has Response Wall

    • Enables public response wall
    • Citizens can share their story after emailing
    • Responses require admin approval (unless auto_approve_responses)
  4. Collect Phone Numbers

    • Adds optional phone number field
    • Used for call-in campaigns
    • Numbers stored for admin use
  5. Track Calls

    • Adds "I called my representative" button
    • Tracks call attempts separately from emails
    • Good for blended campaigns

Advanced Features

  1. Require Verification

    • Sends verification email before submitting
    • Prevents spam and bot submissions
    • Recommended for public campaigns
  2. Auto Approve Responses

    • Response wall submissions appear immediately
    • No admin moderation required
    • Only use for trusted campaigns
  3. Allow Anonymous

    • Citizens can submit without creating account
    • Reduces friction but limits tracking
    • Good for privacy-sensitive topics
  4. Custom Recipients

    • Override representative lookup
    • Send to specific email addresses
    • Use for non-government campaigns
  5. Show Progress Bar

    • Displays email count goal and progress
    • Motivates participation
    • Requires setting email_goal field
  6. Disable After Date

    • Automatically unpublish after specified date
    • Good for time-sensitive campaigns
    • Requires setting disable_date field
  7. 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:

  1. Edit the campaign
  2. Toggle "Published" flag to ON
  3. 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:

  1. Navigate to Influence > Campaigns
  2. 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:

  1. 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:

  1. Navigate to Influence > Responses
  2. Use filters to find pending responses
  3. Review each response
  4. 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:

  1. Click "View" in Actions column
  2. Read full response text
  3. 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:

  1. Navigate to Map > Locations
  2. Click "Import CSV" button
  3. Upload CSV file
  4. Map CSV columns to location fields
  5. 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:

  1. Navigate to Map > Locations
  2. Click "NAR Import" button
  3. Select province
  4. Choose NAR dataset (year)
  5. Apply filters:
    • City filter (optional)
    • Postal code filter (optional)
    • Cut filter (assign to specific cut)
    • Residential only (exclude commercial)
  6. 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:

  1. Navigate to Map > Locations
  2. Filter for "Ungeocoded" locations
  3. Select locations to geocode
  4. Click "Geocode Selected" (bulk action)

Geocoding providers (tried in order):

  1. Nominatim (OpenStreetMap) — Free, no API key required
  2. ArcGIS — Free tier, accurate for North America
  3. Photon — Free, Europe-focused
  4. Mapbox — Requires API key, very accurate
  5. Google — Requires API key, most accurate
  6. 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:

  1. Navigate to Map > Cuts
  2. Click the "Map Drawing" tab
  3. Click "Start Drawing"
  4. Click on the map to add polygon vertices
  5. Close the polygon (click near first point)
  6. 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
  7. 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:

  1. Navigate to Map > Locations
  2. Select locations to assign
  3. Choose "Assign to Cut" from bulk actions
  4. Select target cut
  5. 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:

  1. Navigate to Map > Locations
  2. Click "Edit" in Actions column
  3. Modify fields:
    • Address details
    • Coordinates (manually adjust map pin)
    • Building type
    • Unit count
    • Notes
    • Cut assignment
  4. Click "Save"

To delete locations:

  1. Select locations in table
  2. Choose "Delete" from bulk actions
  3. 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:

  1. Navigate to Map > Locations
  2. Filter to specific cut
  3. Click "Walk Sheet" in the cut's action menu

OR:

  1. Navigate to Canvass > Walk Sheet
  2. Select cut from dropdown
  3. Configure settings (see below)
  4. 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:

  1. Navigate to Map > Shifts
  2. Click "Create Shift"
  3. 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
  4. 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:

  1. Navigate to Map > Shifts
  2. 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: /shifts page (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:

  1. Navigate to Map > Shifts
  2. Click "Signups" for the shift
  3. Click "Email All" button
  4. Compose email:
    • Subject: Email subject line
    • Body: Message (supports HTML)
    • Variables: Use {{NAME}}, {{SHIFT_TITLE}}, {{SHIFT_START}}
  5. 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:

  1. 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:

  1. Navigate to Canvass > Dashboard
  2. 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:

  1. 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:

  1. 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:

  1. Navigate to Settings
  2. Scroll to Feature Toggles section
  3. Toggle features on/off
  4. 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:

  1. Navigate to Content > Email Templates
  2. Click "Edit" for the template
  3. Modify:
    • Subject: Email subject line
    • HTML Body: Rich email content
    • Plain Text Body: Fallback for text-only clients
  4. Use variables (e.g., {{USER_NAME}}, {{SHIFT_TITLE}})
  5. Click "Preview" to see rendered email
  6. 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:

  1. Edit the template
  2. Click "Send Test Email"
  3. Enter your email address
  4. 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:

  1. Navigate to Content > Media > Library
  2. Click "Upload Video"
  3. Either:
    • Drag and drop video file
    • Click to browse and select file
  4. 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
  5. 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:

  1. Navigate to Content > Media > Shared Media
  2. Select videos from library
  3. Choose category:
    • TESTIMONIAL
    • EVENT
    • EDUCATIONAL
    • PROMOTIONAL
  4. Click "Share"

Shared videos appear on the public media gallery at /media.

To unshare videos:

  1. Go to Shared Media
  2. Select videos
  3. 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:

  1. Select video in library
  2. Click "Lock" (padlock icon)

To unlock:

  1. Select locked video
  2. 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:

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. Verify email address: Check for typos, spaces
  2. Try password reset: Use "Forgot Password" link
  3. Check account status: Ask another admin if account is suspended
  4. Check browser console: Look for API errors

Issue: Emails Not Sending

Symptoms: Emails stuck in "Waiting" status

Solutions:

  1. Check SMTP configuration:
    • Navigate to Settings
    • Verify SMTP host, port, username, password
    • Click "Send Test Email"
  2. Check email queue:
    • Navigate to Influence > Email Queue
    • Look for error messages in failed jobs
  3. Check email test mode:
    • If EMAIL_TEST_MODE=true, emails go to MailHog (not real recipients)
    • Change in environment settings
  4. Restart queue worker:
    • Ask system administrator to restart api service

Issue: CSV Import Fails

Symptoms: Error during CSV upload

Solutions:

  1. Check CSV format:
    • Must be valid CSV (comma-separated)
    • First row must be headers
    • Required columns: address, city, province, postalCode
  2. Check file encoding:
    • Use UTF-8 encoding
    • Excel users: "Save As" > "CSV UTF-8"
  3. Check file size:
    • Maximum 10,000 rows per import
    • Split large files
  4. Check for special characters:
    • Remove emoji, unusual symbols
    • Use standard quotes ("not "" or '')

Issue: Geocoding Fails

Symptoms: Addresses remain ungeocoded after import

Solutions:

  1. Check address format:
    • Include full civic address
    • Include city and postal code
    • Use standard abbreviations (St, Ave, Rd)
  2. Check geocoding providers:
    • Navigate to Map > Data Quality
    • See which providers are responding
  3. Try manual geocoding:
    • Edit location
    • Click and drag map pin to correct position
    • Save
  4. 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:

  1. Check browser console: Look for JavaScript errors
  2. Check internet connection: Map tiles require network
  3. Try different browser: Test in Chrome, Firefox
  4. Clear browser cache: Hard refresh (Ctrl+Shift+R)
  5. 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:

  1. Check "Published" flag:
    • Edit campaign
    • Ensure "Published" toggle is ON
    • Save
  2. Check URL:
    • Campaign URL is /campaigns/[slug]
    • Slug is auto-generated from title
    • Must be unique
  3. Clear browser cache: Public pages may be cached
  4. 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:

  1. Check shift assignment:
    • Navigate to Map > Shifts
    • Verify shift has a cut assigned
    • Shifts without cuts cannot be canvassed
  2. Check volunteer role:
    • Navigate to Users
    • Verify volunteer is USER role (not TEMP)
    • Upgrade TEMP users to USER
  3. Check cut locations:
    • Navigate to Map > Cuts
    • Verify cut has locations assigned
    • Empty cuts cannot be canvassed
  4. 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:

  1. Check browser console for errors (F12)
  2. Try in different browser
  3. Check server logs (if you have access)
  4. Document steps to reproduce issue


Last updated: February 2026 (V2 complete)