FluentCRM Simulator
Fluent CRM simulator
by Hasanuzzaman · github.com/shamim0902/fluent-crm-simulator · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/shamim0902/fluent-crm-simulator/archive/refs/heads/master.zipAutomatically generate test campaigns and simulate email engagement (opens/clicks) for FluentCRM. A developer tool for testing reports, analytics, automations, and performance at scale.
Requirements
- WordPress 5.6+
- PHP 7.4+
- FluentCRM (latest version recommended)
Installation
- Download the latest release zip from the button above (or from Releases)
- In WordPress admin, go to Plugins > Add New > Upload Plugin
- Upload the zip file and click Install Now
- Activate the plugin
Or manually:
- Extract the zip to
/wp-content/plugins/fluent-crm-simulator/ - Activate the plugin from the WordPress Plugins screen
How to Use
Navigate to Tools > FCRM Simulator in your WordPress admin dashboard.
Quick Start — Manual Mode (Recommended)
Use this mode to generate campaigns one at a time with full control.
- Select Tags/Lists — Click the tag/list pills to select which subscribers to target. Blue pills = included, red pills = excluded.
- Set Date Range — Choose start and end dates. Email "sent" timestamps will be randomly spread across this range for realistic distribution.
- Set Click Range — Configure how many emails (min–max) should receive simulated engagement per campaign. Default is 100–200.
- Click "Generate Campaign & Simulate" — This does everything in one step:
- Creates a campaign targeting the selected tags/lists
- Generates one
CampaignEmailrecord per matching subscriber (marked as "sent") - Randomly selects emails within the click range
- Simulates opens and clicks with tracking metrics
- Repeat as needed to generate more campaigns.
Note: The status panel will show "Stopped" in manual mode. This is normal — the status indicator only reflects whether auto-generation is enabled, not whether you've generated campaigns manually.
Auto Mode — Continuous Generation
Use this mode to generate campaigns automatically on a schedule.
- Configure all settings as described above (tags, lists, date range, click range)
- Set "Auto-generate" to a number greater than
0(e.g.,2for 2 campaigns per hour) - Click "Save Settings"
- The status will change to "Running (2/hr)" with a pulsing indicator
- Campaigns are generated in batches every 5 minutes (e.g., 2/hr = 1 campaign every 30 minutes)
- A warning banner appears across all admin pages while auto-generation is active
- To stop: Click "Stop Simulation" or set auto-generate to
0and save
Simulate Clicks Only
Click "Simulate Clicks Only" to add more engagement data (opens/clicks) to existing simulated campaigns without creating new ones. This is useful when you want to increase engagement metrics on campaigns you've already generated.
Clean Up
Click "Purge All Simulated Data" to permanently delete all simulator-created campaigns, their emails, and tracking metrics. Real campaigns are never affected — the purge only targets data marked with the simulator's internal flag.
Settings Reference
Campaign Settings
| Setting | Description | Default |
|---|---|---|
| Include Tags | Subscribers with any selected tag will be targeted | None |
| Include Lists | Subscribers in any selected list will be targeted | None |
| Exclude Tags | Subscribers with these tags will be removed from targeting | None |
| Exclude Lists | Subscribers in these lists will be removed from targeting | None |
| Date Range | Start/end dates for spreading email timestamps | Last 30 days |
| Subject | Email subject line for the simulated campaign | "Simulated Campaign" |
| Email Body | HTML content for the simulated email body | Default placeholder |
You must select at least one tag or list. The simulator only targets contacts with
status = subscribed.
Engagement Settings
| Setting | Description | Default |
|---|---|---|
| Click Range (min–max) | Number of emails randomly selected for engagement simulation per campaign. Capped by the actual number of emails in the campaign. | 100–200 |
| Open-Only Rate (%) | Of the selected emails, this percentage will be marked as opened only (no click). The remaining emails will receive both opens and clicks (1–3 random URLs each). | 70% |
| Auto-generate | Number of campaigns to generate per hour. Set to 0 to disable automatic generation. |
0 (disabled) |
Example Scenarios
"I want 150 emails clicked out of my campaign"
- Set click range: Min
150, Max150 - Set open-only rate:
0%(all selected emails get clicks)
"I want realistic engagement: mostly opens, some clicks"
- Set click range: Min
100, Max200 - Set open-only rate:
70%(70% open-only, 30% get clicks too)
"I want to test with high volume over the last quarter"
- Set date range: 3 months ago to today
- Select your target tags
- Click "Generate Campaign & Simulate" multiple times, or set auto-generate to
5/hr
How It Works
- Campaign Creation — Creates a FluentCRM campaign with status
archived(bypasses the normal sending pipeline — no actual emails are ever sent) - Email Records — Generates one
fc_campaign_emailsrow per matching subscriber withstatus = sent, a uniqueemail_hash, and a randomized timestamp within the date range - Open Simulation — Sets
is_open = 1on selected campaign emails and insertsCampaignUrlMetricrecords withtype = open - Click Simulation — Increments
click_counteron campaign emails and insertsCampaignUrlMetricrecords withtype = click, referencing URLs stored infc_url_stores - Scheduling — Uses Action Scheduler (bundled with FluentCRM) for auto-generation, with WP-Cron as fallback. Runs every 5 minutes.
- Data Safety — All simulated campaigns are tagged with
_fcrmsim_simulatedinfc_meta. The purge function queries this marker to identify and delete only simulated data.
What Gets Created
| Table | Records Created |
|---|---|
fc_campaigns |
One campaign per generation |
fc_campaign_emails |
One row per subscriber in the targeted tags/lists |
fc_campaign_url_metrics |
Open and click tracking records |
fc_url_stores |
5 placeholder URLs for click tracking |
fc_meta |
_fcrmsim_simulated marker per campaign |
What Does NOT Get Modified
- Subscribers — No contacts are created, modified, or deleted
- Tags/Lists — No tag or list associations are changed
- Real Campaigns — Existing campaigns are never touched
- Email Sending — No emails are actually sent, no mail queue is affected
Important Notes
- Designed for development and staging environments — not recommended for production use
- Simulated campaigns appear in FluentCRM analytics and reports (by design, for realistic testing)
- No actual emails are sent — campaigns are created directly in
archivedstatus - The simulator works with existing subscribers — make sure you have contacts with the selected tags/lists
- When the plugin is deactivated, all scheduled events are cleared; existing simulated data remains until purged
- Auto-updates are supported via GitHub releases
License
GPLv2 or later