1428 lines
37 KiB
Markdown
1428 lines
37 KiB
Markdown
# Campaign Manager Guide
|
|
|
|
## Overview
|
|
|
|
As a Campaign Manager, you're responsible for planning, launching, and optimizing advocacy campaigns using Changemaker Lite's Influence module. This guide will help you:
|
|
|
|
- **Plan effective campaigns**: Set goals, define targets, craft messaging
|
|
- **Configure campaigns**: Set up email templates, feature flags, and targeting
|
|
- **Launch campaigns**: Publish and promote to maximize participation
|
|
- **Monitor performance**: Track email sends, response rates, and engagement
|
|
- **Optimize results**: A/B test messaging, improve conversion, encourage responses
|
|
- **Moderate content**: Review and approve response wall submissions
|
|
|
|
Whether you're running a small local campaign or a national advocacy push, this guide provides strategies and best practices for success.
|
|
|
|
---
|
|
|
|
## Understanding Campaign Roles
|
|
|
|
You may have one of two roles that allow campaign management:
|
|
|
|
### SUPER_ADMIN
|
|
|
|
- **Access**: Full platform access
|
|
- **Capabilities**: All campaign functions plus user management, site settings, etc.
|
|
- **Use case**: Primary administrator
|
|
|
|
### INFLUENCE_ADMIN
|
|
|
|
- **Access**: Influence module only
|
|
- **Capabilities**:
|
|
- Create and edit campaigns
|
|
- Moderate responses
|
|
- Monitor email queue
|
|
- View representative cache
|
|
- **Restrictions**: Cannot manage users, locations, or site settings
|
|
- **Use case**: Dedicated campaign manager without full admin access
|
|
|
|
!!! tip "Role Specialization"
|
|
If you only manage campaigns (not volunteers or locations), ask for INFLUENCE_ADMIN role. This keeps the interface focused on your work.
|
|
|
|
---
|
|
|
|
## Planning a Campaign
|
|
|
|
### Defining Campaign Goals
|
|
|
|
Before creating a campaign in the system, clarify your objectives:
|
|
|
|
**Advocacy goals:**
|
|
|
|
1. **Awareness**: Educate the public about an issue
|
|
2. **Pressure**: Generate constituent contact to influence decision-makers
|
|
3. **Mobilization**: Build a list of supporters for future action
|
|
4. **Visibility**: Demonstrate public support through response wall
|
|
|
|
**Measurable targets:**
|
|
|
|
- **Email goal**: How many emails do you want sent?
|
|
- Example: "1,000 emails to MPs by end of month"
|
|
- **Response goal**: How many public responses?
|
|
- Example: "100 personal stories shared on response wall"
|
|
- **Conversion rate**: What % of visitors should take action?
|
|
- Benchmark: 5-15% is typical for advocacy campaigns
|
|
- **Timeline**: When does the campaign start/end?
|
|
- Align with legislative calendar, events, deadlines
|
|
|
|
**Example campaign plan:**
|
|
|
|
```
|
|
Campaign: Stop Bill 123 - Protect Clean Water
|
|
Goal: Generate 5,000 emails to provincial MPPs before second reading vote
|
|
Target audience: Ontario residents (all 124 ridings)
|
|
Timeline: 3 weeks (Feb 1-22)
|
|
Success metrics:
|
|
- 5,000+ emails sent
|
|
- 500+ response wall submissions
|
|
- 10% conversion rate (visitors → emails sent)
|
|
- 50% email delivery success rate
|
|
```
|
|
|
|
### Understanding Your Target Audience
|
|
|
|
**Who are you trying to reach?**
|
|
|
|
**By government level:**
|
|
|
|
- **Federal campaigns**: Target MPs (Members of Parliament)
|
|
- Use for: National legislation, federal regulations, federal budgets
|
|
- Example: "Urge your MP to support climate action"
|
|
|
|
- **Provincial campaigns**: Target MPPs/MLAs (provincial legislators)
|
|
- Use for: Provincial laws, education, healthcare, transportation
|
|
- Example: "Tell your MPP to fund public transit"
|
|
|
|
- **Municipal campaigns**: Target city councillors, mayors
|
|
- Use for: Local zoning, development, city services
|
|
- Example: "Ask your councillor to protect the park"
|
|
|
|
**By geography:**
|
|
|
|
- **National**: All postal codes
|
|
- **Provincial**: Specific province(s)
|
|
- **Municipal**: Specific city or ward
|
|
- **Custom**: Specific ridings or districts
|
|
|
|
**By demographics** (requires custom targeting):
|
|
|
|
- Age groups
|
|
- Interests
|
|
- Previous engagement
|
|
|
|
!!! note "Representative Lookup"
|
|
Changemaker Lite uses postal codes to look up representatives via the Represent API. Ensure your target government level has postal code coverage.
|
|
|
|
### Crafting Your Message
|
|
|
|
Your campaign email is the core of your advocacy effort. It should be:
|
|
|
|
**1. Personal**
|
|
|
|
- Written in first person ("I am writing to...")
|
|
- Uses resident's name and contact info
|
|
- Mentions specific representative's name
|
|
|
|
**2. Clear and Specific**
|
|
|
|
- States the ask in the first paragraph
|
|
- References specific legislation (bill number, name)
|
|
- Explains what you want the representative to do
|
|
|
|
**3. Compelling**
|
|
|
|
- Explains why the issue matters
|
|
- Uses facts and statistics (credibly sourced)
|
|
- Includes emotional appeal (stories, impacts)
|
|
|
|
**4. Actionable**
|
|
|
|
- Numbered list of specific requests
|
|
- Clear deadline (if applicable)
|
|
- Follow-up mechanism (reply, meeting, public statement)
|
|
|
|
**5. Respectful**
|
|
|
|
- Professional tone
|
|
- Acknowledges representative's position
|
|
- Thanks them for considering your views
|
|
|
|
**Example effective email:**
|
|
|
|
```
|
|
Subject: Vote YES on Bill C-234 to Support Family Farms
|
|
|
|
Dear [Representative Name],
|
|
|
|
My name is [Your Name], and I am a constituent in [Riding]. I'm writing
|
|
to urge you to vote YES on Bill C-234, which would exempt farmers from
|
|
the carbon tax on natural gas and propane used for farming.
|
|
|
|
Family farms are the backbone of our food system, yet they face rising
|
|
costs that threaten their viability. This bill would save farmers an
|
|
average of $14,000 per year, helping them stay in business and keep
|
|
food prices stable.
|
|
|
|
I'm specifically asking you to:
|
|
1. Vote YES when Bill C-234 comes to the floor
|
|
2. Speak publicly in support of family farms
|
|
3. Oppose any amendments that weaken the bill
|
|
|
|
Farming is already a low-margin business. Every dollar counts. Please
|
|
support our farmers by supporting this bill.
|
|
|
|
Thank you for considering my views. I look forward to hearing your
|
|
position on this important issue.
|
|
|
|
Sincerely,
|
|
[Your Name]
|
|
[Your Email]
|
|
[Your Phone]
|
|
```
|
|
|
|
**What makes this email effective:**
|
|
|
|
- ✅ Specific bill number (C-234)
|
|
- ✅ Clear ask (vote YES)
|
|
- ✅ Compelling reason (saves $14k/year)
|
|
- ✅ Numbered action items
|
|
- ✅ Respectful tone
|
|
- ✅ Personal voice
|
|
|
|
---
|
|
|
|
## Creating a Campaign
|
|
|
|
### Basic Campaign Setup
|
|
|
|
**To create a new campaign:**
|
|
|
|
1. Navigate to **Influence > Campaigns**
|
|
2. Click **"Create Campaign"**
|
|
3. Fill in the form (detailed below)
|
|
4. Click **"Create"**
|
|
|
|
Your campaign starts in DRAFT status (not published).
|
|
|
|
### Campaign Fields
|
|
|
|
#### Title
|
|
|
|
**What it is:** Public-facing campaign name
|
|
|
|
**Best practices:**
|
|
|
|
- Keep it short (3-7 words)
|
|
- Make it action-oriented
|
|
- Include the issue/goal
|
|
- Avoid jargon or acronyms
|
|
|
|
**Examples:**
|
|
|
|
- ✅ "Protect Our Forests from Logging"
|
|
- ✅ "Fund Public Transit Now"
|
|
- ✅ "Stop Bill 123"
|
|
- ❌ "Environmental Advocacy Initiative 2024" (too vague)
|
|
- ❌ "FPTA Campaign" (acronym unclear)
|
|
|
|
#### Slug
|
|
|
|
**What it is:** URL-friendly identifier, auto-generated from title
|
|
|
|
**Format:** lowercase, hyphens for spaces, no special characters
|
|
|
|
**Examples:**
|
|
|
|
- Title: "Protect Our Forests" → Slug: `protect-our-forests`
|
|
- Title: "Fund Public Transit" → Slug: `fund-public-transit`
|
|
|
|
**Used in URL:** `https://yoursite.org/campaigns/protect-our-forests`
|
|
|
|
!!! note "Slug Uniqueness"
|
|
Slugs must be unique. If you try to use a duplicate, the system will add a number (e.g., `protect-our-forests-2`).
|
|
|
|
#### Description
|
|
|
|
**What it is:** Campaign overview shown on listing page and campaign detail page
|
|
|
|
**Best practices:**
|
|
|
|
- 2-3 sentences
|
|
- Explain the issue briefly
|
|
- Explain why it matters
|
|
- Include call to action
|
|
- HTML supported (bold, links, etc.)
|
|
|
|
**Example:**
|
|
|
|
```html
|
|
<p>Ancient forests in our region are being clear-cut at an alarming rate.
|
|
These forests provide habitat for endangered species, clean our air and
|
|
water, and offer recreational spaces for our communities.</p>
|
|
|
|
<p><strong>Tell your MPP to enact a moratorium on old-growth logging
|
|
until sustainable forestry practices are in place.</strong></p>
|
|
```
|
|
|
|
#### Government Level
|
|
|
|
**What it is:** Which level of government to target for representative lookup
|
|
|
|
**Options:**
|
|
|
|
- **FEDERAL**: MPs (Members of Parliament)
|
|
- **PROVINCIAL**: MPPs/MLAs (provincial/territorial legislators)
|
|
- **MUNICIPAL**: City councillors, mayors
|
|
|
|
**You can select multiple levels** if your issue spans jurisdictions.
|
|
|
|
**Example scenarios:**
|
|
|
|
- Climate legislation → FEDERAL only
|
|
- Education funding → PROVINCIAL only
|
|
- Park development → MUNICIPAL only
|
|
- Transit expansion → PROVINCIAL + MUNICIPAL (both levels involved)
|
|
|
|
#### Email Subject
|
|
|
|
**What it is:** Subject line for emails citizens send to representatives
|
|
|
|
**Best practices:**
|
|
|
|
- Keep under 60 characters (avoids truncation)
|
|
- Start with action verb (Support, Oppose, Protect, Fund)
|
|
- Include specific bill/issue name
|
|
- Use variables for personalization
|
|
|
|
**Variables available:**
|
|
|
|
- `{{USER_NAME}}` — Sender's name
|
|
- `{{REP_NAME}}` — Representative's name
|
|
- `{{REP_TITLE}}` — Representative's title (MP, MPP, Councillor)
|
|
|
|
**Examples:**
|
|
|
|
- ✅ "Please support Bill C-234 for family farms"
|
|
- ✅ "Vote YES on climate action legislation"
|
|
- ✅ "Oppose the proposed park development"
|
|
- ❌ "Your constituent has an important message for you" (too vague)
|
|
- ❌ "I am writing to express my concern about the environmental degradation..." (too long)
|
|
|
|
#### Email Body
|
|
|
|
**What it is:** The email message template citizens send
|
|
|
|
**Structure:**
|
|
|
|
```
|
|
Greeting (uses {{REP_NAME}})
|
|
|
|
Opening paragraph: Who I am, why I'm writing
|
|
|
|
Body paragraphs: Issue explanation, impact, evidence
|
|
|
|
Specific asks: Numbered list of actions
|
|
|
|
Closing: Thank you, request for response
|
|
|
|
Signature (uses {{USER_NAME}}, {{USER_EMAIL}}, etc.)
|
|
|
|
Optional: User's personal message ({{USER_MESSAGE}})
|
|
```
|
|
|
|
**Variables available:**
|
|
|
|
- `{{USER_NAME}}` — Citizen's full name
|
|
- `{{USER_EMAIL}}` — Citizen's email
|
|
- `{{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}}` — Citizen's custom message (optional field on form)
|
|
|
|
**Tips:**
|
|
|
|
- Use HTML editor for formatting (bold, lists, links)
|
|
- Include `{{USER_MESSAGE}}` at the end so citizens can add personal stories
|
|
- Keep base template to 200-400 words (short enough to read, detailed enough to be persuasive)
|
|
- Preview before publishing (send test email to yourself)
|
|
|
|
#### Cover Photo (Optional)
|
|
|
|
**What it is:** Image shown on campaign listing and detail pages
|
|
|
|
**Best practices:**
|
|
|
|
- Use high-quality image (at least 1200x630 px)
|
|
- Relevant to issue (photo of forest for forestry campaign, etc.)
|
|
- Not too busy (text overlays should be readable)
|
|
- Use your own photos or Creative Commons licensed images
|
|
|
|
**Upload:** Provide URL to image (must host image externally or use media library)
|
|
|
|
---
|
|
|
|
## Configuring Feature Flags
|
|
|
|
Feature flags control campaign functionality. Here's a detailed guide on when to use each:
|
|
|
|
### Core Feature Flags
|
|
|
|
#### 1. Published
|
|
|
|
**What it does:** Makes campaign visible on public listing page
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Campaign is ready to launch
|
|
- ✅ Email template is proofread and tested
|
|
- ✅ Representative lookup is working
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Campaign is still being built (draft)
|
|
- ❌ Campaign has ended (or use `disable_after_date`)
|
|
- ❌ Need to make changes (unpublish temporarily)
|
|
|
|
!!! warning "Unpublishing"
|
|
Unpublishing a campaign removes it from the public listing but preserves all data (emails sent, responses, etc.). The campaign page URL still works for anyone with a direct link.
|
|
|
|
#### 2. Featured
|
|
|
|
**What it does:** Displays campaign prominently at top of listing page
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Highest priority campaign
|
|
- ✅ Time-sensitive (vote happening soon)
|
|
- ✅ Major organizational focus
|
|
|
|
**Best practices:**
|
|
|
|
- Limit to 2-3 featured campaigns
|
|
- Rotate featured status based on priority
|
|
- Feature new campaigns for first week to boost initial signups
|
|
|
|
#### 3. Has Response Wall
|
|
|
|
**What it does:** Allows citizens to share personal stories publicly after emailing
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ You want to showcase public support
|
|
- ✅ You have capacity for moderation (unless auto-approve)
|
|
- ✅ Issue benefits from personal stories
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Privacy concerns (sensitive issues)
|
|
- ❌ No moderation capacity
|
|
- ❌ Campaign is purely about email volume (not stories)
|
|
|
|
**Moderation required:** Unless `auto_approve_responses` is enabled, all responses must be manually approved.
|
|
|
|
### Advanced Feature Flags
|
|
|
|
#### 4. Collect Phone Numbers
|
|
|
|
**What it does:** Adds optional phone number field to campaign form
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Running a blended email + phone campaign
|
|
- ✅ Want to follow up with phone calls
|
|
- ✅ Building contact list for future outreach
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Privacy concerns (reduces conversion)
|
|
- ❌ No plan to use phone numbers
|
|
|
|
**Data usage:** Phone numbers are stored in campaign responses and visible to admins.
|
|
|
|
#### 5. Track Calls
|
|
|
|
**What it does:** Adds "I called my representative" button and tracks call attempts
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Running a call-in campaign
|
|
- ✅ Encouraging both emails and calls
|
|
- ✅ Want to track total contact attempts (emails + calls)
|
|
|
|
**How it works:**
|
|
|
|
- After sending email, user sees "I also called" button
|
|
- Clicking increments call counter
|
|
- Calls tracked separately from emails
|
|
|
|
#### 6. Require Verification
|
|
|
|
**What it does:** Sends verification email before recording email send
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Public campaigns (prevents spam)
|
|
- ✅ High-profile campaigns (media attention)
|
|
- ✅ Need accurate email counts
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Internal campaigns (trusted users only)
|
|
- ❌ Want to reduce friction (lowers completion rate by ~20%)
|
|
|
|
**How it works:**
|
|
|
|
1. User fills out form and clicks "Send"
|
|
2. System sends verification email
|
|
3. User clicks link in email
|
|
4. Email to representative is sent
|
|
5. Response is recorded
|
|
|
|
!!! tip "Recommended"
|
|
Enable verification for all public campaigns to prevent spam and ensure data quality.
|
|
|
|
#### 7. Auto Approve Responses
|
|
|
|
**What it does:** Response wall submissions appear immediately without moderation
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Trusted audience (members-only campaign)
|
|
- ✅ Low-risk issue (unlikely to attract trolls)
|
|
- ✅ No moderation capacity
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Public campaigns (risk of spam/abuse)
|
|
- ❌ Controversial issues (may attract hostile responses)
|
|
- ❌ Need quality control
|
|
|
|
!!! warning "Moderation Recommended"
|
|
Most public campaigns should NOT auto-approve. Manual moderation ensures quality and prevents abuse.
|
|
|
|
#### 8. Allow Anonymous
|
|
|
|
**What it does:** Citizens can send emails without creating an account
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Want to maximize participation
|
|
- ✅ Privacy-sensitive issue
|
|
- ✅ One-time campaign (no need to track individuals)
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ Building supporter list (want account creation)
|
|
- ❌ Need to prevent duplicate submissions
|
|
- ❌ Want to track individual engagement over time
|
|
|
|
**Trade-offs:**
|
|
|
|
- ✅ Higher conversion (less friction)
|
|
- ❌ Cannot prevent duplicate emails from same person
|
|
- ❌ No account to re-engage supporters later
|
|
|
|
#### 9. Custom Recipients
|
|
|
|
**What it does:** Override representative lookup and send to specific email addresses
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Targeting non-government decision-makers (corporate executives, university presidents)
|
|
- ✅ Representative lookup doesn't cover your target (small municipalities)
|
|
- ✅ Want to target specific individuals regardless of postal code
|
|
|
|
**How to use:**
|
|
|
|
1. Enable flag
|
|
2. Enter comma-separated email addresses in `custom_recipient_emails` field
|
|
3. Optionally enter custom recipient names in `custom_recipient_names` field
|
|
|
|
**Example:**
|
|
|
|
```
|
|
custom_recipient_emails: ceo@corporation.com,president@university.edu
|
|
custom_recipient_names: CEO John Smith,University President Jane Doe
|
|
```
|
|
|
|
All emails will go to these addresses instead of postal code lookup.
|
|
|
|
#### 10. Show Progress Bar
|
|
|
|
**What it does:** Displays progress bar showing emails sent toward goal
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Have a specific email goal
|
|
- ✅ Want to motivate participation ("We're 75% to our goal!")
|
|
- ✅ Creating urgency
|
|
|
|
**How to use:**
|
|
|
|
1. Enable flag
|
|
2. Set `email_goal` field (e.g., 1000)
|
|
3. Progress bar appears on campaign page showing current count / goal
|
|
|
|
**Example display:**
|
|
|
|
```
|
|
[=========> ] 734 / 1,000 emails sent (73%)
|
|
```
|
|
|
|
!!! tip "Set Realistic Goals"
|
|
Research similar campaigns to set achievable goals. Falling short publicly can be demotivating.
|
|
|
|
#### 11. Disable After Date
|
|
|
|
**What it does:** Automatically unpublish campaign after specified date
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Time-sensitive campaign (vote deadline)
|
|
- ✅ Want campaign to auto-close
|
|
- ✅ Don't want to manually unpublish
|
|
|
|
**How to use:**
|
|
|
|
1. Enable flag
|
|
2. Set `disable_date` field (date picker)
|
|
3. Campaign automatically unpublishes at midnight on that date
|
|
|
|
**Example:**
|
|
|
|
Legislative vote is March 15. Set `disable_date` to March 15, 2024. Campaign automatically closes that day.
|
|
|
|
#### 12. Enable Comments
|
|
|
|
**What it does:** Allows comments on response wall entries (discussion threads)
|
|
|
|
**When to enable:**
|
|
|
|
- ✅ Want to encourage discussion
|
|
- ✅ Have moderation capacity for comments
|
|
- ✅ Building community
|
|
|
|
**When to disable:**
|
|
|
|
- ❌ No comment moderation capacity
|
|
- ❌ Risk of hostile/off-topic discussion
|
|
- ❌ Prefer clean, simple response wall
|
|
|
|
!!! note "Experimental Feature"
|
|
Comments require additional moderation. Consider carefully before enabling.
|
|
|
|
---
|
|
|
|
## Email Template Best Practices
|
|
|
|
### Writing Effective Subject Lines
|
|
|
|
**Do:**
|
|
|
|
- ✅ Keep under 60 characters
|
|
- ✅ Start with action verb (Vote, Support, Oppose, Protect)
|
|
- ✅ Include bill number or issue name
|
|
- ✅ Create urgency (if appropriate)
|
|
|
|
**Don't:**
|
|
|
|
- ❌ Use ALL CAPS (looks like spam)
|
|
- ❌ Use excessive punctuation (!!!)
|
|
- ❌ Make false claims or exaggerations
|
|
- ❌ Use clickbait ("You won't believe...")
|
|
|
|
**Examples:**
|
|
|
|
| Good | Why |
|
|
|------|-----|
|
|
| "Vote YES on Bill C-123 for climate action" | Clear, specific, action-oriented |
|
|
| "Support funding for public transit" | Simple, direct ask |
|
|
| "Protect our forests from logging" | Emotional appeal, clear issue |
|
|
|
|
| Bad | Why |
|
|
|-----|-----|
|
|
| "URGENT: Read this NOW!!!" | Spammy, no substance |
|
|
| "About the issue we discussed" | Vague, no context |
|
|
| "I am writing to you regarding..." | Wordy, buries the lede |
|
|
|
|
### Structuring the Email Body
|
|
|
|
**Recommended structure:**
|
|
|
|
```
|
|
1. Greeting
|
|
Dear {{REP_NAME}},
|
|
|
|
2. Introduction (1 sentence)
|
|
Who you are, where you live
|
|
|
|
3. Main ask (1 sentence)
|
|
What you want them to do
|
|
|
|
4. Context (2-3 sentences)
|
|
Why it matters, impact, urgency
|
|
|
|
5. Evidence (2-3 sentences)
|
|
Facts, statistics, expert opinions
|
|
|
|
6. Specific actions (numbered list)
|
|
Exactly what you want them to do
|
|
|
|
7. Closing (1-2 sentences)
|
|
Thank you, request for response
|
|
|
|
8. Signature
|
|
{{USER_NAME}}
|
|
{{USER_EMAIL}}
|
|
|
|
9. Personal message (optional)
|
|
{{USER_MESSAGE}}
|
|
```
|
|
|
|
### Using Variables Effectively
|
|
|
|
**Available variables:**
|
|
|
|
| Variable | Description | Example Output |
|
|
|----------|-------------|----------------|
|
|
| `{{USER_NAME}}` | Sender's full name | "John Smith" |
|
|
| `{{USER_EMAIL}}` | Sender's email | "john@example.com" |
|
|
| `{{USER_PHONE}}` | Sender's phone | "555-1234" |
|
|
| `{{REP_NAME}}` | Representative's name | "Hon. Jane Doe" |
|
|
| `{{REP_EMAIL}}` | Representative's email | "jane.doe@parl.gc.ca" |
|
|
| `{{REP_TITLE}}` | Representative's title | "Member of Parliament" |
|
|
| `{{USER_MESSAGE}}` | Custom message | (whatever user typed) |
|
|
|
|
**Best practices:**
|
|
|
|
1. **Always use {{REP_NAME}} in greeting** — Personalizes email
|
|
2. **Include {{USER_NAME}} in signature** — Shows it's from a real person
|
|
3. **Add {{USER_MESSAGE}} at end** — Allows personalization
|
|
4. **Use {{REP_TITLE}} for variety** — Avoid repeating "Member of Parliament"
|
|
|
|
**Example usage:**
|
|
|
|
```html
|
|
Dear {{REP_NAME}},
|
|
|
|
My name is {{USER_NAME}}, and I am a constituent in your riding. As a
|
|
{{REP_TITLE}}, you have the power to make a difference on this issue.
|
|
|
|
[... campaign message ...]
|
|
|
|
I look forward to hearing your position on this matter. You can reach me
|
|
at {{USER_EMAIL}}.
|
|
|
|
Sincerely,
|
|
{{USER_NAME}}
|
|
|
|
---
|
|
|
|
{{USER_MESSAGE}}
|
|
```
|
|
|
|
### HTML Formatting Tips
|
|
|
|
The email editor supports HTML. Use formatting to improve readability:
|
|
|
|
**Headings:**
|
|
|
|
```html
|
|
<h3>Why This Matters</h3>
|
|
```
|
|
|
|
**Bold text:**
|
|
|
|
```html
|
|
<strong>Vote YES on Bill C-123</strong>
|
|
```
|
|
|
|
**Lists:**
|
|
|
|
```html
|
|
<p>I'm asking you to:</p>
|
|
<ol>
|
|
<li>Vote YES when the bill comes to the floor</li>
|
|
<li>Speak publicly in support</li>
|
|
<li>Oppose weakening amendments</li>
|
|
</ol>
|
|
```
|
|
|
|
**Links:**
|
|
|
|
```html
|
|
<a href="https://example.com/research">Read the full study here</a>
|
|
```
|
|
|
|
**Line breaks:**
|
|
|
|
```html
|
|
<p>First paragraph.</p>
|
|
<p>Second paragraph.</p>
|
|
```
|
|
|
|
!!! warning "Email Client Compatibility"
|
|
Avoid complex CSS or JavaScript. Stick to basic HTML tags (p, strong, em, ul, ol, a). Many email clients strip advanced formatting.
|
|
|
|
---
|
|
|
|
## Publishing Your Campaign
|
|
|
|
### Pre-Launch Checklist
|
|
|
|
Before publishing, verify:
|
|
|
|
- [ ] **Email template proofread** — No typos, grammar errors
|
|
- [ ] **Variables working** — Test with your own postal code
|
|
- [ ] **Representative lookup functional** — Test multiple postal codes
|
|
- [ ] **Feature flags configured** — Review all 12 flags
|
|
- [ ] **Cover photo uploaded** — Image displays correctly
|
|
- [ ] **Response wall ready** — Moderation plan in place (if enabled)
|
|
- [ ] **Email goal set** — If using progress bar
|
|
- [ ] **Disable date set** — If time-sensitive campaign
|
|
- [ ] **Test email sent** — Send to yourself, verify formatting
|
|
|
|
**To send a test email:**
|
|
|
|
1. Edit the campaign
|
|
2. Scroll to email section
|
|
3. Click **"Send Test Email"**
|
|
4. Enter your email address
|
|
5. Check your inbox
|
|
|
|
The test email uses sample data for variables.
|
|
|
|
### Publishing
|
|
|
|
**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
|
|
|
|
**Promotion channels:**
|
|
|
|
1. **Direct link**: Share `https://yoursite.org/campaigns/protect-our-forests`
|
|
2. **Email newsletter**: Include in your regular newsletter
|
|
3. **Social media**: Post on Facebook, Twitter, Instagram with link
|
|
4. **Website**: Add to your main website's homepage or action page
|
|
5. **Partner organizations**: Ask allies to share
|
|
6. **Earned media**: Pitch to journalists, bloggers
|
|
|
|
**Sample social media post:**
|
|
|
|
```
|
|
🌲 Our forests are in danger. Tell your MPP to stop old-growth logging.
|
|
|
|
📧 Send an email in under 2 minutes: [link]
|
|
|
|
So far, [X] people have taken action. Will you join them?
|
|
|
|
#ProtectOurForests #ClimateAction
|
|
```
|
|
|
|
**Sample email newsletter:**
|
|
|
|
```
|
|
Subject: Take Action: Protect Our Forests
|
|
|
|
Hi [Name],
|
|
|
|
Ancient forests in our region are being clear-cut at an alarming rate.
|
|
But we can stop this.
|
|
|
|
[Your MPP's name] has the power to enact a moratorium on old-growth
|
|
logging. We need you to tell them this matters to you.
|
|
|
|
[CALL TO ACTION BUTTON: Send Your Email Now]
|
|
|
|
It takes less than 2 minutes. Over [X] people have already sent emails.
|
|
Together, we can make a difference.
|
|
|
|
Thank you for taking action,
|
|
[Your organization]
|
|
```
|
|
|
|
---
|
|
|
|
## Monitoring Performance
|
|
|
|
### Campaign Email Statistics
|
|
|
|
**To view email stats:**
|
|
|
|
1. Navigate to **Influence > Campaigns**
|
|
2. Click **"Emails"** button for your campaign
|
|
|
|
The drawer shows:
|
|
|
|
**Overall statistics:**
|
|
|
|
- **Total emails sent**: All emails successfully delivered
|
|
- **Emails waiting**: Queued but not yet sent
|
|
- **Failed emails**: Delivery failures
|
|
- **Success rate**: Sent / (Sent + Failed)
|
|
|
|
**Email list table:**
|
|
|
|
- Sender name and email
|
|
- Recipient representative
|
|
- Status (PENDING, SENT, FAILED)
|
|
- Sent timestamp
|
|
- Error message (if failed)
|
|
|
|
**Screenshot placeholder**: *Campaign Emails drawer showing statistics and email list*
|
|
|
|
### Understanding Email Status
|
|
|
|
**PENDING:**
|
|
|
|
- Email is queued for sending
|
|
- Usually sent within minutes
|
|
- If stuck for > 1 hour, check queue (see below)
|
|
|
|
**SENT:**
|
|
|
|
- Email successfully delivered to representative
|
|
- Does NOT guarantee representative read it (that's on them)
|
|
|
|
**FAILED:**
|
|
|
|
- Email delivery failed
|
|
- Common reasons:
|
|
- Invalid recipient email (representative email wrong in database)
|
|
- SMTP error (email server rejected)
|
|
- Network timeout
|
|
|
|
**Retry failed emails:**
|
|
|
|
1. Click **"Retry Failed"** button
|
|
2. System re-queues failed emails
|
|
3. Check again in 10 minutes
|
|
|
|
!!! note "Representative Emails"
|
|
Representative email addresses come from the Represent API. If many emails fail to a specific representative, the database may be outdated. Contact Represent API maintainers.
|
|
|
|
### Response Wall Statistics
|
|
|
|
**To view response wall stats:**
|
|
|
|
1. Navigate to **Influence > Responses**
|
|
2. Filter by your campaign
|
|
|
|
**Metrics:**
|
|
|
|
- **Total responses**: All submissions (approved + pending + rejected)
|
|
- **Approved**: Visible on public response wall
|
|
- **Pending**: Awaiting moderation
|
|
- **Rejected**: Hidden from public
|
|
- **Upvotes**: Total upvotes across all responses
|
|
|
|
**Response rate:**
|
|
|
|
```
|
|
Response rate = Responses / Emails sent
|
|
```
|
|
|
|
**Typical response rates:**
|
|
|
|
- 5-10% — Good response rate
|
|
- 10-20% — Excellent response rate
|
|
- < 5% — Low engagement (consider improving response wall CTA)
|
|
|
|
### Email Queue Health
|
|
|
|
**To monitor the queue:**
|
|
|
|
1. Navigate to **Influence > Email Queue**
|
|
|
|
**Key metrics:**
|
|
|
|
- **Waiting**: Emails in queue, not yet processing
|
|
- Normal: < 50
|
|
- Concerning: 50-200
|
|
- Critical: > 200 (likely queue backup)
|
|
|
|
- **Active**: Emails currently being sent
|
|
- Normal: 1-5 (concurrent workers)
|
|
|
|
- **Completed** (last 24 hours): Successfully sent
|
|
|
|
- **Failed**: Delivery failures
|
|
- Normal: < 5% of sent
|
|
- Concerning: 5-20%
|
|
- Critical: > 20% (SMTP issue)
|
|
|
|
**Queue controls:**
|
|
|
|
- **Pause Queue**: Emergency stop (only use during SMTP issues)
|
|
- **Resume Queue**: Restart after pause
|
|
- **Retry Failed**: Re-queue all failed emails
|
|
- **Clean Completed**: Remove old completed jobs (frees memory)
|
|
|
|
!!! warning "Queue Pausing"
|
|
Only pause the queue if SMTP is broken or you're changing email configuration. Citizens expect immediate sends.
|
|
|
|
---
|
|
|
|
## Moderating Responses
|
|
|
|
### Response Moderation Workflow
|
|
|
|
**To moderate responses:**
|
|
|
|
1. Navigate to **Influence > Responses**
|
|
2. Filter to **Status: PENDING**
|
|
3. Review each response
|
|
4. Approve or reject
|
|
|
|
**Moderation decisions:**
|
|
|
|
**Approve if:**
|
|
|
|
- ✅ Authentic personal story
|
|
- ✅ Relates to campaign issue
|
|
- ✅ Respectful language
|
|
- ✅ Adds value to public conversation
|
|
|
|
**Reject if:**
|
|
|
|
- ❌ Spam or bot submission
|
|
- ❌ Profanity, hate speech, or harassment
|
|
- ❌ Off-topic or unrelated to campaign
|
|
- ❌ Contains personal information about others (privacy violation)
|
|
- ❌ Duplicate submission (approve one, reject others)
|
|
|
|
**Delete if:**
|
|
|
|
- Illegal content
|
|
- Severe harassment or threats
|
|
- Privacy violation (doxxing)
|
|
|
|
### Reviewing a Response
|
|
|
|
**To review in detail:**
|
|
|
|
1. Click **"View"** in Actions column
|
|
2. Read full response text
|
|
3. Check submitter info (name, email, timestamp)
|
|
4. Decide: Approve, Reject, or Delete
|
|
|
|
**Response detail shows:**
|
|
|
|
- Full text of response
|
|
- Submitter name and email (not public)
|
|
- Submission timestamp
|
|
- Associated campaign
|
|
- Current status
|
|
- Upvote count (if already approved)
|
|
|
|
**Actions:**
|
|
|
|
- **Approve**: Make public (appears on response wall)
|
|
- **Reject**: Hide from public (not deleted, can reverse later)
|
|
- **Delete**: Permanently remove (cannot undo)
|
|
- **Edit**: Fix typos or formatting (use sparingly)
|
|
|
|
!!! tip "Editing Responses"
|
|
Only edit responses to fix obvious typos or remove sensitive info (phone numbers, addresses). Don't change meaning.
|
|
|
|
### Moderation Best Practices
|
|
|
|
**Speed matters:**
|
|
|
|
- Review pending responses daily (at minimum)
|
|
- For time-sensitive campaigns, review 2-3x per day
|
|
- Long moderation delays reduce participation (people won't share if they never see results)
|
|
|
|
**Consistency:**
|
|
|
|
- Use same criteria for all responses
|
|
- Document your moderation guidelines
|
|
- If multiple moderators, ensure they're aligned
|
|
|
|
**Encourage quality:**
|
|
|
|
- Spotlight particularly good responses (if feature available)
|
|
- Share excellent responses on social media
|
|
- Thank respondents for sharing their stories
|
|
|
|
**Handle edge cases:**
|
|
|
|
- **Political/controversial**: Allow diverse viewpoints as long as respectful
|
|
- **Emotional language**: Allow passion, reject profanity
|
|
- **Minor inaccuracies**: Approve (you're not fact-checking everything)
|
|
- **Self-promotion**: Reject if primary purpose is advertising
|
|
|
|
### Responding to Moderation Issues
|
|
|
|
**If you accidentally reject a good response:**
|
|
|
|
1. Find the response in table
|
|
2. Change status from REJECTED to APPROVED
|
|
3. Response immediately appears on response wall
|
|
|
|
**If inappropriate content slips through:**
|
|
|
|
1. Find the response
|
|
2. Change status from APPROVED to REJECTED (or delete)
|
|
3. Response immediately removed from public view
|
|
|
|
**If user complains about rejection:**
|
|
|
|
1. Review the response again
|
|
2. If rejection was correct, explain your moderation policy
|
|
3. If rejection was incorrect, approve and apologize
|
|
4. Consider revising moderation guidelines to prevent future issues
|
|
|
|
---
|
|
|
|
## Optimization Strategies
|
|
|
|
### Improving Email Conversion Rates
|
|
|
|
**Conversion rate = Emails sent / Page visitors**
|
|
|
|
**Typical conversion rates:**
|
|
|
|
- 5-10% — Average for advocacy campaigns
|
|
- 10-20% — Good (well-designed campaign)
|
|
- 20%+ — Excellent (highly motivated audience)
|
|
|
|
**Tactics to improve conversion:**
|
|
|
|
#### 1. Simplify the Form
|
|
|
|
- Remove optional fields (phone number, custom message)
|
|
- Use postal code autofill
|
|
- Pre-fill email for logged-in users
|
|
|
|
#### 2. Reduce Friction
|
|
|
|
- Disable email verification (if spam isn't an issue)
|
|
- Allow anonymous submissions (no account required)
|
|
- Use clear, simple language
|
|
|
|
#### 3. Strengthen the Call to Action
|
|
|
|
- Use large, prominent "Send Email" button
|
|
- Add urgency ("Vote is tomorrow — act now!")
|
|
- Show social proof ("Join 1,234 others who've sent emails")
|
|
|
|
#### 4. Improve Email Template
|
|
|
|
- Make it personal (use variables)
|
|
- Keep it short (200-300 words)
|
|
- Include specific ask (bill number, action)
|
|
- Allow personalization ({{USER_MESSAGE}})
|
|
|
|
#### 5. Add Trust Signals
|
|
|
|
- Show organization logo
|
|
- Display privacy policy link
|
|
- Explain what happens after they send ("Your representative will receive this email within minutes")
|
|
|
|
### A/B Testing
|
|
|
|
Test different versions of your campaign to find what works best.
|
|
|
|
**Elements to test:**
|
|
|
|
1. **Email subject line**
|
|
- Action-oriented vs question
|
|
- Include bill number vs generic
|
|
- Urgent vs neutral tone
|
|
|
|
2. **Call to action**
|
|
- "Send Email" vs "Take Action" vs "Email Your MP"
|
|
- Button color (blue vs red vs green)
|
|
- Button size
|
|
|
|
3. **Campaign description**
|
|
- Short (1 sentence) vs detailed (3 paragraphs)
|
|
- Emotional appeal vs factual
|
|
- Include statistics vs stories
|
|
|
|
4. **Feature flags**
|
|
- Email verification ON vs OFF
|
|
- Response wall ON vs OFF
|
|
- Progress bar ON vs OFF
|
|
|
|
**How to A/B test:**
|
|
|
|
1. Create two versions of the campaign (duplicate the campaign)
|
|
2. Change ONE variable (e.g., subject line)
|
|
3. Send 50% of traffic to each version (promote both equally)
|
|
4. After 100+ emails sent per version, compare conversion rates
|
|
5. Keep the winner, discard the loser
|
|
|
|
**Sample A/B test:**
|
|
|
|
```
|
|
Version A: Subject line "Support Bill C-123 for climate action"
|
|
Result: 100 emails sent from 1,000 visitors = 10% conversion
|
|
|
|
Version B: Subject line "Vote YES on climate action — your MP is listening"
|
|
Result: 150 emails sent from 1,000 visitors = 15% conversion
|
|
|
|
Winner: Version B (50% improvement)
|
|
Action: Update Version A subject to match Version B
|
|
```
|
|
|
|
### Encouraging Response Wall Participation
|
|
|
|
**Response wall benefits:**
|
|
|
|
- Shows public support visibly
|
|
- Creates peer pressure ("If they can share, so can I")
|
|
- Provides human stories for media and decision-makers
|
|
|
|
**Tactics to increase responses:**
|
|
|
|
#### 1. Highlight the Response Wall
|
|
|
|
- Add text after email send: "Share your story with the community"
|
|
- Show recent responses on campaign page
|
|
- Feature excellent responses on social media
|
|
|
|
#### 2. Reduce Friction
|
|
|
|
- Auto-approve responses (if audience is trusted)
|
|
- Pre-fill response form with email content
|
|
- Allow anonymous responses
|
|
|
|
#### 3. Provide Examples
|
|
|
|
- Seed the response wall with 3-5 initial responses (from staff/volunteers)
|
|
- Show variety of response types (personal story, factual argument, emotional appeal)
|
|
|
|
#### 4. Incentivize Participation
|
|
|
|
- Run a contest (best response wins a prize)
|
|
- Feature responses in newsletter
|
|
- Invite top responders to speak at event
|
|
|
|
#### 5. Moderate Quickly
|
|
|
|
- Approve responses within hours (not days)
|
|
- People won't share if they never see results
|
|
|
|
### Boosting Upvotes
|
|
|
|
Upvotes signal which responses resonate most with your community.
|
|
|
|
**Tactics:**
|
|
|
|
1. **Make upvoting easy**: One-click, no login required
|
|
2. **Show upvote counts**: Create competition
|
|
3. **Promote top responses**: Share high-upvote responses on social
|
|
4. **Create urgency**: "Most upvoted response will be featured in our newsletter"
|
|
|
|
---
|
|
|
|
## Reporting and Analytics
|
|
|
|
### Campaign Performance Report
|
|
|
|
**Key metrics to track:**
|
|
|
|
| Metric | Formula | Benchmark |
|
|
|--------|---------|-----------|
|
|
| **Total emails sent** | Count of SENT status | N/A (goal-dependent) |
|
|
| **Conversion rate** | Emails / Page visitors | 5-15% |
|
|
| **Response rate** | Responses / Emails sent | 5-15% |
|
|
| **Upvote rate** | Upvotes / Responses | 20-40% |
|
|
| **Email success rate** | SENT / (SENT + FAILED) | > 95% |
|
|
| **Avg time to send** | Queue wait time | < 5 minutes |
|
|
|
|
### Exporting Data
|
|
|
|
**To export campaign data:**
|
|
|
|
1. Navigate to **Influence > Campaigns**
|
|
2. Click **"Emails"** for your campaign
|
|
3. Click **"Export CSV"**
|
|
|
|
**CSV includes:**
|
|
|
|
- Sender name and email
|
|
- Recipient representative
|
|
- Email sent timestamp
|
|
- Status (SENT, FAILED, PENDING)
|
|
- Error message (if failed)
|
|
|
|
**Use cases:**
|
|
|
|
- Analyze email volume by date (chart over time)
|
|
- Identify which representatives received most emails (top targets)
|
|
- Follow up with failed sends
|
|
- Import into CRM or email tool
|
|
|
|
**Response wall export:**
|
|
|
|
1. Navigate to **Influence > Responses**
|
|
2. Filter by campaign
|
|
3. Click **"Export CSV"**
|
|
|
|
**CSV includes:**
|
|
|
|
- Respondent name and email
|
|
- Response text
|
|
- Submission date
|
|
- Status (APPROVED, PENDING, REJECTED)
|
|
- Upvote count
|
|
|
|
**Use cases:**
|
|
|
|
- Analyze themes in responses (word cloud, sentiment analysis)
|
|
- Share stories with media or decision-makers
|
|
- Feature responses in reports or presentations
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Low Email Conversion Rate
|
|
|
|
**Symptoms:** Few people sending emails despite high traffic
|
|
|
|
**Diagnostic questions:**
|
|
|
|
1. **Is representative lookup working?**
|
|
- Test with multiple postal codes
|
|
- Check representative cache (Influence > Representatives)
|
|
|
|
2. **Is the form too complex?**
|
|
- Remove optional fields
|
|
- Simplify email template
|
|
- Disable verification
|
|
|
|
3. **Is the call to action clear?**
|
|
- Review campaign description
|
|
- Check button text and prominence
|
|
- Add urgency or social proof
|
|
|
|
4. **Is trust an issue?**
|
|
- Add organization branding
|
|
- Display privacy policy
|
|
- Explain what happens after they send
|
|
|
|
**Solutions:**
|
|
|
|
- A/B test simpler version
|
|
- Add trust signals (logo, privacy link)
|
|
- Reduce form fields
|
|
- Strengthen CTA
|
|
|
|
### Low Response Wall Participation
|
|
|
|
**Symptoms:** Emails being sent but few response wall submissions
|
|
|
|
**Possible causes:**
|
|
|
|
1. **Response wall not prominent**
|
|
- Add section on campaign page highlighting response wall
|
|
- Show recent responses below email form
|
|
|
|
2. **Friction too high**
|
|
- Require verification → people abandon
|
|
- Long approval delay → people think it didn't work
|
|
|
|
3. **No examples/social proof**
|
|
- Empty response wall → people don't know what to share
|
|
- Seed with initial responses
|
|
|
|
**Solutions:**
|
|
|
|
- Auto-approve responses (if trusted audience)
|
|
- Add examples/prompts ("Share why this issue matters to you")
|
|
- Feature excellent responses on social media (encourages others)
|
|
|
|
### Emails Stuck in Queue
|
|
|
|
**Symptoms:** Emails remain in PENDING status for > 1 hour
|
|
|
|
**Diagnostic steps:**
|
|
|
|
1. **Check queue status**: Influence > Email Queue
|
|
2. **Check SMTP configuration**: Settings > Email Configuration
|
|
3. **Test email send**: Settings > Send Test Email
|
|
|
|
**Common causes:**
|
|
|
|
1. **Queue worker not running**
|
|
- Contact system administrator
|
|
- Restart api service
|
|
|
|
2. **SMTP credentials wrong**
|
|
- Verify username/password in Settings
|
|
- Send test email to verify
|
|
|
|
3. **SMTP server rejecting**
|
|
- Check spam/rate limits on SMTP server
|
|
- Contact email service provider
|
|
|
|
4. **Network issue**
|
|
- Check API server connectivity
|
|
- Try different SMTP provider
|
|
|
|
**Emergency solution:**
|
|
|
|
- If queue is badly backed up, pause queue
|
|
- Fix SMTP issue
|
|
- Resume queue
|
|
- Retry failed
|
|
|
|
### High Email Failure Rate
|
|
|
|
**Symptoms:** Many emails with FAILED status
|
|
|
|
**Check error messages:**
|
|
|
|
1. **"Invalid recipient email"**
|
|
- Representative email is wrong in database
|
|
- Contact Represent API maintainers
|
|
- Use custom recipients as workaround
|
|
|
|
2. **"SMTP authentication failed"**
|
|
- Wrong SMTP username/password
|
|
- Update in Settings > Email Configuration
|
|
|
|
3. **"Connection timeout"**
|
|
- Network issue between API server and SMTP
|
|
- Contact system administrator
|
|
|
|
4. **"Mailbox full"**
|
|
- Representative's email inbox is full
|
|
- Nothing you can do (contact representative's office)
|
|
|
|
5. **"Spam filter rejected"**
|
|
- Email looks like spam
|
|
- Revise email template (less spammy language)
|
|
- Contact SMTP provider about reputation
|
|
|
|
**Solutions:**
|
|
|
|
- Fix SMTP configuration
|
|
- Update representative emails
|
|
- Retry failed emails after fixing
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
- **[Admin Guide](admin-guide.md)**: Full administrator guide (includes campaign management)
|
|
- **[Influence Module](../features/influence.md)**: Technical documentation on campaigns and email system
|
|
- **[Email Queue](../features/email-queue.md)**: BullMQ queue technical details
|
|
- **[Response Wall](../features/response-wall.md)**: Response moderation and upvoting
|
|
- **[API Reference](../api/influence.md)**: Influence API endpoints
|
|
|
|
---
|
|
|
|
**Last updated**: February 2026 (V2 complete)
|