Skip to content

Advocacy Campaigns

Help supporters contact their elected representatives through email campaigns.

Campaigns Management


How It Works

  1. An admin creates a campaign — writes the email subject and body, selects which government levels to target (federal, provincial, municipal, school board), and publishes it.
  2. A supporter visits the campaign page — enters their postal code to look up their representatives.
  3. The supporter sends the email — either directly through the platform ("Send Now") or by opening it in their own email app (Gmail, Outlook, etc.).
  4. Responses get tracked — supporters and admins can share representative responses on the Response Wall, with upvoting and moderation.

Key Features

  • Postal code lookup — powered by the Represent API, returns representatives at all government levels
  • Two send methods — server-sent SMTP (tracked) or mailto link (opens user's email app)
  • Email editing — optionally let supporters personalize the email before sending
  • Response Wall — public wall where people share how their representatives responded, with moderation and verification
  • Campaign stats — track emails sent, responses received, and upvotes
  • Featured campaigns — highlight important campaigns on the public listing page

User-Submitted Campaigns

Registered (non-temporary) users can create their own advocacy campaigns and submit them for admin review.

  • Public submission route — users visit /campaigns/create to draft a campaign through a guided wizard
  • 3-step wizard — the submission flow walks users through campaign details (title, description, government levels), email template (subject and body), and a final review step before submitting
  • My campaigns dashboard — users can view and manage their submitted campaigns at /campaigns/mine, including checking moderation status and editing campaigns that have been sent back for changes
  • Restricted fields — user-submitted campaigns have limited options compared to admin-created ones (no SMTP sending, no highlight, no custom recipients); only the mailto link fallback is enabled by default
  • Auto-moderation status — newly submitted campaigns start in PENDING_REVIEW status and remain in DRAFT until an admin approves them
  • Edit restrictions — users can only edit their own campaigns, and only when the moderation status is PENDING_REVIEW or CHANGES_REQUESTED; editing automatically resets the status back to PENDING_REVIEW
  • Rate limiting — campaign submissions are rate-limited to 5 per hour per IP to prevent abuse
  • XSS protection — all user-supplied text (title, description, email subject, email body) is HTML-escaped before storage

Campaign Moderation

Admins review user-submitted campaigns before they go live.

  • Moderation queue — accessible at /app/campaign-moderation, showing all user-generated campaigns filtered by moderation status (pending, approved, rejected, changes requested)
  • Moderation actions — for each campaign in the queue, admins can:
    • Approve — sets the moderation status to APPROVED and the campaign status to ACTIVE, making it publicly visible
    • Reject — marks the campaign as REJECTED with an optional reason visible to the submitter
    • Request changes — sets the status to CHANGES_REQUESTED with feedback, allowing the user to revise and resubmit
  • Moderation stats — the queue page displays counters for total user-generated campaigns, pending reviews, approved, rejected, and changes-requested counts
  • Reviewer tracking — each moderation action records the reviewer's user ID and timestamp
  • Search and filter — the moderation queue supports searching by campaign title, submitter name, or email, and filtering by moderation status

Campaign Analytics

The Campaign Effectiveness dashboard provides cross-campaign performance analytics at /app/influence/effectiveness.

  • Performance tab — per-campaign KPIs including total emails sent, email delivery status breakdown, response counts, response rates, and call counts; top campaigns visualized as a horizontal bar chart
  • Representatives tab — tracks individual representative responsiveness across all campaigns; shows emails received, responses given, verified response count, and response rate per representative; sortable by response count, response rate, or name; includes government level distribution
  • Geography tab — engagement breakdown by geographic area; group results by postal code, city, or province; enriched with city/province data from the postal code cache
  • Funnel tab — conversion funnel visualization showing progression from emails sent to unique participants to responses received to verified responses, plus calls made; includes percentage-of-first and stage-to-stage dropoff rates
  • Trends tab — time-series activity chart showing daily or weekly email and response volumes; default view covers the last 30 days; merged email and response series for side-by-side comparison
  • Global filters — all tabs share campaign and date range filters; select a specific campaign or view aggregate data across all campaigns

Admin Routes

  • /app/campaigns — create, edit, and manage campaigns
  • /app/campaign-moderation — review and moderate user-submitted campaigns
  • /app/influence/effectiveness — campaign effectiveness analytics dashboard
  • /app/responses — moderate submitted responses
  • /app/email-queue — monitor outgoing email delivery

Public Routes

  • /campaigns — browse active campaigns
  • /campaigns/create — submit a new user-generated campaign (requires login)
  • /campaigns/mine — view and manage your submitted campaigns (requires login)
  • /campaign/:slug — take action on a specific campaign
  • /campaign/:slug/responses — view the response wall