Campaign Lifecycle
Viewing Campaigns
Campaign List
Navigate to the admin interface:- Campaign name (clickable to access campaign details)
- SMTP server
- SMTP From address
- Phishing link
- ID parameter
- Email delay (seconds)
- Scheduled start time (if scheduled)
- Start timestamp (when campaign began sending)
- End timestamp (when campaign completed)
- Phishmarket ID (if created from remote template)
- Sending status (1 = currently sending, 0 = not sending)
Campaign Details
Click any campaign name to access:- Target management
- Campaign tracking
- Scheduling controls
- Campaign settings
Creating Campaigns
Campaigns are created through the email capture workflow. See Usage Guide for detailed instructions. Quick Summary:- Navigate to “Create Campaign”
- Capture email from Outlook or load from template
- Edit email content and configure SMTP settings
- Click “Save as Campaign”
- Enter unique campaign name
- Campaign is saved and appears in campaign list
Campaign Configuration
Email Content
Storage: Complete raw MIME message stored in theemail column
Includes:
- All headers (SMTP and email headers)
- Email body (HTML and/or plain text)
- Embedded images and attachments
- Content-Type declarations
- Character encoding
SMTP Configuration
mail_server (string)- Hostname or IP of target mail server or relay
- Examples:
mx.target-domain.com,smtp.sendgrid.net
- Envelope sender address
- Must be from a domain you control
- Used for SPF/DKIM alignment
- 0: Port 25, no TLS (direct delivery)
- 1: Port 465, TLS (authenticated relay)
- SMTP authentication username (optional)
- Required for authenticated relays
- SMTP authentication password (optional)
- Stored in plaintext in database
- 0: No DKIM signing
- 1: Sign emails with DKIM private key
Campaign Parameters
phishing_link (string)- Base URL for phishing/payload delivery
- Example:
https://payload-domain.com
- URL parameter name for target tracking
- Example:
idresults in?id=abc123
- Seconds between each email send
- Default: 30 seconds
- Minimum: 1 second
- Unix timestamp (milliseconds) for scheduled start
- Null if not scheduled
- Unix timestamp (milliseconds) when campaign started sending
- Null if not yet started
- Unix timestamp (milliseconds) when campaign completed
- Null if not yet completed
- 0: Campaign not currently sending
- 1: Campaign currently sending or scheduled
- Phishmarket template ID if campaign was created from remote template
- 0 if created locally
Editing Campaigns
To modify an existing campaign:What Can Be Edited
Allowed:- Email content (MIME message)
- SMTP settings (server, auth, DKIM)
- Phishing link and ID parameter
- Email delay
- Campaign name (primary identifier)
- Historical timestamps (start, end)
- Sending status (managed automatically)
Launching Campaigns
Prerequisites
Before launching:Send Campaign Immediately
Campaign Behavior:
- Emails sent sequentially with configured delay
- First target is sent immediately upon clicking “Send Campaign”
- Subsequent targets sent after delay interval
- Campaign continues until all targets marked as “phished”
EMAIL_SENTevents logged for each successful sendERRORevents logged for failures
Schedule Campaign
To start a campaign at a specific future time:
Important Notes:
- All times are in the server’s timezone (configured in
config.json) - Current server time is displayed when refreshing the page
- Update the time input to the desired start time before clicking “Schedule Campaign”
- Cannot schedule a campaign that is already sending
- Campaign waits until scheduled time
- At scheduled time, first email is sent
- Subsequent emails sent with configured delay
- Can be cancelled before start time
Stopping Campaigns
Cancel Active Campaign
To stop a campaign that is currently sending:
Effects of Cancelling:
- Current email being sent completes
- No additional emails are queued
- Targets marked as “phished=1” remain marked
- Targets marked as “phished=0” can be retried later
- End timestamp is set
- Can be restarted by clicking “Send Campaign” again
Cancel Scheduled Campaign
Scheduled campaigns can be cancelled before they start:Campaign Statistics
Database Queries
Get campaign statistics directly from the database: Total Targets:Campaign Duration
Calculate campaign duration:Managing Multiple Campaigns
Campaign Naming Convention
Use clear, descriptive names: Good Examples:Q4_2023_Office365_PhishRedTeam_VPN_Campaign_Dec2023Awareness_Training_Test_1
testcampaign1asdf
Running Multiple Campaigns
Phishmonger supports multiple concurrent campaigns: Considerations:- Each campaign runs independently
- Shared SMTP server may have rate limits
- Monitor total sending rate across all campaigns
- Database handles concurrent writes
- WebSocket events are campaign-specific
- Use different SMTP servers for concurrent campaigns when possible
- Stagger campaign start times to avoid simultaneous bursts
- Monitor server load and database performance
- Keep campaign delays reasonable (30+ seconds)
Campaign Templates
Campaigns can be used as templates for future campaigns by duplicating and modifying:
Database Query to Extract Campaign Email:
Deleting Campaigns
To remove a campaign completely:
What Gets Deleted:
- Campaign record
- All targets for the campaign
- All events for the campaign
- Templates (unaffected)
- Other campaigns (unaffected)
Campaign Best Practices
Before Launch
Verify Deliverability:- Send test to your own inbox
- Send test to mail-tester.com (aim for 8/10 or higher)
- Test rendering on multiple clients (Outlook, Gmail, mobile)
- Verify all links work correctly
- Remove duplicates
- Verify email format is correct
- Check for internal/team email addresses
- Confirm authorization scope includes all targets
- Launch during business hours for better engagement
- Avoid Monday mornings and Friday afternoons
- Consider target organization’s timezone
- Allow enough time to monitor campaign actively
During Campaign
Active Monitoring:- Keep campaign tracking page open
- Watch for ERROR events
- Monitor overall sending rate
- Check for unexpected patterns
- 450/451 errors: Greylist or rate limit - slow down
- 550 errors: Permanent failure - check address validity
- Connection refused: Mail server down or blocked
- Authentication failures: Verify SMTP credentials
- Pause campaign if suspicious activity detected
- Stop campaign if technical issues occur
- Adjust delay if rate limiting occurs
After Campaign
Reporting:- Export events for analysis
- Calculate success metrics (delivery rate, CTR)
- Document lessons learned
- Archive campaign data if needed
- Stop campaign after completion
- Export data before deletion
- Delete campaign when no longer needed
- Clear old database entries
Campaign Metrics
Key Performance Indicators
Delivery Rate:Reporting
Generate campaign report:Troubleshooting Campaigns
Campaign Won’t Start
Symptoms: Clicking “Send Campaign” has no effect Possible Causes:- No targets added to campaign
- All targets already marked as phished
- Campaign is already sending (is_sending = 1)
Campaign Stuck Sending
Symptoms: Campaign shows as sending but no emails are going out Possible Causes:- Node.js process crashed
- Database lock
- SMTP connection hung
- Restart Node.js server
- Check server logs for errors
- Reset is_sending flag in database
Emails Not Delivering
Symptoms: ERROR events logged for all or most targets Common Error Codes:- 550 5.7.1: SPF or authentication failure
- 550 5.1.1: User unknown (invalid email address)
- 554: Message rejected (content filtering)
- Connection refused: Port 25 blocked or mail server down
- Verify DNS records (SPF, DKIM, DMARC)
- Check target email addresses are valid
- Review email content for spam triggers
- Verify SMTP server is reachable
- Try authenticated relay instead of direct delivery