2026
1.4.0.4
New: Per-form CRM overrides
Every form plugin (WPForms, Gravity Forms, Fluent Forms, Contact Form 7, Everest, Formidable, Forminator, Ninja Forms, HappyForms, MetForm, QuillForms, SureForms) now has a CRM overrides section in its settings panel. Override the global list and tag selection per individual form — useful when different forms feed different audiences or segments.
New: Per-checkout CRM overrides
WooCommerce, SureCart, FluentCart, EDD, and GiveWP checkout sources now have a dedicated CRM overrides tab alongside General and Collect fields. Set different lists and tags for each checkout source independently.
New: Modern list & tag dropdowns
The native multi-select box is replaced with a modern searchable dropdown throughout — click to open, type to filter, checkboxes to select, pill tags showing your choices. Appears on the CRM Lists tab, the CRM overrides tab, and per-form overrides for all CRM integrations.
New: Tag dropdowns from live data
CRMs that expose a tags API now show a dropdown of your actual tags instead of a free-text input. Supported: MailerPress, FluentCRM, MailPoet, Mailster, Groundhogg, ActiveCampaign, Kit, Klaviyo, GetResponse. Tag names/IDs are cached after saving your API key.
Fix: API keys no longer wiped on save
When a CRM API key was masked, saving settings without re-entering the key silently deleted the stored key. Fixed — masked fields now send a sentinel value that is stripped before saving, preserving the existing key.
Fix: Tags saved correctly from multi-select
Tags from dropdown pickers were being saved as the string "Array" due to a PHP sanitization mismatch. Fixed across all save paths including global CRM settings, checkout source overrides, and per-form overrides.
Fix: Newsletter plugin lists now load
The newsletter_get_lists() function referenced in our code does not exist in Newsletter 9.x. Fixed to use Newsletter::instance()->get_lists() — lists now populate correctly in all three locations (main Lists tab, checkout overrides, per-form overrides).
Fix: FluentCRM tags dropdown crashTag::get() returns an Eloquent Collection of model objects. Calling ->toArray() then accessing $t->id on the resulting plain arrays caused a fatal error. Fixed to iterate the collection directly as model objects.
Fix: WP admin update notifications
The SureCart licensing $client->updater() call was missing, so WordPress never received update availability signals. Fixed — plugin updates now show in the WP admin dashboard.
Updated: SureCart SDK
Vendor licensing library updated to the latest version (April 2026), which adds Activation.php support.
Updated: Tested up to WordPress 7.0
v1.3.7.2
SureContact Integration
Added SureContact as a new CRM destination. Contacts are forwarded via the SureContact public API v1 using a single contacts/upsert call. Supports list selection, tag assignment (names resolved to UUIDs at save time), field mapping, and custom fields.
Collect Fields per Form
All 11 form plugin integrations now include a full field mapping UI inside each form’s own settings panel — email, first name, last name, phone, company, and country selectors alongside an Extra Fields row builder for mapping any additional form field to a custom CRM key. The CRM key is the identifier your destination uses — a MERGE tag in Mailchimp, a custom field slug in FluentCRM, a property name in HubSpot.
Global Data Fields
New Global data fields tab in the main dashboard. Define custom fields with a WPSC slug, source type (Form input, Order meta, ACF field, User meta, Cookie, PHP hook), source key, CRM key, and an active toggle. Custom fields sync automatically to all CRM field mapping dropdowns so they appear as options alongside the standard fields in every integration.
Collect Fields Tab on Form Source Cards
Form plugin cards in the dashboard (WPForms, Gravity Forms, Fluent Forms, and all others) now have General and Collect fields tabs matching the same layout as checkout sources. The Collect fields tab explains per-form field mapping and documents how Extra Fields and CRM keys work.
Geo Detection Expanded
Geo detection now supports five provider options: Bunny.net CDN header, Bunny.net API, Bunny.net IP2Location, free IP API, and IP2Location.io. Provider selection is configurable from the Geo Detection settings tab with API key fields for providers that require one.
Multiple Webhooks
The webhook system now supports unlimited webhook endpoints, each with its own URL, name, HMAC secret, enabled toggle, and field map. Previously only a single webhook was supported.
Checkbox Color
Added a hex color picker in General settings to customize the opt-in checkbox accent color. Applied globally via accent-color in wp_head.
CRM Field Map Dropdowns Include Custom Fields
All WPSC field dropdowns in CRM field mapping tabs, custom fields tabs, and webhook field maps now include any custom global data fields you have defined, alongside the standard built-in fields.
API Key Masking
API keys are no longer returned in plaintext from the settings REST endpoint. The GET response replaces all stored API keys with a masked sentinel. The admin UI shows “API key saved — paste to replace” when a key is set. Saving without changing the field preserves the stored key.
Double Opt-in Removed
Double opt-in has been removed from all CRM integrations. It was not reliably supported via API across any of the supported platforms and has been replaced by account-level configuration where needed.
Log Filtering
The Customers Log tab now supports filtering by source integration, keyword search, and date range (1D / 7D / 30D / 90D / 1Y). CSV export respects the active filters.
Bug Fixes
Fixed: Global data fields custom rows were not saving or reloading after page refresh. Fixed: Extra Fields per form were not saving due to a mismatch between the JS payload key and the PHP POST reader. Fixed: List ID mismatches between the JS field reader and the PHP-rendered list div caused Extra Fields to always read as empty. Fixed: PHP parse error in AbstractFormProvider caused by an unescaped apostrophe in a string literal. Fixed: PHP parse error in FluentFormsProvider caused by invalid <?php ?> tags injected inside an echo-based rendering context. Fixed: Duplicate render_custom_fields_section calls in several form providers.
v1.2.2.2
Fixed: SureCart integration was never capturing the opt-in checkbox value. SureCart’s checkout splits across two separate REST requests (/finalize and /confirm), and the form data is only present during finalize. The optin value is now captured at finalize via the surecart/checkout/validate filter and stored as a transient, then read and cleared when the checkout is confirmed. Also fixed: unchecked SureCart checkouts are now logged correctly instead of being silently skipped.
v1.2.2.1
Fixed: Form provider integrations (SureForms, WPForms, Gravity Forms, etc.) were not logging consent records when the checkbox was left unchecked in contact mode. Unchecked submissions are now logged with checked = false, consistent with how WooCommerce has always handled it.
Checkout Sources Adds an opt-in checkbox to WooCommerce Block Checkout, WooCommerce Shortcode Checkout, SureCart, FluentCart, Easy Digital Downloads, and GiveWP legacy donation forms. All gateway types covered across all checkout sources — inline, async, and offline payments all forward correctly on completion.
Form Plugin Integrations Adds an opt-in checkbox to SureForms, Fluent Forms, WPForms, Gravity Forms, Formidable Forms, Quill Forms, HappyForms, Forminator, Contact Form 7, Ninja Forms, MetForm, and Everest Forms. Each integration supports Newsletter mode (forward every submission) and Contact mode (checkbox required). Per-form configuration is accessible inside each form plugin’s own admin UI.
WordPress-Hosted CRM Destinations Forwards opted-in contacts to FluentCRM, MailPoet, Groundhogg, Newsletter (by Stefano Lissa), Mailster, and MailerPress via each plugin’s native PHP API. No API keys required.
Cloud ESP & CRM Destinations Forwards opted-in contacts to Mailchimp, Brevo, MailerLite, Omnisend, Moosend, Mailjet, GetResponse, Campaigner, ActiveCampaign, Kit (ConvertKit), Klaviyo, Drip, and HubSpot via their respective REST APIs. List, audience, group, or campaign selection supported where available.
Webhook Fires an outbound POST request to a configurable URL on every opt-in event. Compatible with Zapier, Make, n8n, and any service that accepts a JSON webhook.
GDPR Geo-Detection Automatically adjusts the checkbox state based on the visitor’s detected country. Detection priority: Cloudflare CF-IPCountry header → Bunny.net CDN-RequestCountryCode header → WooCommerce Geolocation → wpsc_geo cookie. A lightweight AJAX fallback corrects the checkbox state on CDN-cached pages where PHP never runs.
Customers Log Records every opt-in event with the contact’s name, email, timestamp, and source integration. Filterable by source and date range (1D / 7D / 30D / 90D / 1Y). Exportable to CSV.
Multilingual Support WPML and Polylang supported for the opt-in label. Ships with compiled translations for 25 languages. Full RTL support.
WooCommerce HPOS Compatibility Fully compatible with WooCommerce High Performance Order Storage. Compatibility declared automatically at plugin load.
Licensing Licensed and updated via the SureCart licensing system. Updates delivered through the standard WordPress updates screen.