Skip to main content

Status update for FluentCRM 3.1.6 β€” revenue re-sync + Classic/HTML template editor

First of all, a big thank you: both we and our client genuinely love FluentCRM. It works really well, the functionality is excellent, it's outstanding value for money, and it's reliable. We're grateful for everything the development team does. πŸ™ The notes below are meant as constructive feedback after upgrading to 3.1.6 β€” to help make a great product even better.

A follow-up on the two issues I reported around 3.1.0, after testing 3.1.6 / Pro 3.1.6 on WordPress 7.0 + WooCommerce 10.8.1:
- the revenue re-sync bug, and
- ["v3 email editor cannot open legacy v2 Classic/HTML templates"](https://community.wpmanageninja.com/portal/space/fluent-crm/post/v3-email-editor-cannot-open-legacy-v2-c).

## βœ… Revenue re-sync `map('intval')` bug β€” FIXED in 3.1.6

The original bug: `CampaignAnalyticsController::getAttributedOrderIds()` used `->map('intval')`, and wpFluent's `Collection::map()` calls the callback with `(value, key)`, so `intval($value, $key)` used the array index as the numeric base β†’ garbage order IDs β†’ "Re-Sync Revenue" overwrote `_campaign_revenue` with a near-random (much smaller) value.

In 3.1.6 the code is corrected to a closure:

->map(function ($orderId) { return intval($orderId); })

Verified end-to-end:

- The plugin upgrade alone (no Re-Sync) leaves the cached revenue bit-identical (no corruption on upgrade).

- Pressing Re-Sync Revenue now recomputes a correct value from the real paid orders (net of refunds), instead of corrupting it. On the very campaign that dropped from 2,350,771 β†’ 107,903 under 3.1.0, 3.1.6 produced 2,186,354 (= sum of the 76 currently-paid attributed orders, net) β€” a legitimate current recomputation, not garbage.

Minor suggestion: Re-Sync recomputes from current order state, so re-syncing a historical campaign replaces the as-sent figure with the current net (refunds/cancellations since send). Not a bug, but a small tooltip/warning would help users avoid re-syncing historical campaigns expecting the original figure.

## β—‘ Classic/HTML template editor β€” PARTIALLY improved in 3.1.6

- The legacy `_edit_type=html` template now opens in the v3 editor and renders the Classic block with table-cell background colors preserved β€” the white-on-white invisibility from 3.1.0 is gone. Thank you!

- BUT two related issues remain, each filed as a separate report:

Β  1. The Gutenberg-path Classic/freeform edit popup is a ~58px thin strip on hard refresh (TinyMCE not initialized in the iframed editor) β€” a load-order race condition.

Β  2. Switching an existing campaign to "Classic Editor" (`raw_classic`) does not persist β€” the stale `settings.template_config.design_template` overrides the user's top-level choice on save.

For our weekly newsletter we now use the dedicated "Classic Editor" mode (which renders a full TinyMCE and sends correctly), plus a small site-side mu-plugin to make the editor-mode choice persist until item 2 is fixed.

Thanks a ton for the kind words and the detailed feedback! The FluentCRM team really appreciates it, and we are looking into this. Thank you for helping us refine the product!