=== WP Fusion === Contributors: verygoodplugins Tags: infusionsoft, crm, marketing automation, user meta, sync, woocommerce, wpfusion Requires at least: 4.6 Tested up to: 6.9.0 Stable tag: 3.47.4.1 Requires PHP: 7.3 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html The only plugin you need for integrating your WordPress site with your CRM. == Description == WP Fusion is a WordPress plugin that connects what happens on your website to your CRM or marketing automation tool. Using WP Fusion you can build a membership site, keep your customers' information in sync with CRM contact records, capture new leads, record ecommerce transactions, and much more. = Features = * Automatically create new contacts in your CRM when new users are added in WordPress * Assign tags to newly-created users * Restrict access to content based on a user's CRM tags * Option to redirect to alternate page if requested page is locked * Shortcodes to selectively hide/show content within posts * Apply tags when a user visits a certain page (with configurable delay) * Configurable synchronization of user meta fields with contact fields * Update a contact record in your CRM when a user's profile is updated * LearnDash, Sensei, and LifterLMS integrations for managing online courses * Integration with numerous membership and ecommerce plugins == Installation == Upload and activate the plugin, then go to Settings >> WP Fusion. Select your desired CRM, enter your API credentials and click "Test Connection" to verify the connection and perform the first synchronization. This may take some time if you have many user accounts on your site. See our [Getting Started Guide](https://wpfusion.com/documentation/#getting-started-guide) for more information on setting up your application. == Frequently Asked Questions == See our [FAQ](https://wpfusion.com/documentation/). == Changelog == = 3.47.4.1 - 12/30/2025 = * Fixed missing build files in block-builder based plugin integrations (SureDash, SureMembers, GiveWP, Tribe Tickets) * Fixed ActiveCampaign integration not returning an error when the API returns an empty response (fixes tags getting lost due to unknown API errors like the 511 errors last week) * Fixed settings input on LifterLMS access plans overlapping with the LifterLMS UI with LifterLMS 9.1+ = 3.47.4 - 12/23/2025 = * Added [SureDash integration](https://wpfusion.com/documentation/learning-management/suredash/) for syncing course and lesson completions * Added Initial Payment field for Paid Memberships Pro one-time orders * Added support for pending cancellation tags with Paid Memberships Pro subscriptions * Added support for offsite payment gateways (Mollie, Barion, etc.) with AmeliaBooking * Improved support for multiple membership levels with Paid Memberships Pro * Fixed EDD auto-apply discounts not checking product requirements before applying * Fixed FluentCart refund tags not being removed when access was revoked * Fixed Customer.io email address changes not syncing to CRM * Fixed HubSpot phone numbers not being formatted to E.164 standard * Fixed Sender.net groups sync not handling pagination for accounts with many groups * Fixed Keap API calls returning 404 errors due to trailing slashes in URLs * Fixed admin row actions showing on unsupported post types = 3.47.3 - 11/27/2025 = * Added a [SureForms integration](https://wpfusion.com/documentation/forms/sureforms/) * Added support for bulk editing access rules on Presto Player Media Hub videos * Improved - Transient network errors (cURL timeouts, SSL errors, etc.) are now automatically retried * Improved - Updated Pipedrive integration to use the new public app keys * Fixed data loaded from the CRM not respecting the visibility setting of BuddyPress XProfile fields * Fixed dynamic tagging (Create tag(s) from value) not working with Gravity Forms * Fixed GetResponse integration returning false when no tags are found for a contact, instead of an empty array, causing errors with some integrations * Fixed notifications getting sent to WPForo forum subscribers when they did not have access to the forum = 3.47.2 - 11/5/2025 = * Added support for segmenting using [Labels with Pipedrive](https://wpfusion.com/documentation/crm-specific-docs/pipedrive-labels/) * Added support for syncing Omnisend email subscription status (subscribed/unsubscribed/nonSubscribed) in both directions * Added beta support for the new Kit v4 API (faster, requires manual upgrade) * Fixed "Email Optin Default" (checked vs unchecked) not being respected on the new GiveWP visual donation form builder * Improved - Omnisend webhooks now support URLs without contact_id parameter (extracts email from request body and looks up contact automatically) * Fixed WS Forms `datetime` and `datetime-local` fields not syncing to CRMs as Unix timestamps * Fixed "Unknown" gateway MemberPress transactions created by Uncanny Automator not being processed by WP Fusion * Fixed fatal error showing post protection status badge in the admin if the post was protected by "Not" tags but not "Required Tags" * Fixed Pipedrive webhooks not working * Fixed fatal error if MailPoet integration was called before MailPoet plugin was initialized = 3.47.1 - 10/20/2025 = * Fixed MemberPress integration not syncing the membership level name when a user is downgraded to a free tier * Fixed "Function _load_textdomain_just_in_time was called incorrectly" notice with Fluent Forms with WordPress 6.7+ * Fixed Pipedrive webhook registration failing with "Scope and URL mismatch" error by enforcing HTTPS in webhook URLs * Fixed GS Product Configurator feeds not applying tags for guest users due to missing email field mapping in the new field mapping format = 3.47.0 - 10/14/2025 = * Added beta support for [FluentCart](https://wpfusion.com/documentation/ecommerce/fluentcart/) * Improved - Skipping non-scalar values when syncing to Klaviyo * Improved - Brevo phone number formatting now uses wpf_phone_number_to_e164() and respects country field for proper international phone number formatting * Improved Brevo error handling when the API key does not have sufficient permissions for the request * Improved - WP Remote Users Sync now pushes user meta (including user ID) to CRM when users were created or updated remotely * Improved - Added 18 additional European and international country codes to wpf_phone_number_to_e164() including Spain (ES) * Fixed - Brevo incorrectly adding "1" prefix to international phone numbers that didn't start with "1" or "+" * Fixed EDD Recurring Payments tags being removed immediately when a subscription was cancelled, instead of when the billing period expired * Fixed - WS Form date fields not converting to Unix timestamps before syncing to CRMs like HubSpot, causing "was not a valid long" errors * Fixed - BuddyBoss datebox fields only syncing Month and Year values (missing Day) to CRMs due to improper handling of date value format * Fixed - WPForms date/time fields not properly converting to unix timestamps before syncing to CRMs, resulting in missing or incorrectly formatted date values * Fixed - Groundhogg (REST API) date fields only syncing Month and Year values (missing Day) * Fixed - Return After Login not working when post type or taxonomy restrictions were enabled, due to access check running during wp_login action before user authentication was fully complete = 3.46.15 - 10/7/2025 = * Added support for syncing additional fields from the [Event Tickets Additional Fields extension](https://theeventscalendar.com/extensions/additional-fields-for-tickets/) * Improved - Optimized WooCommerce Subscriptions batch operations for better performance with large numbers of subscriptions * Fixed ticket number only syncing with FooEvents when it was updated, not when it was first created * Fixed FooEvents attendees created via guest checkout not syncing * Fixed MemberPress integration creating duplicate contacts if a transaction was processed before a user registration had fully completed processing * Fixed the Retry API Call button in the activity logs not using the correct content type headers when refreshing an access token * Fixed check to `$subscription->is_active()` in EDD Recurring Payments setting subscriptions to expired if called during a renewal payment * Fixed error `Too few arguments to function WPF_API::delete_transient()` when processing HubSpot webhooks with multiple contact IDs * Fixed FooEvents attendees not syncing when attendee email matches billing email but differs from logged-in user's email = 3.46.14 - 10/1/2025 = * Added option to remove tags when MemberPress sub-account is removed from a corporate account * Added support for syncing FooEvents ticket number and QR code details after generation * Added FooEvents Ticket ID fields to available CRM fields * Improved - Standardized checkbox value handling across CRMs to ensure consistent behavior * Fixed ACF checkbox fields with value 0 incorrectly being cast to false when syncing to Zoho * Fixed Gravity Forms Entry Date fields failing to sync to Salesforce DateTime fields (deserialize error) * Fixed - If-So Gutenberg fields now use associative array instead of object to prevent fields showing for all conditions * Fixed MemberPress creating duplicate contacts in HighLevel when "Allow Duplicate Contacts" is enabled * Fixed Event Tickets attendees sync status icon showing greyed out even when attendees were synced successfully to the CRM = 3.46.13 - 9/22/2025 = * Fixed "Test Connection" button failing with Drip since 3.46.12 * Fixed Drip integration not removing tags with periods in the tag name * Fixed restricted content message not showing on LearnDash lessons and topics since 3.46.12 (users without access were redirected to the course instead) = 3.46.12 - 9/16/2025 = * Added support for the Booking Rescheduled trigger with Fluent Booking * Improved - BuddyBoss App LearnDash access controls now properly handle locked lessons and topics * Fixed custom `last_name` fields not syncing with Fluent Booking * Fixed EDD Recurring Payments subscription status sync timing issue that could cause subscriptions to appear expired after a renewal payment was processed * Fixed GetResponse integration not loading more than 100 available tags * Fixed fatal error marking MemberPress quizzes complete * Fixed fatal error "call to undefined function affwp_icon_tooltip()" with AffiliateWP version 2.29.0 * Developers: Refactored BuddyBoss App integration into smaller classes in the /integrations/buddyboss-app/ directory = 3.46.11 - 9/9/2025 = * Added - New ["LearnDash Quiz Results" batch operation](https://wpfusion.com/documentation/learning-management/learndash/#quiz-results) to sync quiz scores, points, and category scores to the CRM * Added support for syncing ACF gallery field attachment IDs when updated on the frontend * Improved error handling for Dynamics 365 API errors * Improved - When updating an Ontraport contact with referrer data (affiliate ID in the `aff_` cookie), sync will bypass the API queue so the referrer is updated before any ecommerce data is synced * Improved performance for LearnDash batch / export operations, will now only query active LearnDash users instead of all users * Improved - Automatic cleanup of orphaned background batch operations to prevent database bloat * Improved - Added `started` and `updated` timestamps to batch operations for better tracking and cleanup * Fixed - Activity log timestamps now display in the site's local timezone instead of UTC * Fixed Groundhogg - User metadata now syncs correctly back to Groundhogg when creating a WordPress user from an existing Groundhogg contact via the Groundhogg funnel action * Fixed "LearnDash course enrollment statuses" and "LearnDash group enrollment statuses" batch operations not working since v3.46.0 * Fixed - EDD Recurring subscription status sync timing issue that could cause subscriptions to appear expired when they were still active * Fixed - Paid Memberships Pro discount code tags not being saved due to incorrect nonce verification * Fixed PHP warning `Undefined array key "apply_tags"` when a user was added to a SureMembers access group and there were no Apply Tags configured on that access group * Fixed PHP error `Class "EDDRecurringSubscriptionsSubscription" not found` when using EDD Recurring Payments versions below 2.13.0, since 3.46.4 * Fixed fatal error when loading custom fields from Dynamics 365 if the user did not have the `prvReadEntity`, `prvReadAttribute`, or `prvReadEntityDefinition` permissions * Fixed inconsistent sync of WooCommerce Memberships "Plan Name" field * Fixed - Reverted to private Pipedrive credentials since the public app is still in review * Fixed conflict with User Menus plugin: user role checkboxes were not clickable when WP Fusion was active * Fixed missing headers in license activation and deactivation requests causing 415 status errors * Fixed PHP warning in GiveWP integration when managing donation forms in the block editor * Fixed GiveWP integration settings not persisting when using the block editor donation form builder = 3.46.10 - 8/25/2025 = * Added support for the email optin checkbox on the Give Visual Donation Form builder * Fixed filters not working in the Activity Logs page * Fixed date fields not syncing correctly with FooEvents when the Date Format in WordPress was set to d/m/Y * Fixed error "Call to undefined function et_builder_dynamic_module_framework()" in the Divi editor with older versions of Divi = 3.46.9 - 8/18/2025 = * Added a setting to apply tags based on [LifterLMS order statuses](https://wpfusion.com/documentation/learning-management/lifterlms/#order-statuses) * Added search box to the tags dropdown in the Bricks Builder integration * Fixed `phone` field not syncing to Maropost * Fixed conflict with User Menus plugin: user role checkboxes were not clickable when WP Fusion was active * Fixed - Constant Contact contact updates now preserve existing field values by loading the complete contact record before updating = 3.46.8 - 8/11/2025 = * Added support for the GiveWP Form Field Manager addon with the new visual donation form builder * Added support for the Subscribe to List field in the Maropost integration * Improved UI on the setup tab for OAuth connections (hidden API tokens, made action buttons more prominent) * Improved - Added a "Disconnect" button to the OAuth connection status section * Improved - When installing WP Fusion from the Klaviyo Marketplace, if WP Fusion is already active, the OAuth flow will start automatically * Improved - When installing WP Fusion from the Klaviyo, if WP Fusion is already active, the OAuth flow will start automatically * Fixed `0` getting synced for the LearnDash Course Enrollment Expiration Date field if a user enrolled in a course with no expiration date * Fixed broken pagination in the AccessAlly integration * Fixed tags configured for WooCommerce order statuses getting applied in real time during bulk status changes instead of via a background process * Fixed WooCommerce orders not being processed if their status was bulk-edited from a non-paid to a paid order status * Developers: Improved support for disabling / enabling settings in the WP Fusion options page based on the value of other settings * Developers: Added `$update_data` parameter to the `wpf_format_field_value` filter to allow modifying the value of a field before it is synced to the CRM * Fixed fatal error `Class "EDD\Admin\Downloads\Editor\Section" not found` since 3.46.7 when using Easy Digital Downloads versions below 3.3.6 = 3.46.7 - 8/4/2025 = * Added individual and bulk log entry deletion functionality in the Activity Logs page * Added time the batch operation was last run to the batch operations list * Added translations for Russian, Japanese, Chinese, and Korean * Updated Pipedrive integration to use new public app keys * Improved - Moved WP Fusion's Easy Digital Downloads meta box to the new tabbed interface * Improved - Updated Klaviyo integration to the 2025-07-15 API * Improved Klaviyo error handling * Improved - Added plugin conflict detection for HighLevel OAuth authorization to warn users about interfering plugins * Fixed nonce validation failing on WSForm submissions when using Form Auto Login * Fixed fatal error auto-enrolling users into FluentCommunity courses via linked tags when the linked tags had been migrated from the previous settings storage in v3.46.7 * Fixed error "Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, string given" when tracking events with FluentCRM = 3.46.6.1 - 7/30/2025 = * Fixed incorrect version number in plugin updater (always showed as an update was available) * Fixed missing "Apply Tags - Complete" setting on FluentCommunity courses since the new v3.46.6 UI * Fixed Link With Tag setting not automatically migrating to the new FluentCommunity courses / spaces UI = 3.46.6 - 7/28/2025 = * Added translations for Spanish, French, German, Italian and Portuguese * Updated [Fluent Community](https://wpfusion.com/documentation/membership/fluentcommunity/) integration to move settings to individual Spaces and Courses * Improved - Stopped syncing the Billing First Name and Billing Last Name fields to the First Name and Last Name fields in the CRM when processing a WooCommerce order in the admin * Improved - Added caching for the list of WPBakery shortcodes * Fixed tooltip on WooCommerce orders in the orders list showing the synced time as the current time for pending renewal orders = 3.46.5 - 7/21/2025 = * Improved - The WP Download Manager integration now respects the "Hide Archives" setting when using the `wpdm_package` shortcode * Updated Klaviyo scopes to use `subscriptions:write` * Fixed auto-login links with Set Current User enabled not working with recent versions of MemberPress Courses * Fixed level-specific field mapping in Paid Memberships Pro not saving when editing a membership level * Fixed HubSpot lists showing with "(list)" suffix in the tags select dropdown since 3.46.4 * Fixed error `Cannot use object of type WP_Error as array` when removing an affiliate from a deleted AffiliateWP group since 3.46.3 * Developers: Added `$entry_id` parameter to the `wpf_forms_pre_submission` and `wpf_forms_pre_submission_contact_id` filters = 3.46.4 - 7/14/2025 = * Added WooCommerce Subscriptions [global tag settings](https://wpfusion.com/documentation/ecommerce/woocommerce-subscriptions/#global-tag-settings) to apply tags when a user has any active subscription * Added support for MailPoet Tags in addition to Lists * Improved - Disabled the API queue and user tag cache when connected to MailPoet on the same site * Added Klaviyo segments support for content restriction (read-only access control) * Fixed error creating new leads in Zoho when a custom layout was configured for contacts * Fixed PHP warning `Undefined array key "connection_configured"` when loading the WP Fusion settings page during initial setup * Fixed error testing the initial connection with HighLevel = 3.46.3 - 7/8/2025 = * Added dynamic tagging support to Zoho (type new tags into WP Fusion, generate tags based on product names and order statuses) * Fixed Gravity Forms integration not syncing unchecked checkboxes as null (so they were not un-checking previously checked checkboxes in the CRM) * Fixed date and datetime fields loaded into Advanced Custom Fields User Fields not being formatted correctly * Fixed applying and removing tags with Zoho failing with error "Invalid Data error: body" since 3.46.1 * Fixed PHP warning `Undefined $status` when syncing EDD subscription statuses * Fixed AffiliateWP linked tag functionality not able to create a new affiliate and enroll them in an affiliate group at the same time * Fixed AffiliateWP integration not auto-enrolling users into affiliate groups via linked tags if they were already enrolled in a different group * Fixed AffiliateWP integration trying to reapply the same linked tag after a user was just enrolled in an affiliate group by that linked tag * Improved compatibility with EDD Recurring Payments v2.13.0+ = 3.46.2 - 7/1/2025 = * Added support for the Consent field type in Gravity Forms * Added support for importing all contacts from Zoho using the import tool (not just by tag) * Added support for validating the site for initiating the API connection directly from the Klaviyo and Pipedrive marketplaces * Added support for revoking Klaviyo OAuth tokens (requirement for the Klaviyo marketplace) * Fixed WooCommerce Memberships enrollments via linked tags not syncing the membership fields * Fixed initial connection test with Zoho failing since 3.46.1 * Fixed Zoho access token refreshes failing since 3.46.1 * Fixed MemberPress expiration date not syncing when a sub-account is added to a corporate account * Fixed duplicate tags being applied to Salesforce contacts when applying tags via a multiselect field to guests * Developers: the `DOING_WPF_WEBHOOK` constant was renamed to `WPF_DOING_WEBHOOK` to meet WordPress.org standards regarding plugin prefixes = 3.46.1 - 6/24/2025 = * Improved - MemberPress grouped memberships with linked tags now properly handle upgrade paths - only the highest tier membership will be enrolled when multiple tags are present * Improved - The Zoho integration has been updated to use the latest API version (v8) to support the new custom field types * Improved - When adding a new tag to a HubSpot multiselect field, the tag will now only be added if it doesn't already exist * Fixed the Return After Login feature not respecting the "Redirect to" setting if the user does not have access to the requested page after logging in * Fixed MemberPress expiration date not syncing when a sub-account is removed from a corporate account * Fixed miniOrange JWT Login integration not working with new user registrations * Fixed auto-enrollments into Paid Memberships Pro membership levels via linked tags not working since 3.45.0 * Fixed missing phone number field in SureCart integration * Fixed fatal error when creating a new WordPress user via a Groundhogg flow (same site) * Fixed subscription status changes not syncing correctly with EDD Recurring Payments v2.13.0 = 3.46.0 - 6/16/2025 = * Added support for Klaviyo OAuth 2.0 authorization * Improved - The LearnDash integration has been rewritten and modernized for better performance, and some WP Fusion settings from previous versions have been moved to the new LearnDash settings panel * Improved - If a WooCommerce order status is changed and a contact ID does not yet exist, the contact will be created and the status will be synced * Improved - SureCart custom fields are now detected directly from form blocks in the database, eliminating the need for API calls and allowing immediate field availability in WP Fusion settings * Improved logging for missing or invalid email addresses during user registration * Fixed new user registrations with the miniOrange JWT Login plugin not properly detecting email addresses * Fixed WP Download Manager - PDF Viewer addon PDF preview URLs not being checked for access restrictions * Fixed WP Download Manager not setting the "Return After Login" cookies when direct access to a file is denied * Fixed auto-enrollments into LearnDash courses via linked tags not working for administrators * Fixed automatic re-activation of Ultimate Member accounts when the deactivation tag is removed not working since Ultimate Member 2.8.7 * Fixed EDD Recurring Payments WP Fusion settings not being displayed on variable prices with EDD 3.0+ * Fixed course enrollment and expiration dates configured on individual LearnDash courses not being set to "date" type in the WP Fusion settings * Developers: Added `wpf_hubspot_add_engagement` filter to allow modifying the HubSpot engagement body before it is sent * Developers: Updated the HubSpot engagements API to use the new v3 API * Developers: `wp_fusion()->access->template_redirect()` now accepts an optional `$post_id` parameter to allow redirecting based on a specific post ID * Developers: Added `wpf_return_after_login_url` filter to allow modifying the URL a user is redirected to after logging in, using the Return After Login feature = 3.45.12 - 6/3/2025 = * Improved - Added support for creating new custom fields in the CRM field select dropdowns even if there's an existing field with a partially matching name * Fixed fatal error auto-applying WooCommerce coupons if loading the user's tags resulted in an API error * Fixed error in SureCart "The provider is not installed or unavailable" when adding new Apply Tags integrations, since 3.45.8 = 3.45.11 - 5/28/2025 = * Added an integration with [WP Travel Engine](https://wpfusion.com/documentation/events/wp-travel-engine/) * Added "Next Payment Value" field to the WooCommerce Subscriptions integration * Added logging when unknown tag names or IDs are passed to `wp_fusion()->user->apply_tags()` * Fixed numeric strings saved to the WP Fusion options having leading zeros removed when loaded * Fixed PHP warning `Attempt to read property "ID" on null` in the Tribe Tickets integration when enqueuing admin scripts * Fixed WP Fusion syncing empty user meta back to Groundhogg when a new user was created via a Groundhogg flow (same site) * Fixed PHP warning `Calling key() on an object is deprecated` when creating a new tag with Groundhogg (REST API) = 3.45.10 - 5/19/2025 = * Fixed numeric strings being converted to integers when saving the WP Fusion settings, which removed leading zeros from numeric values * Fixed new users registered via the Gravity Forms User Registration Add-On being updated twice in the CRM * Fixed tags applied via a WP Fusion Gravity Forms feed being removed by Gravity Forms User Registration * Fixed Salesforce integration the default Record Type ID when creating objects (like Leads) that don't have a Record Type * Fixed PHP warning `Undefined property: stdClass::$plugin` when checking for updates * Developers: switched to using `wp_remote_request()` for Salesforce API calls, rather than `wp_safe_remote_request()`, to make debugging malformed URLs easier = 3.45.9.1 - 5/8/2025 = * *Attention HighLevel users:* For several hours on May 7th, a bug in the HighLevel API caused refresh tokens to be returned in an invalid format. This update allows WP Fusion to use the new Reconnect API to attempt to automatically reestablish the connection and remove any corrupted data. * Fixed new Gravity Forms field mapping UI not working with Keap and other CRMs that store the remote field type locally * Fixed "A valid URL was not provided" error with Zoho when using auto login links = 3.45.9 - 5/7/2025 = * Added a [Sender.net CRM integration](https://wpfusion.com/crm/sender/) * Added `$gclid` field for sync with Zoho * Improved - The Maropost integration can now load tags from contacts on any list in the account * Fixed Paid Memberships Pro integration not syncing the membership status fields if a member cancelled a membership and had no remaining memberships * Fixed warning about Divi Dynamic Module Framework always showing even if it was disabled * Fixed WP All Import integration not automatically syncing user meta after importing users * Fixed error "Unable to process feed, no email address found" with Gravity Forms feeds configured using the new field mapping UI = 3.45.8.1 - 4/29/2025 = * Fixed new Gravity Forms field mapping not syncing custom merge fields or custom text values = 3.45.8 - 4/29/2025 = * Added a [ClickWhale integration](https://wpfusion.com/documentation/affiliates/clickwhale/) * Added ability to export and import the WP Fusion settings as a .csv file * Added support for automatic formatting of non-text field values with Forminator * Added view in CRM links to the Maropost integration * Improved - Added support for field mapping using the [generic field mapping UI in Gravity Forms](https://wpfusion.com/documentation/lead-generation/gravity-forms/#feed-settings) * Improved - The WooCommerce email optin setting will now be disabled if the checkout page does not contain the [woocommerce_checkout] shortcode * Improved - Updated for compatibility with GiveWP 4.0 * Improved - Added a warning to the Divi Builder settings if the Dynamic Module Framework is enabled * Fixed "Apply Groups" not working with SureCart and MailerLite * Fixed HTTP API logging not working with all Maropost API calls * Fixed Forminator field mapping settings not showing with CRMs that don't use custom fields vs. standard fields * Fixed notices "Function _load_textdomain_just_in_time was called incorrectly" when loading the WP Fusion settings page in the admin since WordPress 6.8 * Fixed JavaScript error "that is not defined" when adding a new tag in the WP Fusion settings page * Fixed users' first names being synced as 1 if no name was provided at registration and there was a boolean field in the POSTed data that contained "first" * Developers: Calling `wp_fusion()->crm->add_tag()` will now add the tag and update the local cache of available tags * Developers: Added function `wpf_update_option()` for updating options in the WP Fusion settings page = 3.45.7 - 4/14/2025 = * Added Booking Rescheduled trigger to [FluentBooking integration](https://wpfusion.com/documentation/events/fluentbooking/) * Improved - The initial HighLevel authorization flow has been updated to use the gray-labelled LeadConnectorHQ Marketplace * Improved - If a contact is deleted or merged in HighLevel, WP Fusion will attempt to look up the contact by email address and retry the API call if a match is found * Improved - If a contact is created or updated in HighLevel, and a "Duplicate Email Address" error is encountered, the existing contact will be updated * Fixed `get_contact_id()` method with ActiveCampaign returning 403 / unauthorized if called before the `init` hook * Fixed "Invalid URL provided" error when handling webhooks with Maropost * Fixed fatal error logging the payment note with EDD if an API error was encountered creating a new contact at checkout * Developers: Added `wpf_get_user_id_by_email()` function for getting a WordPress user ID from an email address = 3.45.6 - 4/8/2025 = * Added support for typing new segment names into the "Select List(s)" dropdown when [using a multiselect field for segmentation with HubSpot](https://wpfusion.com/documentation/crm-specific-docs/how-lists-work-with-hubspot/#using-a-multiselect-for-segmentation) * Added `multiselect (values)` field type for syncing MemberPress multiselect data as their values, instead of their labels * Improved - If a user accepts a retention offer to skip a renewal payment with [Cancellation Survey and Offers for Woo Subscriptions](https://wpfusion.com/documentation/ecommerce/cancellation-survey-for-woocommerce-subscriptions/), the updated subscription fields will now be synced to the CRM * Fixed SliceWP registration date field not being synced * Fixed email address not being synced from the REST API when updating a user * Fixed custom fields not being synced from the REST API when updating a user * Fixed auto login links not pulling user meta since 3.44.27 * Fixed PHP warning `undefined array key "status"` when inserting a referral with SliceWP, if the referral had no status = 3.45.5.1 - 4/3/2025 = * Fixed fatal error `undefined class "Condition_Base"` when using Elementor Pro versions below 3.19.0 (January 2024 update), since 3.45.5 * Fixed missing tags select dropdown options when editing Elementor Popups conditions since 3.45.5 * Fixed fatal error loading the WooCommerce WP Fusion settings panel when no settings were configured = 3.45.5 - 3/31/2025 = * Added an integration with the [Elementor Hotspots element](https://wpfusion.com/documentation/page-builders/elementor/#hotspots) * Added support for [Elementor display conditions](https://wpfusion.com/documentation/page-builders/elementor/#display-conditions) * Added "Required tags (all)" option to the [Divi visibility settings](https://wpfusion.com/documentation/page-builders/divi/) * Added support for importing contacts with GetResponse * Added support for syncing multiselect fields to GetResponse * Added Joined Date field to the Paid Memberships Pro integration * Improved - If a user is synced from a remote site via WP Remote Users Sync, the normal user register / profile update actions will no longer run (i.e. updating the contact in the CRM and applying registration tags) * Improved - If the "Membership Start Date" field is enabled for sync on an individual Paid Memberships Pro membership level, it will now sync the member's start date for that level, instead of the user's general start date * Fixed missing "Next Payment Date" field in Paid Memberships Pro since 3.45.3 * Fixed membership expiration date not syncing at checkout or after changing a membership level with Paid Memberships Pro * Fixed custom Paid Memberships Pro checkout fields missing from the Contact Fields list * Fixed tags select dropdowns not being automatically initialized when adding a new Easy Digital Downloads price variation with EDD 3.3.7 * Fixed MemberPress Transactions Meta batch operation not working since 3.45.0 * Fixed `wordpress_logged_in_wpfusioncachebuster` cookie not being cleared on auto-login logout * Fixed disabled Paid Memberships Pro - Approvals Addon integration since 3.45.3 * Fixed GetResponse integration not validating the API key during setup * Fixed loading contacts and pull user meta operations not working with GetResponse * Fixed API errors with WS Form showing on the frontend and preventing the form submission * Fixed multi-checkbox fields not syncing with WS Form * Fixed upsell and downsell tags not being applied with CartFlows for guest checkouts when using the "Add to main order" option = 3.45.4 - 3/24/2025 = * Added a [BookingPress integration](https://wpfusion.com/documentation/events/bookingpress/) * Fixed Maropost integration not loading more than 200 available tags or custom fields * Fixed error querying contact IDs or tags with Ortto, "incorrect size 0 of fields, minimum 1 and maximum 100 is required" * Fixed tags not syncing between sites with WP Remote Users Sync when the sites were connected to different CRM modules (i.e. FluentCRM same site vs REST API) * Updated the `WPFSelect` React component to version 1.1.6 = 3.45.3 - 3/19/2025 = * Fixed error `Uncaught TypeError: Argument 2 passed to WPF_Advanced_Ads::check() must be an instance of Advanced_Ads_Ad` with Advanced Ads 2.0 * Fixed ConvertPro integration not saving tag selections on the targeting settings in the editor with CRMs that used numeric tag IDs * Fixed Subscription Cancelled tags not being applied with MemberPress since 3.45.0 * Developers: Paid Memberships Pro integration has been separated into three classes for better readability = 3.45.2.2 - 3/12/2025 = * Fixed fatal error loading custom fields from ProfilePress since 3.45.2 = 3.45.2.1 - 3/11/2025 = * Fixed fatal error loading custom fields from Checkout Field Editor Pro in the WP Fusion settings when no block-based checkout fields were configured since 3.45.2 = 3.45.2 - 3/10/2025 = * Added support for custom checkout fields added to the block-based WooCommerce checkout with Checkout Field Editor Pro * Improved - All custom fields sections in the Contact Fields list now link to their respective documentation pages * Improved - Long tag names in the single-option tags select dropdown in the block editor will now break onto multiple lines for readability * Fixed HighLevel sub-account access tokens not refreshing automatically * Fixed not being able to switch from HighLevel agency-level authorization to sub-account authorization via the Reauthorize with HighLevel link * Fixed new Backup Service Account Key feature with Keap / Infusionsoft not persisting between API calls * Fixed fatal error listing Paid Memberships Pro custom user fields on the Contact Fields list since PMPro v3.1x * Fixed MemberPress expiration date field getting saved with `text` type for field mapping when configured on individual membership plans * Fixed PHP warnings when submitting a Gravity Forms form if a WP Fusion feed was active but had no fields mapped * Fixed lists not being assigned when updating an existing subscriber with FluentCRM (REST API) * Fixed REST API updates to user profiles not being synced to the CRM * Developers: Removed compatibility with FluentForms v4.x and lower = 3.45.1 - 3/3/2025 = * Added support for tickets and RSVPs configured as blocks with [Event Tickets](https://wpfusion.com/documentation/events/the-events-calendar-event-tickets/#ticket-blocks) * Added support for a [backup Service Account Key for Infusionsoft/Keap](https://wpfusion.com/documentation/installation-guides/how-to-connect-infusionsoft-to-wordpress/#backup-service-account-key). If the primary key is throttled, WP Fusion will automatically switch to the backup key until 12am UTC * Added option to update existing user's tags and metadata when importing users via the [import tool](https://wpfusion.com/documentation/tutorials/import-users/) * Improved - The [Memberoni integration](https://wpfusion.com/documentation/learning-management/memberoni/) will now remove any configured tags on the lesson, roadmap step, course, and/or roadmap when a user marks a lesson or roadmap step as incomplete, or when a course/roadmap progress is reset * Improved - Salesforce will now retry the API call if a contact is not found, to allow for updates to deleted or merged contacts * Improved - Added support for membership-level-specific field mapping in the Paid Memberships Pro integration, allowing different CRM fields to be used for each membership level's data * Fixed - After adding a payment to an order with Keap/Infusionsoft, the `invoice_id` will always be saved. Previously the Job ID was saved, which is usually the same as the Invoice ID, but on some accounts they are no longer in sync * Fixed import tool with Groundhogg not able to import all contacts if a tag wasn't specified * Fixed "0" custom field values not being loaded from Keao / Infusionsoft * Fixed users imported via the import tool without a tag filter showing as "Unknown Tag" in the Import Groups log * Fixed searching for tags in the "WP Fusion - Remove Tags" SureCart integration not filtering the results by the search term * Fixed error `WPF_MemberPress_Transactions does not have a method "recurrring_transaction_failed"` since 3.45.0 * Fixed PHP warning in the Salesforce integration when the webhook input was empty = 3.45.0.1 - 2/26/2025 = * Fixed error `WPF_MemberPress_Transactions does not have a method "recurrring_transaction_completed"` since 3.45.0 * Fixed the timestamp conversion to midnight with HubSpot sometimes having problems if future dates were after a change to or from Daylight Savings Time (DST) = 3.45.0 - 2/24/2025 = * Added ability to sync MemberPress subscription and transaction fields to separate CRM fields [on a per-product basis](https://wpfusion.com/documentation/membership/memberpress/#syncing-fields-on-a-per-product-basis) * Added support for applying tags based on Roadmap and Roadmap Step completion in the Memberoni integration * Fixed fatal error `undefined function wpf_logo_svg()` when exporting Event Tickets attendees to a report, since 3.44.26 * Fixed - Removed `@abstract` docblock comment from `WPF_Background_Process` class, since it is not an abstract class, and this was causing validation errors on some servers * Fixed Infusionsoft invoice ID not being returned and saved for free orders * Developers: To enhance code readability, we are beginning to refactor our larger plugin integrations into smaller classes, starting with MemberPress. If you are making calls to MemberPress methods manually using `wp_fusion()->integrations->memberpress`, you will need to update your code to use the new classes (e.g. `wp_fusion()->integrations->memberpress->transactions`) * Developers: Added `instructions.md` and `./.cursor/rules` files to aid in development with Cursor IDE * Developers: Added `wpf_get_name_from_full_name()` function to split a full name into first and last name components = 3.44.27 - 2/17/2025 = * Added historical orders export tool for SureCart * Improved - With [Event Tickets Plus](https://wpfusion.com/documentation/events/the-events-calendar-event-tickets/#editing-attendees), if an attendee's email address is changed on the frontend, and "Create New Attendees on Edit" is enabled, a new contact record will be created in the CRM for the new email address and any tags for the event will be applied * Improved error handling with Klaviyo - if an invalid field is passed, it will be removed from the request body and the request will be retried once * Fixed error creating temporary user during form auto-login when the CRM is set to Staging * Fixed Secure Block for Gutenberg not working inside of a column block * Fixed LearnDash course cloning causing lessons to be lost if the course was protected by WP Fusion and Shared Course Steps was disabled * Fixed PHP warning `Undefined property: stdClass::$userId` when authorizing a HighLevel account at the agency level * Fixed: Removed `consented_at` timestamp from Klaviyo marketing consent API calls, as it is only supported for historical imports * Fixed HighLevel sub-account location tokens not refreshing automatically when the access token expires * Developers: Added `wpf_infusionsoft_query_args` filter to allow overriding the default query arguments for the Infusionsoft contact ID lookup = 3.44.26 - 2/11/2025 = * Added support for editing Event Tickets attendees in the admin, and an option to create a new CRM contact record when an attendee's email address is changed * Added (beta) support for authorizing HighLevel at the agency level, and switching between sub-locations within WP Fusion * Improved - Added WP Fusion status column to the Event Tickets attendees list * Improved - The KlickTipp integration now uses the WordPress HTTP API instead of the KlickTipp SDK, for improved logging and error handling * Improved - The KlickTipp integration will now return an error message during setup if the account or account user does not have access to the API * Improved performance of the WP Fusion tags select component in the block editor * Improved - If the Klaviyo API returns a `duplicate_profile` error during a contact update for a WordPress user, the correct contact ID will now be saved to the user's record in WordPress * Improved - If the Klaviyo API returns a `not_found` error during a contact update for a WordPress user, WP Fusion will attempt to look up the contact ID again by email address and retry the request if a match is found * Fixed database error in FluentCRM (same site) when adding a contact with an empty email address * Fixed restricted posts without redirects appearing as password protected if they had comments * Fixed MemberPress transaction fields not being synced when clicking "Process WP Fusion actions again" on the single transaction edit screen * Fixed fatal error in the HubSpot integration when applying tags via a multiselect field, if there was an API error loading the current tags * Fixed bug in HubSpot integration where countries that use Daylight Savings Time (DST) were not being converted to UTC correctly * Fixed error adding a new WPForms WP Fusion connection in WPForms Lite since 3.44.25 * Fixed: Moved the CRM initialization to `init` priority 1, so it runs before other init actions, like Ultimate Member's account activation. * Developers: Updated the Klaviyo API version to the latest v2025-01-15 * Developers: Added function `wpf_get_name_from_full_name()` to split a full name into first and last name components = 3.44.25 - 2/3/2025 = * Added support for [retrying failed API calls in the logs](https://wpfusion.com/documentation/getting-started/activity-logs/#retrying-api-calls) * Added support for syncing WPForms payment fields * Added compatibility with the new variable price editor in EDD v3.3.6.1 * Added support for syncing dates and dates with times to Klaviyo * Fixed "Syntax error" API responses with Microsoft Dynamics 365 when looking up the contact ID for a user with an apostrophe in their email address * Improved - The "A valid URL was not provided." HTTP response was not properly logging the request URI since it was being escaped by `esc_url_raw()`. The request URI is now being sanitized with `sanitize_text_field()` * Improved - WP Fusion will no longer update a user's cached tags if they visit an auto-login link, as this was causing issues with the LearnDash BuddyBoss group sync feature triggering notifications for a non-existent user * Improved - With FluentCRM, if a 404 error is encountered while updating a contact or applying tags, WP Fusion will attempt to look up the contact ID again by email address and retry the request if a match is found * Fixed fatal error connecting to KlickTipp if the account had no tags * Developers: Added `./cursor/rules` file for Cursor IDE * Developers: The [Secure Block for Gutenberg](https://wpfusion.com/documentation/page-builders/gutenberg/) has been updated to `apiVersion 3.0` * Developers: The REST API integrations for FluentCRM, Groundhogg, and FunnelKit will now only use `wp_safe_remote_get()` for the initial connection, rather than all API calls. This helps avoid some legitimate requests occasionally failing `wp_http_validate_url()` = 3.44.24 - 1/27/2025 = * Added support for [multi-level donation forms](https://wpfusion.com/documentation/ecommerce/give/#donation-level-settings) in the new GiveWP visual form builder * Added support for applying tags after offline donations in the new GiveWP visual form builder * Improved - The Subscription Product Name and SKU fields will now be sent as a comma-separated string (or, optionally, an array) for WooCommerce subscriptions with multiple products * Fixed custom contact fields created by typing a new field name into the CRM field select dropdown not saving if they had apostrophes in the name * Fixed "Dynamic Tag Selection" with Fluent Forms not applying multiple tags for multiple matching conditions on the same multiselect field * Fixed fatal error in the Groundhogg integration in PHP 8.2 when syncing array formatted data * Fixed PHP warning loading custom fields from the SureCart API if the store has no checkouts * Fixed "Uncaught TypeError: Argument 1 passed to WP_Fusion\Includes\Admin\WPF_Tags_Select_API::format_tags_to_props() must be an instance of WP_Fusion\Includes\Admin\mixed, array given" in Give visual form builder integration on PHP 7.4 and below * Updated EngageBay integration to new API endpoint at https://api.engagebay.com/ * Developers: Added `wpf_elementor_forms_integration` action hook to allow adding custom integrations with Elementor Forms * Developers: Removed the deprecation notice for the `wp_fusion\secure_blocks_for_gutenberg\API` class until we've had time to update all our addons to the new API endpoint * Developers: Tested for WordPress 6.8 = 3.44.23 - 1/20/2025 = * Added support for [Presto Player Email Capture forms](https://wpfusion.com/documentation/other/presto-player/) * Added support for Forminator 1.39+, Removed legacy v1.30 code. * Improved - If an HTTP API error is encountered while logging an error-level message to the log, the HTTP API error will be logged as well * Improved - The `wc_total_spent` and `wc_order_count` fields can now be exported to the CRM for existing users * Improved - With CRMs that support creating custom properties or attributes via the API, the placeholder text in the CRM field select dropdowns will now show "type to add new" when the field is opened * Improved - When checking in an attendee with Event Tickets, if the attendee email does not match the contact ID created at checkout, WP Fusion will attempt to find the contact ID by email address * Improved - Added logging when Event Tickets attendees are skipped due to Add Attendees being disabled on the ticket * Improved - With Customer.io, when looking up a contact ID by email address, any custom properties will be saved into the WP Fusion CRM fields settings * Improved performance when using the React based tags select component, the tags will be passed to the component rather than loaded over the REST API * Fixed PHP warning in the logs when filtering by an invalid user ID * Fixed infinite loop handling HighLevel 401 errors related to missing scopes * Developers: cleaned up and standardized build processes for React integrations via webpack.config.js = 3.44.22 - 1/13/2025 = * Added a link to the CRM contact record [in the attendee details modal with Event Tickets](https://wpfusion.com/documentation/events/the-events-calendar-event-tickets/#managing-attendees) * Improved - With FluentCRM, if the email optin checkbox is enabled for WooCommerce, EDD, or GiveWP, the corresponding Status field will be enabled for sync * Improved - Added status icon to Gravity Forms entries list in the admin * Improved - Status icons in entries and orders lists now link to the contact record in the CRM * Improved error handling for HighLevel authorization * Fixed HighLevel integration not saving the location ID during initial setup when using the older [API-key based setup method](https://wpfusion.com/documentation/crm-specific-docs/highlevel-white-labelled-accounts/) * Fixed GiveWP form builder integration only saving the settings you've edited in that session * Fixed fatal error in the FluentCommunity when tags were modified for a user immediately after they were enrolled in a course or group * Developers: Added `wpf_status_icon()` function for outputting a status icon in the admin = 3.44.21.1 - 1/7/2025 = * Fixed missing "else" condition in the `insert_setting_after()` method causing settings panels not to appear in the LearnDash integration * Fixed new GiveWP form builder integration not displaying saved settings = 3.44.21 - 1/6/2025 = * Added (very beta) integration with the new GiveWP visual form builder * Added support for applying lists in supported CRMs from [FluentBooking bookings](https://wpfusion.com/documentation/events/fluentbooking/) * Added support for [creating and updating Accounts along with contacts in ActiveCampaign](https://wpfusion.com/documentation/crm-specific-docs/activecampaign-accounts/) * Added "Unsubscribed" as a default status option for new FluentCRM contacts (same site and REST API) * Added option to set new contacts to either Subscribed or Pending in FluentCRM (same site and REST API) when they check the opt-in checkbox on the WooCommerce checkout (default is Subscribed) * Fixed JavaScript error when clicking the Test Connection button during the initial setup with Mailchimp = 3.44.20 - 12/31/2024 = * Added support for [FluentCommunity](https://wpfusion.com/documentation/membership/fluent-community/) * Improved - React select components will now be disabled while the list of available tags is being loaded * Improved - Added a clear selection button to single tag React select components * Improved - If a new MemberPress transaction is set to remove and then reapply the same tags, no tags will be modified * Fixed fatal error `Class "Forminator_Integration" not found` with Forminator Pro 1.38.0+ * Fixed the Forminator field mapping modal not scrolling if there were too many fields to fit on the screen * Fixed: removed the Assistant Name and Assistant Phone fields from the Infusionsoft / Keap integration (they are no longer supported by the API) * Fixed PHP errors displaying the CRM Field select dropdown if the loaded fields are corrupted or contained unexpected data * Fixed MemberPress integration running on status changes between the same status (i.e. from pending to pending) * Fixed "Type to add new" message being appended each time you clicked on the Select Tag(s) dropdown in the WP Fusion settings = 3.44.19 - 12/17/2024 = * Added ability to [apply tags to Amelia event bookings](https://wpfusion.com/documentation/events/amelia/#syncing-bookings-and-custom-fields) in addition to appointments * Added Event Name and Event Date / Time fields to the Amelia Booking integration * Added Amelia Booking Events batch export operation * Improved - When exporting the activity logs to .csv, any current filters will now be applied to the export * Improved - Settings from non-active CRMs will no longer be saved to the database to reduce the size in the options table * Improved - When linking to a single entry in the logs, the page will now scroll to the correct entry * Improved - Infusionsoft will log a more descriptive error message when a 500 error is returned * Improved - If a registered user makes a booking with Amelia, and does not already have a contact record saved in WordPress, it will be processed as a guest booking * Improved - Updated WooCommerce Subscriptions batch operations to use `wcs_get_subscriptions()` instead of `get_posts()` * Fixed FluentCRM (REST API and same site) syncing dates in 12-hour format instead of 24-hour format * Fixed linked tag not being applied on course enrollment with MasterStudy LMS * Fixed Event Tickets Plus event checkin tags being applied to the user who purchased the ticket, instead of the attendee * Fixed - MailerLite no longer allows URLs in webhook names, and was returning an error when trying to create a new webhook. The site name is now used instead * Fixed error "The manual payment amount exceeds the amount due on the invoices being processed" when sending the payments to Infusionsoft if the order total calculation is off by a couple of cents due to taxes and discounts being rounded * Fixed fatal error in the MailerLite integration when outputting the site tracking script if the MailerLite account was suspended * Fixed fatal error in the Amelia Booking Appointments batch operation since 3.44.17 * Fixed fatal error processing Amelia bookings without custom fields since 3.44.16 = 3.44.18 - 12/10/2024 = * Improved - If an invalid attribute is passed to Klaviyo, the request will now be retried without the invalid attribute * Improved - If a WooCommerce customer created by a registered user checks out with an alternate email address, the order details in the sidebar will now show the link to the customer's contact record and not the user's contact record * Fixed: PHP classes and objects stored to usermeta will be excluded from sync to fix errors with sanitization via `stripslashes_deep()` * Fixed: stopped adding notes to Amelia appointments processed by WP Fusion, as it was interfering with the Google meetings feature adding its own note * Fixed MemberPress syncing the details of the failed transaction after a payment failure, potentially overwriting the user's current transaction / membership level in the CRM * Fixed Infusionsoft field mapping the Leadsource field to the `source_type` field. Will now sync to Lead Source ID * Fixed bulk edit of WooCommerce coupons erasing the WP Fusion settings on those coupons * Fixed WooCommerce lifetime value and total order count not syncing accurately during an initial checkout = 3.44.17 - 12/2/2024 = * Added option to apply tags when a user accepts a retention offer, and sync the offer title to the CRM, with the [WooCommerce Cancellation Surveys plugin](https://wpfusion.com/documentation/ecommerce/cancellation-survey-for-woocommerce-subscriptions/) * Added option to [prevent linked tags from unenrolling users](https://wpfusion.com/documentation/learning-management/learndash/#course-settings-and-auto-enrollment) from LearnDash courses in cases of payment failures * Added support for connecting to Agency HighLevel accounts and switching between locations * Added batch operation for tagging refunded EDD orders * Fixed custom fields not syncing with Amelia event bookings * Fixed Profile Complete tags with Ultimate Member not being applied if the user's profile was completed before they were approved by an admin * Improved - Restricted posts will now be filtered in the content of RSS feeds * Improved - Updated language in the taxonomy term settings to better indicate that users must be logged in to access content when the "Restrict access" checkboxes are checked * Fixed PHP warnings in the Klaviyo integration when syncing customer data without a phone number * Fixed fatal error in the Klick Tipp integration when syncing tags for a contact that didn't have any smart tags = 3.44.16 - 11/26/2024 = * Added support for the "Defer Until Activation" feature to the Registration Options for BuddyPress plugin * Added additional validation on phone numbers for Klaviyo to prevent invalid numbers from blocking the API request * Improved - The `wc_money_spent` field will now be updated with the lifetime value of the customer when an order is refunded or cancelled * Improved - HighLevel webhooks can now read the tags from the webhook payload, saving an API call when using the `update_tags` or `update` endpoints * Fixed custom fields not syncing with Amelia 7.9 * Fixed Event Espresso integration not applying tags to new contacts created in the Not Approved status * Fixed some false detections of custom code from the Enhanced Ecommerce addon on the Advanced tab of the settings * Fixed - If an Ultimate Member profile is completed before the member is approved, the profile complete tags will now be applied when they are approved * Fixed Klaviyo duplicate profile handling appending the duplicate ID to the request URL instead of replacing the existing ID * Fixed HighLevel integration reading tags out of webhooks as a single comma-separated string = 3.44.15 - 11/18/2024 = * Added support for ConvesioConvert (formerly Growmatik) * Added support for syncing AffiliateWP referral data from Easy Digital Downloads payments * Improved - MemberPress integration will apply tags and sync fields for the previous membership level when a membership expires * Improved - Added a warning when changing the FluentCRM tag format, since it requires resyncing tags for every user * Fixed ld_last_lesson_completed field accidentally got removed from the field mapping in 3.44.14 * Fixed transaction failed tags configured on individual WooCommerce products not being applied since 3.44.11 * Fixed new tag not being saved in WP Fusion after creating it over the API with FluentCRM (REST API) * Fixed country code being prepended twice to phone numbers with Klaviyo if the provided number was less than 8 digits * Fixed warnings in the HubSpot integration about invalid date formats when syncing dates to read only fields * Fixed PHP warning: Undefined array key "apply_tags_converted" in the WooCommerce Subscriptions integration * Developers: Added `wpf_phone_number_to_e164` filter to allow overriding the default country code added to phone numbers when converting to E.164 format * Developers: The apply_tags(), remove_tags(), push_user_meta(), and user_register() PHP methods now return a WP_Error object if there was an error, instead of false, to aid in logging * Developers: The get_contact_id() method now returns false if there was an API error, to allow integrations to try to create a new contact as a fallback * Developers: Added `wpf_disable_api_queue()` function to allow bypassing the API queue for a single request * Developers: Added a basic framework for unit testing, with more tests to follow. See readme.md for more information. = 3.44.14 - 11/12/2024 = * Added support for [Klaviyo webhooks](https://wpfusion.com/documentation/webhooks/klaviyo-webhooks/) * Added ability to [set a default Record Type](https://wpfusion.com/documentation/installation-guides/how-to-connect-salesforce-to-wordpress/#record-type) for new Salesforce contacts created by WP Fusion * Added option to [switch between tag IDs and slugs](https://wpfusion.com/documentation/installation-guides/how-to-connect-fluentcrm-rest-api-to-wordpress/#tag-format) in the FluentCRM (REST API) integration. Tag IDs will be used by default for new installs. * Added Salesforce compatibility to the [api.php webhook endpoint](https://wpfusion.com/documentation/other-common-issues/webhooks-not-being-received-by-wp-fusion/#the-async-endpoint-advanced) * Added support for Gravity Forms Product Configurator (feeds will only be processed after the WooCommerce order is processed) * Added Total Order Count and Total Lifetime Value fields for sync with WooCommerce * Added Last Group Enrolled field to the LearnDash integration * Added log indicator when user meta was synced due to the Push All setting * Improved status indicator on the background worker * Improved - the `wpf_phone_number_to_e164()` function will now remove leading 0s from phone numbers * Improved - slightly reduced the byte size required to store the CRM field mapping in the database * Fixed - The "Paid Memberships Pro membership meta" batch operation previously synced the member's last membership level even if it was canceled or expired. Now it will sync the member as inactive and clear any membership level fields in the CRM * Fixed missing third parameter `$lookup_cid` in `wpf_get_tags()` * Fixed wildcard symbol in the Site Lockout's "Allowed URLs" setting not respecting query parameters * Fixed batch operations not working on multisite since 3.44.11 * Fixed methods in namespaced integration classes showing as custom code on the Advanced settings tab * Fixed Brevo webhooks not working when the subscriber already had a WordPress user record that was not linked to a contact ID = 3.44.13 - 11/1/2024 = * Added error handling when an invalid contact ID is passed to wp_fusion()->crm * Improved error handling for deleted or merged contacts in HubSpot * Improved labeling in the Event Tickets UI, the Apply Tags setting is now clear that the tags are applied to the attendee, not the purchaser * Fixed bulk order status changes with WooCommerce being blocked if the order status was not enabled for sync * Fixed unhandled error recording an entry note in the WPForms Pro integration when the form entry could not be synced to the CRM * Fixed undefined index notices in the MemberPress integration when resuming a subscription = 3.44.12 - 10/28/2024 = * Added a [Cancellation Survey for WooCommerce Subscriptions integration](https://wpfusion.com/documentation/ecommerce/cancellation-survey-for-woocommerce-subscriptions/) * Added support for displaying Elementor widgets [dynamically based on the access rules configured on the underlying post](https://wpfusion.com/documentation/page-builders/elementor/#inheriting-access-rules-from-posts) * Added support for displaying Bricks widgets [dynamically based on the access rules configured on the underlying post](https://wpfusion.com/documentation/page-builders/bricks/#inheriting-access-rules-from-posts) * Added support for applying lists in the Fluent Forms integration (with supported CRMs) * Added translations for German, Dutch, Spanish, and Portuguese * Improved - If the full version of WP Fusion is installed, the Lite version will now be deactivated and a notice will be displayed * Improved - CartFlows upsell and downsell orders will no longer be processed asynchronously * Fixed auto-enrollments into AffiliateWP groups linked with tags being triggered each time the user's tags were updated * Fixed event fields not not syncing when a Event Tickets ticket was purchased via the Tickets Commerce gateway * Fixed - If the Billing Company field was hidden on the WooCommerce checkout via the Customizer settings, it did not show as an available field for sync * Fixed a fatal error loading the user's tags when they weren't saved as an array in the database * Fixed a fatal error calling `wpf_clean_tags()` when the CRM object wasn't loaded * Fixed "Process with WP Fusion" bulk action not showing when using legacy (non-HPOS) WooCommerce order storage * Translators: Updated .pot file, merged similar strings in the plugin, and fixed dozens of cases where strings were not translatable * Developers: Added `wpf_should_do_asynchronous_checkout` filter to allow overriding the default logic for determining if a WooCommerce order should be processed asynchronously = 3.44.11 - 10/21/2024 = * Added support for conditional logic when applying tags in Fluent Forms * Added support for dynamic tag selection fields in Fluent Forms * Improved - If a customer opts in to marketing on the WooCommerce or Easy Digital Downloads checkout, the marketing consent will be synced to the ActiveCampaign Deep Data customer record * Improved - A background process will only be started on bulk WooCommerce order status changes if the Order Status field (or order status tags) are enabled * Improved - Added IPv6 debugging information to the activation error message * Improved - added logging when batch operations are completed * Improved storage of batch operations queue when running on a specific list of WordPress user IDs or WooCommerce order IDs * Fixed failed WooCommerce renewal orders having their status synced as "failed" instead of "pending" when automatic retries are enabled * Fixed the new "Process with WP Fusion" bulk action for WooCommerce orders not working * Fixed CartFlows orders being marked as "not processed by WP Fusion" if "Run on main order accepted" was enabled, and the order status was transitioned to Processing and then Completed * Fixed a bug since 3.44.8 where canceling a batch operation would cause it to become orphaned in the options table. Added a cleanup operation to clear out any orphaned batch operations * Fixed queued batch operations being set to autoload in options (not necessary when we're only working on one operation at a time) * Fixed WooCommerce Memberships' "Membership Status" field on specific membership plans not syncing when a membership status is changed * Fixed PHP warning: `Undefined variable $parent_group` in BuddyPress integration * Fixed fatal error recording the contact ID created from a form submission to an entry in WPForms Lite (WPForms Lite does not support entry meta) * Developers: Added method `wp_fusion()->crm->get_marketing_consent_from_email()` to allow retrieving the marketing consent status from an email address (with WooCommerce and Easy Digital Downloads) = 3.44.10 - 10/14/2024 = * Added support for [webhooks configured via private apps in HubSpot](https://wpfusion.com/documentation/webhooks/hubspot-webhooks/#webhooks-in-private-apps) (works with all HubSpot plans) * Added support for refunds via the Infusionsoft/Keap XMLRPC API (thanks @GBBourdages!!) * Added Region and Time Zone fields to the Klaviyo integration * Improved - Partially reverted the change to Pending Woo order statuses in 3.44.8: now the pending status will be synced as long as the customer already has a contact record (it will still not create a new contact just to sync the status) * Fixed error `Too few arguments to function WPF_Woocommerce::batch_step_order_statuses()` when running the WooCommerce Order Statuses batch operation via the Advanced settings tab * Fixed auto-login system trying to start an auto-login session for visitors with a `wpf_contact` cookie set but an empty contact ID * Fixed PHP warning "foreach() argument must be of type array|object, string given" when canceling batch operations, since 3.44.8 * Fixed unhandled `WP_Error` response in the Gravity Forms Entries batch operation when the call to `GFAPI::get_entry()` fails * Fixed fatal error in the Event Espresso Registrations batch operation if a registration didn't have a primary attendee = 3.44.9 - 10/8/2024 = * Improved - The new Infusionsoft/Keap API [does not support refunding orders](https://developer.infusionsoft.com/faqs/add-refund-order-api/), so after a refund WP Fusion will record an order note with a link to the order so it can be refunded manually * Fixed Account Name field not being loaded from ActiveCampaign * Fixed field mapping not showing on new WPForms forms since 3.44.4 * Fixed auto-applied coupons with WooCommerce not being applied during cart recovery links from the Abandoned Cart addon * Fixed fatal error visiting an auto-login URL with an invalid contact ID with FunnelKit Automations (same site) = 3.44.8 - 9/30/2024 = * Improved - Stopped syncing the WooCommerce Order Status field when the order status is "Pending", to prevent duplicate contacts at checkout (especially with the Abandoned Cart addon) * Improved - Numeric states or regions will no longer be synced to Infusionsoft/Keap to prevent an API error * Improved reliability when canceling background operations via the Cancel button * Improved logging for auto-login sessions with invalid contact IDs in the URL * Fixed auto login system trying to start an auto-login session for visitors with a `wpf_contact` cookie set but an empty contact ID * Fixed background operations started via cron triggring `wp_die()` instead of returning, and blocking subsequent cron jobs * Fixed profile updates from Ultimate Member not being synced if the profile form did not contain the user's name or email * Fixed error removing a user from an AffiliateWP group linked to a tag if they were not already an affiliate * Fixed import tool with Groundhogg (REST API) not loading more than 100 contacts * Fixed - further checks to ensure tags arrays are re-indexed before being passed to the CRM = 3.44.7 - 9/23/2024 = * Added support (via code snippet) for [syncing lead source data when updating a contact](https://wpfusion.com/documentation/tutorials/lead-source-tracking/#sync-lead-source-data-for-existing-contacts), instead of just when adding a new contact * Improved - If a tag linked to an AffiliateWP group is applied to a pending affiliate, the affiliate will now be activated before being added to the group * Improved - New auto-login sessions will now record the current URL to the logs * Improved - Added links to CRM-specific setup documentation to the CRM configuration settings section * Improved - Added note to HighLevel setup about logging in to the HighLevel app before attempting the connection * Improved - Moved Mautic tracking script from footer to head to fix some console errors when playing mediaelement.js videos * Improved - Updated the list tags pagination API call with Infusionsoft/Keap to use the new V2 compliant specification * Developers: Added `wpf_api_{$method_name}` filter to allow [bypassing / overriding API calls in the CRM classes](https://wpfusion.com/documentation/filters/wpf_api_method_name/) * Fixed `user_meta` shortcode not properly converting dates stores as timestamps * Fixed the tags array API call with Infusionsoft/Keap not being reindexed before being sent, which would cause "Input could not be converted" errors in cases where invalid tags had been removed from the payload * Fixed error "array_keys(): Argument #1 ($array) must be of type array, bool given" in LearnDash admin course list when no tags were available in the CRM * Fixed error "undefined function affwp_get_affiliate_statuses()" with AffiliateWP versions below 2.3 = 3.44.6.1 - 9/17/2024 = * Fixed inverted logic on EDD version check for discount functions: discounts tagging functionality was disabled on EDD 3.0 and higher, since 3.44.6 * Fixed lockout redirect URLs saved without a trailing slash causing an infinite redirect when a lockout redirect is triggered = 3.44.6 - 9/16/2024 = * Added support for resyncing contact IDs and tags by bulk-selecting users from the All Users page * Added support for processing WooCommerce orders in bulk by selecting order IDs from the Orders page * Added a WooCommerce Order Statuses batch operation * Improved - Bulk order status changes with WooCommerce will now start a new background process and display an indicator at the top of the Orders page * Improved - With CRMs that support typing new tags into the tags dropdown, the placholder will update to say "(type to add new)" when the dropdown is open * Improved - The Brevo site tracking feature will now identify visitors to the tracking script after placing a guest order or form submission * Improved - The legacy Infusionsoft/Keap module at `wp_fusion()->crm->app` is now lazy-loaded, so it will only be loaded when needed instead of on every page load * Improved - Disabled discounts features on Easy Digital Downloads versions below 3.0.0, and added a notice to the admin * Fixed course complete tags not applying with WPComplete when a course with multiple buttons on the same page is marked complete by an admin * Fixed user role changes after a user's initial registration not being synced to the CRM = 3.44.5 - 9/10/2024 = * Added support for syncing guest bookings with Amelia * Improved - The Infusionsoft/Keap integration will now convert all two-digit state abbreviations to uppercase * Improved - With Infusionsoft/Keap, if a US state is supplied for an address, and the country code is not provided, the country code will automatically be set to USA * Improved - With Infusionsoft/Keap, if a region code is provided for an address, and the country code is not provided, a notice will be recorded to the logs * Fixed the `wp_fusion_init_crm` hook not changing the CRM name on the Setup tab (when white-labelling) * Fixed course complete tags not applying with WPComplete when a course with multiple buttons is marked complete by an admin * Fixed custom field mapping not working with WS Form and CRMs that use custom field groups * Fixed PHP warning in the MemberPress integration when registering a new user without a payment method * Fixed error in the HighLevel integration when removing tags from a deleted contact * Fixed Infusionsoft/Keap integration logging an error when recording a payment against a free order = 3.44.4 - 9/3/2024 = * Added support for [setting a primary connection for field mapping with WPForms](https://wpfusion.com/documentation/lead-generation/wpforms/#conditional-logic), to make it easier to apply tags via conditional logic * Added support for multiple memberships with Restrict Content Pro * Added Last Donation Date field for sync with GiveWP * Added a delay to batch operations with Klaviyo to avoid the 3 requests per second (60 per minute) API limit * Improved - If you attempt to sync an invlalid country name or code with Infusionsoft/Keap, WP Fusion will remove the data from the API call to avoid an API error * Improved - If you attempt to sync an invalid Owner ID with Infusionsoft/Keap, this will crash the API (error code 500). We've added a more descriptive error message to the log to indicate when this field is causing the error * Improved Infusionsoft/Keap error logging * Improved - Extended the API timeout with Infusionsoft/Keap to 20 seconds * Improved - If an API call to Infusionsoft/Keap fails with a 503 error ("service unavailable"), WP Fusion will now retry the API call after a 2 second delay * Improved - WP Fusion will no longer apply timezone offsets to dates synced to Groundhogg (same site) that don't have a time component * Improved Salesforce error logging for failed access token refreshes * Fixed deprecated repeater notices in the JavaScript console with the Elementor Pro Forms integration * Fixed tags not being applied for WPComplete course / button completion when a course is marked complete in the admin * Fixed tags applied in FluentCRM (same site) automations, which were triggered by WP Fusion applying a tag, not syncing back to WordPress * Fixed `wp_capabilities` field not syncing after membership level changes with Paid Memberships Pro * Fixed error "Cannot use array offset of type string on string" with WPComplete on PHP 8.2 * Fixed logged notices with Infusionsoft/Keap integration saying "Custom field addresses/email_addresses/phone_numbers is not a valid custom field" * Fixed the Nickname field not syncing with Infusionsoft/Keap * Fixed HighLevel integration not creating contacts added by ThriveCart * Fixed PHP warning "Automatic conversion of false to array is deprecated" when the shutdown hook runs multiple times * Fixed PHP error "array_map(): Argument #2 ($array) must be of type array, string given" in If-Menu integration with PHP 8.2 = 3.44.3 - 8/26/2024 = * Added support for [creating and updating Leads from form submissions with Zoho](https://wpfusion.com/documentation/crm-specific-docs/updating-leads/) * Improved - When using [the api.php webhook method](https://wpfusion.com/documentation/other-common-issues/webhooks-not-being-received-by-wp-fusion/#the-async-endpoint-advanced), you can now define a custom ABSPATH via php.ini or a bootstrap file (for custom WP directory locations) * Improved support for syncing country and region codes with Infusionsoft/Keap * Improved - With the [`user_meta` shortcode](https://wpfusion.com/documentation/getting-started/shortcodes/#displaying-user-meta), input strings of 8 characters or less will no longer be treated as timestamps (allows for dates like 2024 or 20240101 to be formatted correctly as dates) * Improvements to the [add_object() method in the CRM base class](https://wpfusion.com/documentation/functions/add_object/) * Improved - When a user is [auto-enrolled into an AffiliateWP group via a linked tag](https://wpfusion.com/documentation/affiliates/affiliate-wp/#linking-tags-to-groups), their affiliate account will be automatically set to active * Improved - If Sync Leads is enabled and a user is logged in, has a contact ID, and submits a form, their contact record will be updated, no lead record will be created * Improved logging when a user is synced to the CRM due to a role change * Fixed errors syncing to Infusionsoft/Keap custom fields with special characters in the CRM field label (like, ?, !, etc) * Fixed user registration actions running twice when using the Limit User Roles setting * Fixed warning "Undefined variable $lists" in ActiveCampaign integration when creating a contact without any lists * Fixed notice "Add to CRM was not checked, the user will not be synced to the CRM." when adding users manually via the WP Admin * Fixed user role changes on the admin user profile triggering a sync to the CRM even if the role field is not enabled for sync * Fixed custom post types created by JetEngine not respecting post access rules * Developers: added functions `wpf_country_to_iso3166()` and `wpf_state_to_iso3166()` to convert country and state codes to ISO 3166-1 alpha-3 and alpha-2 codes * Developers: added filter `wpf_country_to_iso3166` to allow overriding the default country to ISO 3166-1 alpha-3 code conversion * Developers: `wpf_is_field_active()` can now take an array of field IDs, it will return true if any of the fields are active = 3.44.2 - 8/19/2024 = * Added support for line items (discounts, shipping, taxes, and fees) with the new Infusionsoft/Keap integration * Added support for [webhooks (aka "outbounds") with KlickTipp](https://wpfusion.com/documentation/webhooks/klicktipp-webhooks/) * Added a [visibility indicator on elements protected by WP Fusion access rules in the Bricks editor](https://wpfusion.com/documentation/page-builders/bricks/#visibility-indicator) * Added [AffiliateWP - Referrals batch operation](https://wpfusion.com/documentation/affiliates/affiliate-wp/#export-options) for exporting historical referral data * Added a text search field to the WP Fusion Logs page * Improved API performance for applying and removing tags with Infusionsoft/Keap * Improved - If an Infusionsoft/Keap API call is throttled due to too many requests, WP Fusion will now wait 2 seconds and try again * Improved - The new Keap/Infusionsoft integration will now append to the existing Person Notes field when syncing notes, instead of replacing it * Improved - With the new Infusionsoft/Keap integration, if a US state is specified for an address, and the country is not provided, the country code will be set to USA * Improved - With the new Infusionsoft/Keap integration, if an invalid locale code is synced to the Language field, a notice will be logged and the field will be removed to avoid API errors * Improved KlickTipp error handling * Fixed the Membership Expiration Date field enabled on a specific WooCommerce Membership Level not being set to sync as a Date by default = 3.44.1.1 - 8/15/2024 = * Added US state name to ISO 3166-2 code conversion for updating billing and shipping addresses with Infusionsoft / Keap * Improved - Disabled syncing of the "Person Notes" field with Infusionsoft / Keap for existing contacts, since Keap now replaces the notes field when notes are synced, instead of appending to it * Improved - Custom fields with Infusionsoft / Keap will now be sorted alphabetically in the WP Fusion field dropdowns * Fixed "date" type fields (like Birthday) being synced to Infusionsoft / Keap as ISO8601 date-time data since 3.44.1, instead of the `Y-m-d` date format * Fixed date/time fields with Infusionsoft not being formatted into the WordPress date / time format when loaded * Fixed missing CRM field labels in WPForms feed settings with CRMs that use custom field categories * Fixed "Creation of dynamic property" PHP warnings in older CRM integrations with PHP 8.2 = 3.44.1 - 8/12/2024 = * *Note:* Infusionsoft/Keap have removed the standard "Password" and "Username" fields from the new API, due to security concerns. To avoid errors when syncing passwords and usernames, WP Fusion will log a notice when these fields are detected and remove them from the sync. If you need to sync usernames and passwords, please create new custom text fields to store the data. * Improved Ontraport error handling for duplicate and not found contacts * Improved - (Infusionsoft / Keap) Added ISO 3166-1 country name conversion for "United States" to "USA" (previously only matched "United States of America") * Fixed new Infusionsoft integration swapping the Billing and Shipping addresses * Fixed new Infusionsoft integration not syncing dates in ISO8601 format * Fixed new Infusionsoft integration not loading more than 10 available products * Fixed WP Fusion using a pseudo order item "wpf_rest_product" when creating blank orders with the new Infusionsoft REST API integration * Fixed error "PHP error: Uncaught TypeError: array_flip(): Argument #1 ($array) must be of type array, array given" when syncing new custom fields with the new Infusionsoft REST API integration * Fixed EDD Subscription End Date field syncing the renewal date, not the subscription end date (for fixed-length subscriptions) * Fixed "Remove tags specified in 'Apply Tags' if membership is cancelled" setting not working on LifterLMS memberships * Fixed EDD renewal payments that were processed by WP Fusion not being marked as `wpf_complete` and not displaying the orange success indicator in the EDD orders list * Fixed Groundhogg (same site) integration immediately loading custom fields that were added when creating a new contact * Fixed date fields syncing to Groundhogg (REST API) as timestamps instead of dates * Fixed tags that were removed in a FluentCRM automation (same site) that was triggered by WP Fusion applying a tag not triggering a sync back to the user's tags in WordPress * Fixed PHP warning "Attempt to read property "post_type" on null" in the Download Monitor integration * Developers: `add_contact()` will now return a `WP_Error` if no fields are enabled for sync, instead of `false` * Developers: The WP Fusion logs are now sorted by log ID instead of timestamp, to avoid confusion when changing the site's timezone = 3.44.0.2 - 8/6/2024 = * Fixed custom fields with spaces in the labels not migrating to the new Infusionsoft API field mapping * Fixed "Unprocessable entity" errors when syncing custom fields with spaces in the label to Infusionsoft/Keap since 3.44.0 = 3.44.0.1 - 8/6/2024 = * Fixed new Keap / Infusionsoft integration not loading more than 1000 each of tags or tag categories * Fixed Keap / Infusionsoft integration not importing all contacts if no tag was specified for the import = 3.44.0 - 8/5/2024 = * Big update: WP Fusion has been updated to use the Infusionsoft REST API, and [Service Account Keys](https://developer.infusionsoft.com/pat-and-sak/) for authentication. Infusionsoft / Keap users will need to update their API credentials to ensure uninterrupted service. * Improved - `wpf_get_iso8601_date()` will now more forcefully use GMT for the time zone instead of the local time * Improved - Added logging if the HubSpot token refresh failed to save * Improved - `wp_fusion()->settings->set()` will now return false if the setting was not successfully saved * Fixed "Assign Lists" setting with ActiveCampaign applying to all new contacts, not just new user registrations * Fixed `"generated_password"` field not being synced with WooCommerce when AffiliateWP's "Automatically register new user accounts as affiliates" setting is enabled * Fixed "Resubscribe unsubscribed subscribers when they are added to new groups" setting not working with MailerLite * Fixed MailerLite group IDs not saving correctly in the CartFlows UI (floating point values were being saved as integers) * Fixed missing `crm.schemas.deals.write` scope in the HubSpot integration, which sometimes caused deal properties not to be saved * Fixed an error processing a WooCommerce renewal order if no valid order was found for the provided order ID * Fixed fatal error `WPF_AffiliateWP does not have a method "tag_modified"` in the AffiliateWP integration if an affiliate's status was changed and then tags were applied to the affiliate in the same request * Fixed deprecated use of `DOMNodeInserted` when editing WooCommerce variations * Fixed PHP warning "Attempt to read property 'referrer' on bool" when syncing AffiliateWP referrer visit data for a recurring payment = 3.43.20.1 - 7/30/24 = * Fixed PHP warning "Attempt to read property 'date' on null" in the EDD Recurring Payments integration when processing an initial payment for a subscription, since 3.43.20 = 3.43.20 - 7/29/24 = * Improved - If the Order Date or Next Payment Date are enabled with Easy Digital Downloads Recurring Payments, these will now be synced after each renewal payment * Fixed saved MemberDash tag settings not loading * Fixed duplicated tag select UI in MemberDash access options settings * Fixed fatal error on the post table list when no tags are available in the CRM * Fixed notice "Function ID was called incorrectly" when viewing customer's CRM contact record ID in the WooCommerce order sidebar * Fixed PHP warnings during a SureCart checkout if no customer address was provided * Fixed - removed deprecated use of `\MailPoet\Models\Subscriber` when updating MailPoet subscribers * Fixed fatal error with PHP 8.2 when an EDD subscription expired if Remove Tags was checked and no tags were specified in the Apply Tags setting = 3.43.19 - 7/22/2024 = * Added a [MemberDash integration](https://wpfusion.com/documentation/membership/memberdash/) * Improved - If a `$source` is synced for a Klaviyo subscriber, the same `$source` will be used when opt-ing the subscriber in to marketing * Fixed "Remove Tags" setting on LearnDash courses and groups not respecting the saved value * Fixed spaces in tag names not working with If Menu v0.17.0+ * Fixed fatal error adding a member to a WooCommerce Memberships for Teams team on PHP 8.2 when a linked tag was set on the team but no "Apply Tags" were specified = 3.43.18 - 7/16/2024 = * Added support for syncing custom Event Tickets fields configured on a single post or page * Adding Landing Page and Referring URL to the [AffiliateWP referral data](https://wpfusion.com/documentation/affiliates/affiliate-wp/#syncing-referrer-meta-fields) * Improved - With Ontraport [lead source tracking](https://wpfusion.com/documentation/tutorials/lead-source-tracking/), the any enabled lead source fields will be synced to the corresponding Last Referrer fields when a contact is updated * Improved - WP Fusion will now declare compatibility with the block-based WooCommerce checkout as long as the email optin field is disabled * Improved - If users do not have permission to access a WPForo forum, they will no longer receive forum and topic notifications * Fixed custom properties with Klaviyo being treated as system properties if they are prefixed with a dollar sign * Fixed AffiliateWP referrer data not being synced with new WooCommerce guest checkouts * Fixed error `Uncaught TypeError: array_merge(): Argument #2 must be of type array` when editing a new registration form with Ultimate Member on PHP 8.2 * Fixed error `Call to a member function get_id() on string` when using the WooCommerce mini cart with the Nika theme * Removed the "Source" field from the Klaviyo integration (was not a system field) * Developers: Added filter `wpf_background_process_memory_utilization_percentage` to allow customizing the memory utilization percentage for the background process = 3.43.17 - 7/2/2024 = * Fixed Elementor Forms integration treating single-option selects as multiselects since 3.43.16 * Fixed JavaScript error with Asynchronous Checkout (for WooCommerce) when another plugin returns an AJAX response before the payment is processed * Fixed weekly license status check not running * Added a notice in the plugins list when the license key is inactive or expired = 3.43.16 - 7/1/2024 = * Added Source field for sync with Klaviyo * Improved - New contacts added to Pipedrive will be automatically have their marketing status set to "subscribed" * Updated notice for bulk order status changes to mention that the maximum number of orders that can be processed at once is 20 * Fixed tags not being applied for canceled and failing subscriptions with GiveWP since a recent GiveWP update (not sure exactly which) * Fixed Elementor Forms integration treating commas in select dropdown options as multiple values, since 3.43.12 * Fixed PHP warning `Undefined global variable $product` since 3.43.15 * Fixed "Unknown lists" error when submitting Elementor Forms after switching from a CRM that supports lists to one that doesn't * Developers: Added filter `wpf_bulk_order_actions_max_orders` for modifying the max number of orders status changes that will be processed at once = 3.43.15 - 6/24/2024 = * Added support for Filter Queries - Advanced with the Search & Filter Pro plugin * Fixed fatal error when tracking events with FluentCRM and the event value is empty * Fixed WooCommerce Order Status field not being synced after a successful renewal order with WooCommerce Subscriptions * Fixed quantity select input not being hidden on restricted WooCommerce products in Elementor product loops * Fixed HTTP API logging option not showing with Customer.io * Fixed user passwords not syncing to the CRM when adding new users via Uncanny LearnDash Groups * Developers: added filter `wpf_show_additional_menu_item_settings` to allow enabling the "Required Tags (all)" and "Required Tags (not)" settings on the admin menu editor * Developers: added property `wp_fusion()->access->filter_queries_priorty` to allow setting Advanced query filtering to a custom priority = 3.43.14 - 6/17/2024 = * Added ability to [sync WooCommerce Memberships status and expiration date to separate custom fields per membership plan](https://wpfusion.com/documentation/membership/woocommerce-memberships/#plan-specific-field-mapping) * Added support for lists with Constant Contact (can be configured for new user registrations in the General settings, or with the Gravity Forms or Elementor Forms integrations) * Fixed the activation key being synced as the user's password instead of the provided password, with BuddyBoss * Fixed LearnDash course completion date being synced in local time instead of UTC (caused issues with the timezone offset and HubSpot) * Fixed the "Duplicate and Delete" [feature for email address changes](https://wpfusion.com/documentation/crm-specific-docs/email-address-changes-with-mailerlite/) not working with Mailerlite * Fixed error "Argument #1 ($json) must be of type string, array given" in the LatePoint integration when creating a booking if no settings are configured on the service = 3.43.13 - 6/10/2024 = * Added Last Order Status field for sync with WooCommerce (will be synced whenever the status changes for an order) * Added logging for MemberPress transaction status changes * Added filter `wpf_show_additional_menu_item_settings` to allow enabling the "Required Tags (all)" and "Required Tags (not)" settings on the admin menu editor * Improved - The "Required Tags (not)" setting can now be used on menu items in the admin menu editor when the logged-in condtion is set to Everyone * Fixed - If Push All was enabled, adding a user from the admin could log a notice "no metadata found for user" if individual usermeta keys were updated before `user_register` was triggered * Fixed tags not being applied to new ActiveCampaign contacts when the "Account Name" field was enabled for sync * Fixed MemberPress integration treating empty checkbox values in the database as checked when syncing user meta * Fixed tags showing up twice in the Select Tags dropdowns with Encharge * Fixed PHP warning in the SureCart integration when no custom fields were available = 3.43.12 - 6/3/2024 = * Added ability to apply lists via form integrations with FluentCRM (same site) * Improved - After a user's WooCommerce Points and Rewards points balance is synced to the CRM by WP Fusion, the `wc_points_balance` usermeta value will also be updated so the points can be displayed * Fixed Elementor Forms integration not treating dropdowns with multiple values, and checkbox fields with multiple checkboxes, as multiselects * Fixed WooCommerce auto-generated passwords not being synced with the block-based checkout, since 3.43.11 * Fixed error "Attempt to assign property 'plugin' on bool" when loading the plugins list, if the recent check for updates failed * Developers: the WP Fusion + Paid Membersips Pro level settings will no longer be autoloaded from `wp_options` = 3.43.11 - 5/28/2024 = * Added support for [Encharge webhooks](https://wpfusion.com/documentation/webhooks/encharge-webhooks/) * Added support for [Drip site tracking](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#drip) (was removed at the end of 2022 but Drip has re-enabled it) * Added Total Spent field to the MemberPress integration * Improved - The "Generated Password" field with WooCommerce will now be synced during the initial `user_regiser` action rather than waiting for the `woocommerce_created_customer` hook * Improved - The WooCommerce Points & Rewards integration will now sync the user's points balance when exporting user meta * Improved - If the same tags are specified for "Apply Tags" and "Apply Tags - Refunded" on a WooCommerce product, the tags applied at checkout will not be removed when the order is refunded * Fixed - If Sync Leads is enabled and a user is logged in, has a contact ID, and submits a form, their contact record will be updated, no lead record will be created * Fixed tags not being applied for canceled and failing subscriptions with GiveWP since a recent GiveWP update (not sure exactly which) * Fixed Elementor Forms integration treating commas in select dropdown options as multiple values, since 3.43.12 * Fixed PHP warning `Undefined global variable $product` since 3.43.15 * Fixed "Unknown lists" error when submitting Elementor Forms after switching from a CRM that supports lists to one that doesn't * Developers: Added filter `wpf_bulk_order_actions_max_orders` for modifying the max number of orders status changes that will be processed at once = 3.43.10 - 5/20/2024 = * Added an Encharge CRM integration * Fixed [auto-applied coupons with WooCommerce](https://wpfusion.com/documentation/ecommerce/woocommerce/#automatic-discounts) not working on subscription purchases when the current cart total was 0 * Fixed "Points earned for account signup" points with WooCommerce Points & Rewards not syncing during new user registrations * Fixed missing search box in tags select dropdown for imports, since 3.43.3 * Fixed import tool with Salesforce importing all contacts despite specifying a topic, since 3.43.3 * Fixed users loaded twice by the import tool (i.e. from two different contact records with a matching email) counting twice in the import history table * Fixed warning "Attempt to read property 'name' on bool" when syncing the MemberPress payment method name on free transactions * Fixed HubSpot access token getting set to blank if there was a timeout or gateway error while connecting to HubSpot to refresh the token * Fixed deprecation notices in the Infusionsoft iSDK library when using PHP 8.2 * Fixed date fields in Groundhogg being synced in GMT, not local time, which sometimes caused dates with times to sync as the wrong day * Fixed - If the user's tags were saved to usermeta as a boolean `true` or `false` instead of an array, this could cause that value to be returned from `wpf_get_tags()`, and cause errors with `array_intersect()` and other array functions * Fixed Object Sync for Salesforce integration not working with v2.2.9 * Developers: Updated Klaviyo API to the `2024-02-15` revision * Developers: Updated the Salesforce API version to `55.0` (Summer 2022 version) = 3.43.9 - 5/13/2024 = * Added support for Forminator 1.30.0+ (re-enables disabled Forminator integration since 3.43.6.2) * Updated Constant Contact API token to use new API limits of 250,000 calls per day (was previously 10,000 calls per day) - *Requires re-authorizing the connection via the prompt* * Fixed import tool with HubSpot importing all contacts despite specifying a list, since 3.43.3 = 3.43.8.1 - 5/7/2024 = * Fixed ActiveCampaign API error "Error while processing request" when adding a contact to multiple lists at the same time, since 3.43.6 = 3.43.8 - 5/6/2024 = * Fixed error adding subscribers to Klaviyo lists with marketing consent when the site timzeone was set to UTC or Sydney (UTC+10) * Fixed error removing subscribers from Klaviyo lists that were added with explicit consent * Fixed fatal error handling updating a contact in ActiveCampaign when a "Email address already exists in the system." error is encountered while creating a contact * Fixed automatic enrollments into AffiliateWP groups via linked tags not working * Fixed - Log entries will now be saved using `gmdate()` instead of `date()` to avoid timezone conversion shenanigans = 3.43.7 - 4/29/2024 = * Added a [Content Control integration](https://wpfusion.com/documentation/membership/content-control/) * Improved - The Elementor Forms integration will now use the field types from the form settings rather than guessing the type based on the submitted value * Improved - If `wpf_get_contact_id()` is called with `$force_update`, and there is an API error, the existing cached contact ID (if any) will be returned instead of false * Improved - The query to find auto-applied discounts with EDD will now be cached for one week for performance reasons * Fixed Restrict Contact Pro group name and owner's email not syncing to the owner's contact record when an owner created a new group * Fixed infinite loop when using the "Refresh if access is denied" setting and the API call to look up the user's contact ID fails * Fixed fatal error running WP All Import imports when WooCommerce is not installed since 3.43.5 = 3.43.6.2 - 4/25/2024 = * Fixed - Completely disabled the Forminator integration until we can rebuild the integration using their new API * Fixed HighLevel tags not being converted to lowercase for the `remove_tags()` API call = 3.43.6.1 - 4/24/2024 = * Fixed PHP warning: "foreach() argument must be of type array|object, null given" when processing Contact Form 7 submissions without payment methods since 3.43.5 = 3.43.6 - 4/23/2024 = * Added support for [resubscribing unsubscribed contacts with ActiveCampaign](https://wpfusion.com/documentation/tutorials/double-opt-ins/#activecampaign) (supports Gravity Forms and Elementor Forms) * Added Apply Tags and Link With Tag settings for individual [Teams for WooCommerce Memberships teams](https://wpfusion.com/documentation/membership/teams-for-woocommerce-memberships/) * Added option to skip already processed entries when running the [Event Tickets Attendees batch operation](https://wpfusion.com/documentation/events/the-events-calendar-event-tickets/#exporting-attendees) * Added support for applying ActiveCampaign lists with Elementor forms * Improved - Refactored the Event Tickets integration, removed redundant code and standardized the way the attendees are processed * Improved HighLevel error handling * Improved - If a `duplicate` error is returned from the ActiveCampaign API, the contact will be looked up again by email address * Fixed Event Ticket Attendees batch operation not syncing attendees who registered via Tribe Commerce * Fixed Event Tickets integration not syncing attendees when no settings were configured on the ticket * Fixed dynamic tags ("Create tag(s) from value") not applying with guest registrations * Fixed Paid Memberships Pro fields not syncing when a member is cancelled from their final active level * Fixed date fields enabled for sync on single WooCommerce subscription products getting saved as type `text` and not type `date` for the purposes of formatting for the API * Fixed event tracking with Klaviyo * Fixed LearnDash quiz complete tags not applying with GrassBlade xAPI Companion since 3.43.4 * Fixed groups selected in the admin menu editor with MailerLite getting their IDs when they exceeded the PHP max integer value * Fixed HighLevel integration treating the error "The token does not have access to this location" as an expired access token and requiring a refresh * Fixed errors not being logged when an invalid contact ID was used as an auto-login URL parameter * Fixed Klick-Tipp integration storing contacts' smart tags in usermeta (not necessary and was showing up as Unknown Tag(s) in the admin) * Fixed Save Changes button in the setup not being clickable when using the Staging CRM * Fixed Groundhogg integration syncing empty dates as 1/1/1970 * Developers: added function `wpf_get_iso8601_date()` = 3.43.5 - 4/15/2024 = * Added an integration with the [ZealousWeb payment plugins for Contact Form 7](https://wpfusion.com/documentation/lead-generation/contact-form-7/#payments) * Improved - The Bento webhook handler will now use the `email` field from the payload for lookups of existing users * Improved - Added a warning to the WPForo WP Fusion settings page in the admin to indicate when the forum base page is protected by WP Fusion * Improved - After a WooCommerce order has been imported by WP All Import, "Process Order Actions Again" will be triggered so the complete order data is synced to the CRM * Fixed fatal errors with Forminator 1.30.0 and higher (but integration is still broken while we wait to hear back from WPMU Dev) * Fixed missing "Apply tags - Approved" setting on Gravity Forms feeds with GravityView * Fixed notice `Deprecated: strpos(): Passing null to parameter #1 ($haystack) of type string is deprecated` when other plugins called `__()` without a text domain = 3.43.4.1 - 4/9/2024 = * Fixed error `WPF_BuddyPress::groups_access_meta(): Argument #1 ($settings) must be of type array, string given` when accessing a bbPress or BuddyBoss forum topic, since 3.43.4 * Fixed fatal error calling methods that aren't in the WPF_Staging class, while in staging mode (i.e. `Argument #1 ($callback) must be a valid callback, class WPF_Staging does not have a method "get_connection_id"`) * Added Event Variation SKU field for sync with FooEvents = 3.43.4 - 4/8/2024 = * Added ability to [link to individual entries in the activity logs](https://wpfusion.com/documentation/getting-started/activity-logs/#the-logs) * Improved - When using hierarchical groups with BuddyPress / BuddyBoss, child groups with no access rules will now inherit the parent group's access settings * Fixed quiz complete tags not being applied with LearnDash 4.12.0+ * Fixed missing slug when creating new tags via WP Fusion in FluentCRM (same site) since 3.43.3 * Fixed fatal error `Argument #1 ($array) must be of type array, string given` in the admin post list table with PHP 8.2 when a required tag on a post was saved with invalid data = 3.43.3.1 - 4/3/2024 = * Fixed "Unknown tag" warning in the UI with FluentCRM since 3.43.3 * Fixed tags not being applied for MemberPress members added to free memberships via the admin * Fixed error "TypeError: date(): Argument #2 ($timestamp) must be of type ?int, string given" with EDD Software Licensing and PHP 8.1+ * Fixed fatal error "Call to member function get_error_message() on int" when importing users via the async webhook endpoint, since 3.43.3 * Fixed "No tag found with name" error when using the import tool with MailChimp since 3.43.3 = 3.43.3 - 4/2/2024 = * Added option to remove tags applied at enrollment when a user is unenrolled from a LearnDash course or group * Added Transaction Number field for sync with MemberPress * Added support for importing all contacts from the CRM via the import tool (rather than a specific segment), [with selected platforms](https://wpfusion.com/documentation/tutorials/import-users/) * Improved - While in [staging mode](https://wpfusion.com/documentation/faq/staging-sites/) you can now resync the lists of available tags and fields from the CRM * Improved - Added a warning indicator when an unknown tag (from a previous CRM) is saved to a Select Tag(s) dropdown * Improved - If staging mode is enabled in wp-config.php, the Staging Mode checkbox will be disabled in the settings * Fixed API calls before the `init` hook not getting logged with HTTP API logging * Fixed LearnDash Progress Meta batch operation syncing Last Course Completed date as 0 for courses that were started but not yet completed * Fixed restricted access redirects not working on Thrive Architect landing pages * Fixed user IDs imported via Salesforce webhooks getting appended to the most recent manual import on the Import Tool tab in the settings * Fixed Account Name not syncing with ActiveCampaign since the switch to the v3 API in v3.41.36 * Fixed Gravity Forms feeds being processed twice since 3.43.0 * Fixed tags created by WP Fusion in FluentCRM (same site) using the tag label as the slug (instead of the sanitized title) * Fixed Contact Form 7 integration running on form entries where no fields were mapped * Fixed pre-selected / default country codes in phone number fields not syncing with Elementor Forms * Tested up to Elementor (+ Pro) 3.21.0 * Fixed "Uncaught ArgumentCountError: Too few arguments to function WPF_WPBakery::add_css_class()" since 3.43.0 * Developers - `wp_fusion()->user->apply_tags()` and `wp_fusion()->user->remove_tags()` will now attempt to convert tag labels to IDs if the CRM doesn't support adding tags (helps with switching CRMs) = 3.43.2 - 3/25/2024 = * Added support for connecting to FunnelKit Automations via PHP instead of REST API (signiciantly improved performance when both plugins are on the same site) * Removed fallback support for legacy `/autonami-admin/` REST API endpoint (was removed from FunnelKit in 2.6.0, Sept 2023) * Improved - If an entry is later edited with Gravity Forms or GravityView, the entry will be processed again and any updated fields will be synced to the CRM * Improved - Query parameters will now be removed from the "Current Page" and "Landing Page" URLs before being synced to the CRM * Fixed missing settings page with the free ProfilePress plugin * Fixed missing warning when connecting to FunnelKit and the Pro plugin isn't active * Fixed conditions on Elementor Popups not working with tags with special characters in them with some CRMs * Fixed error `Cannot use object of type WP_Error as array` when logging HTTP API errors since 3.43.1 = 3.43.1.1 - 3/21/2024 = * Fixed error "/wp-fusion/includes/integrations/class-woocommerce-compatibility.php is not a known WordPress plugin" when using the Email Optin checkbox with WooCommerce, since 3.43.1 * Improved - WP Fusion now declares itself incompatible with the WooCommerce block-based product editor = 3.43.1 - 3/19/2024 = * Added a [MasterStudy LMS integration](https://wpfusion.com/documentation/learning-management/masterstudy/) * Added option to automatically remove [MemberPress corporate account tags](https://wpfusion.com/documentation/membership/memberpress/#corporate-accounts) from sub-account members when the parent membership is cancelled * Improved - When using [HTTP API logging](https://wpfusion.com/documentation/getting-started/activity-logs/#http-api-logging), the amount of time to perform the API call will be recorded to the logs * Improved - When an API error is encountered, the full API call and response will be logged * Improved - When using the Email Optin feature with WooCommerce, WP Fusion will now declare itself incompatible with the new checkout block * Improved plugin updater - updates will now show even if license key is expired * Improved - When debugging the admin settings page using the `&debug` URL parameter, the contents of `wpf_import_groups` will now be output with the rest of the debug data * Fixed `List not found with ID` error when adding contacts to Klavio lists with explicit consent * Fixed `Invalid consent timestamp` error when adding contacts to Klavio lists with explicit consent, with timezone offsets above GMT * Fixed WPBakery visibility indicator showing up when not in editing mode for users who have the admin bar visible * Fixed the import tool tracking failed user imports as successful for purposes of the table of historical imports * Fixed user IDs getting tracked multiple times in the settings table listing user import history, artifically inflating import counts * Fixed undefined index warning syncing custom fields with Klaviyo * Fixed array data not being converted to a string when updating Salesforce contacts using the `update_contact()` method = 3.43.0 - 3/12/2024 = * The Great Date update. Prior to this version, dates and timezones across integrations and CRMs were inconsistent. Some plugins used UTC (MemberPress) and some used local time (WooCommerce). For some CRMs we converted the time zone back to local time (HubSpot), some we converted to UTC (Ontraport), and some we left as is (ActiveCampaign). This update attempts to standardize the way dates and times are handled by extracting all dates from plugin integrations in UTC, and then converting them back to local time when syncing to CRMs that require it that way. This will result in more predictable handling of time zones, but there may be unexpected behavior in the initial release. * Added a [visibility indicator](https://wpfusion.com/documentation/page-builders/wpbakery-page-builder/#visibility-indicator) to protected elements with the WPBakery frontend editor * Added a [batch export tool for Elementor Forms entries](https://wpfusion.com/documentation/lead-generation/elementor-forms/#syncing-historical-entries) * Added support for custom fields with SureCart * Added support for loading and displaying read-only fields with HubSpot * Added throttling to batch operations with Constant Contact to get around the 4 API calls per second limit * Improved - If a user is a LearnDash Admin or Group Leader and is automatically enrolled in all courses, they will be ignored for the purposes of WP Fusion's course auto-enrollment * Improved WP Remote Users Sync integration (better reliability for syncing tag changes) * Improved - In the admin settings, setting the logs to "Only Errors" will disable the checkbox for "HTTP API Logging" * (Potentially) improved performance with EngageBay by removing the leftover and unnecessary `host: api.engagebay.com` header from HTTP requests * Improved - The batch operations list in the admin is now sorted alphabetically * Fixed notice not being logged when an update webhook was received but no matching user was found * Fixed dropdown fields with WooCommerce Product Options syncing their internal values instead of the displayed labels * Fixed Gravity Forms User Registration actions running twice when using Gravity Press and wiping out the local tag cache for the user * Fixed PHP notices in the Amelia integration * Developers: If a user has a contact ID and no tags, the tags meta will now be deleted from the usermeta table for that user (reduces database size for users with no tags) = 3.42.14 - 2/27/2024 = * Updated expired Microsoft Dynamics 365 app secret * Improved - API actions will no longer be queued up for the `shutdown` hook when triggered as part of a cron process (should fix timeouts with WooFunnels and Forcefully Switch Order Statuses) * Improved - Errors during the initial OAuth connection with Dynamics 365 will now be displayed as a banner on the setup screen * Improved - With Klaviyo, the country code will now be prepended to phone numbers if it's missing during a WooCommerce checkout or profile update * Fixed duplicate review error when submitting reviews with Easy Digital Downloads since 3.42.10 * Developers: added function `wpf_phone_number_to_e164()` to convert phone numbers to E.164 format = 3.42.13 - 2/26/2024 = * Added support for [If-So block editor conditions](https://wpfusion.com/documentation/other/if-so/#blocks) * Improved - The query to get WooCommerce coupons linked to tags will now be cached in a transient for improved performance * Improved EngageBay error handling * Improved EngageBay API performance: will now make calls directly to the account subdomain instead of `https://api.engagebay.com/dev/api/` * Improved - Reduced some duplicate MemberPress meta syncs when creating a transaction and a subscription at the same time * Fixed tags not applying for MemberPress transactions created as order bumps * Fixed tags not applying for MemberPress transactions created via Gravity Press * Fixed Profile Builder Pro syncing the user avatar field as an attachment ID instead of image URL * Fixed Ninja Forms batch export operation not working on forms that weren't configured to apply tags * Fixed missing nonce check on search log users AJAX handler * Fixed - if an Solid Affiliate activation linked tag and group link tag were applied at the same time, the affiliate wouldn't be added to the group = 3.42.12 - 2/20/2024 = * Added a [LatePoint integration](https://wpfusion.com/documentation/events/latepoint/) * Added an option with Klaviyo to [subscribe contacts to lists with marketing consent](https://wpfusion.com/documentation/crm-specific-docs/klaviyo-marketing-consent/) * Added support for the Canadian data center with Zoho * Improved - A user auto-enrolled into a BuddyPress group as an organizer will no longer be unenrolled due to missing the group's general linked tag * Improved error logging when users fail to be unenrolled from BuddyPress groups * Improved - Invalid characters will now be removed from phone numbers synced to Zoho to avoid API errors * Improved - Errors during the initial OAuth connection with Zoho will now be displayed as a banner on the setup screen * Improved - Empty values will never be sent to Salesforce when creating a contact, to fix `Cannot deserialize instance from VALUE_STRING` errors * Improved - Date fields in Salesforce can now be erased by syncing an empty value (previously empty dates were ignored) * Fixed Easy Digital Downloads discount "apply tags" settings getting lost after the discount was first used * Fixed calling Easy Digital Downloads' `edd_update_discount()` from outside the discount edit screen removing the WP Fusion settings from the discount * Fixed filters added on `wpf_format_field_value` before `init` being un-hooked with Zoho * Fixed a fatal error with Uncanny LearnDashy Groups 6.0.0 when enrolling a user into a group if WooCommerce wasn't active * Fixed a fatal error syncing a MemberPress transaction to FluentCRM when the Enhanced Ecommerce plugin was active (Enhanced Ecommerce doesn't support FluentCRM) * Fixed error `Timestamp must be of type int` when syncing string timestamps with Groundhogg (same site) * Developers: updated the Klaviyo API version to `2023-12-15` = 3.42.11 - 2/10/2024 = * Fixed for HighLevel API update of Feb 8th (now sending 403 status codes when access tokens expire, was previously 401) * Improved: Gravity Forms integration will now pass the entry ID to the forms processor class * Fixed WP Fusion not showing as compatible with WooCommerce High Performance Order Storage until the initial setup was completed * Fixed Groundhogg (Same site) integration not loading mapped BuddyPress fields automatically when their corresponding custom fields were edited in Groundhogg * Fixed FluentCRM and ActiveCampaign treating an invalid contact ID when looking up tags as a contact with no tags (caused auto-login links to unlock content for invalid contacts) = 3.42.10 - 2/5/2024 = * Added an [Amelia booking integration](https://wpfusion.com/documentation/events/amelia/) * Added [Customer.io site tracking scripts](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#customer-io) * Added [Customer.io webhooks](https://wpfusion.com/documentation/webhooks/customer-io-webhooks/) * Added a setting to apply tags when a customer leaves a review with Easy Digital Downloads * Improved - Multi-key FluentCRM events will now be sent JSON-encoded * Improved - The Save Changes button in the settings will now be disabled until the initial CRM connection has been established * Improved - The [JavaScript-based lead source tracking method](https://wpfusion.com/documentation/tutorials/lead-source-tracking/#caching) no longer requires jQuery * Fixed Formidable Forms fields not showing for mapping in the WP Fusion settings if they had a default value * Fixed lead source data for new user registrations being synced even if there was an existing contact in the CRM * Fixed missing CRM field labels in dropdowns with Brevo since 3.42.8 * Fixed PHP warning syncing available custom properties with Omnisend when no custom properties were available * Fixed error syncing available custom fields with Drip when no custom fields were available * Fixed missing event value for single key FluentCRM events * Fixed security vulnerability in the [`user_meta_if` shortcode](https://wpfusion.com/documentation/getting-started/shortcodes/#displaying-content-based-on-user-meta-values), an editor could potentially execute arbitrary PHP code by passing a function name to the `field_format` parameter = 3.42.9 - 1/30/2024 = * Added support for the [new FluentCRM event tracking module](https://fluentcrm.com/fluentcrm-2-8-40/#dynamic-contact-activity-tracking) (same site and REST API) * Improved - Updated Omnisend event tracking to use new `/customer-events` endpoint * Improved HubSpot error handling for failed access token refreshes * Fixed WP Fusion not showing as compatible with WooCommerce High Performance Order Storage until the initial setup was completed * Fixed Groundhogg (Same site) integration not loading mapped BuddyPress fields automatically when their corresponding custom fields were edited in Groundhogg * Fixed FluentCRM and ActiveCampaign treating an invalid contact ID when looking up tags as a contact with no tags (caused auto-login links to unlock content for invalid contacts) = 3.42.8.1 - 1/25/2024 = * Improved: The background worker will now `return` instead of `exit` when the queue is empty, to prevent the worker from blocking subsequent cron tasks * Improved HubSpot error handling * Improved error logging for composite responses with Salesforce * Improved Omnisend event tracking (numeric values will no longer be sent as strings) * Fixed refreshing available Ontraport tags resetting the available tags list since 3.42.8 * Fixed WooCommerce order item refunded tags not being logged when a guest checkout order was refunded * Fixed auto-applied discounts not working with Easy Digital Downloads 3.0 * Fixed fatal error displaying Select Tag(s) dropdowns after resyncing available tags while WP Fusion was in staging mode = 3.42.8 - 1/22/2024 = * Added a CRM integation with [Omnisend](https://wpfusion.com/documentation/installation-guides/how-to-connect-omnisend-to-wordpress/) * Added Last Order Shipping Method field for sync with WooCommerce * Improved Customer.io error handling * Improved - When clicking Process Order Actions Again on a WooCommerce order, the transient that locks the order will be cleared (fixes cases where a prior sync crashed or timed out before finishing) * Fixed special characters in tag names breaking If-Menu tag condition dropdowns * Fixed PHP warning `Undefined array key "email"` in Customer.io integration when updating contacts * Fixed special characters in tags applied by Elementor Forms being synced as HTML entities * Fixed `Undefined variable $apply_tags` with some CRMs since 3.42.6 * Fixed `Undefined variable $available_tags` with MailPoet integration when loading a subscriber's lists * Developers: changed the `remote_field` and `remote_type` custom field properties introduced in 3.42.5 to `crm_field` and `crm_type` for consistency (is backwards compatible) = 3.42.7 - 1/17/2024 = * Fixed integrations with a missing documentation URL getting disabled when the main settings page was saved, since 3.42.6 * Fixed additional undefined array key warnings in the Gravity Forms integration when editing a form feed * Developers: extended the ActiveCampaign API timeout to 20 seconds for loading, applying and removing tags = 3.42.6 - 1/15/2024 = * Added support for the Paid Memberships Pro [Gift Membership Addon ](https://wpfusion.com/documentation/membership/paid-memberships-pro/#gift-memberships) * Added an [order status column](https://wpfusion.com/documentation/ecommerce/easy-digital-downloads/#order-status-column) to the Easy Digital Downloads orders table * Added Apply Tags - Resumed setting to the [MemberPress integration](https://wpfusion.com/documentation/membership/memberpress/#tagging) * Added support for lists with FluentCRM (REST API) * Added Created At field for sync with Customer.io * Added Fatal Error Notify promotional banner to the bottom of the logs page * Tested for Paid Memberships Pro 3.0 * Tested for FunnelKit Builder 3.0 * Improved - If a WooCommerce order is refunded, and the parent subscription is still active, no tags will be removed * Improved - Admin notices from other plugins will be hidden on the logs page * Improved - Individual plugin integrations can now be disabled from the Integrations tab in the settings * Fixed tags created in FluentCRM (REST API) via WP Fusion being stored as tag IDs and not slugs * Fixed (for real this time) `update` and `update_tags` webhook endpoints not working with FluentCRM (REST API) 2.8.3+ * Fixed PHP warning when editing a Formidable Forms action and a previously mapped field was deleted * Fixed menu item restriction not working on the BuddyPress / BuddyBoss profile and account pages * Fixed Customer.io integration not syncing dates as Unix timestamps = 3.42.5 - 1/8/2024 = * Added support for [double opt-ins with Brevo](https://wpfusion.com/documentation/tutorials/double-opt-ins/#brevo) * Added support for [setting a default opt-in status with Groundhogg](https://wpfusion.com/documentation/tutorials/double-opt-ins/#groundhogg) (REST API) * Added support for using Data Driven Segments for content restriction with Customer.io * Added support for saving the field type for each remote field in the CRM. Improves data format conversion (currently just Brevo) * Fixed `update` and `update_tags` webhook endpoints not working with FluentCRM (REST API) 2.8.3+ * Fixed Ninja Forms integration not showing as loaded on the Integrations tab in the settings * Fixed Data Driven Segments being loaded as _Unknown Tag_ with Customer.io * Fixed excerpts being removed from restricted content when accessed over the REST API since 3.42.3 * Fixed undefined array key warnings in the Gravity Forms integration when editing a form feed * Developers: removed an `array_filter()` from the `WPF_User::get_user_meta()` function (was preventing exporting empty values to the CRM) = 3.42.4 - 1/4/2024 = * Fixed Elementor Forms text fields being treated as dates since 3.42.3 * Fixed "Order Refunded" tags on WooCommerce products not being applied when orders were fully refunded * Fixed `WPF_User::get_users_with_contact_ids` incorrectly showing up as custom code in the Status panel of the settings = 3.42.3 - 1/2/2024 = * Improved - With BuddyBoss, the forums archive can now be protected by editing the Forums page, rather then via the WP Fusion Integrations settings (prior settings copy over automatically) * Improved - With Brevo, select and multiselect fields will now automatically be synced to their numeric values required by the Brevo API (requires a one-time Refresh Available Tags and Fields via the settings) * Improved - automatic date format detection with Elementor Forms submission will ignore dates prior to 100 years ago (fixes some weird issues with strings like 7015f0000006jqgAAA being treated as 2,000 BC) * Fixed the BuddyPress / BuddyBoss user profile page being protected if the forums archive was protected * Fixed Customer.io integration updating the `created_at` parameter for logged in users on each page load, when site tracking was active * Fixed Customer.io integration not supporting multi-key event tracking = 3.42.2 - 12/27/2023 = * Added a Customer.io CRM integration * Added a [SureMembers integration](https://wpfusion.com/documentation/membership/suremembers/) * Added support for [using an API key with HighLevel](https://wpfusion.com/documentation/crm-specific-docs/highlevel-white-labelled-accounts/#overview) instead of OAuth * Improved - Post content restricted by WP Fusion will no longer be accessible over the REST API to unauthorized users * Improved - If a redirect is set on a restricted LearnDash lesson or topic, and Lock Lessons is enabled, the lesson will now be clickable (so the user can be redirected) * Fixed myCred rank tags not being applied for alternate point types * Fixed custom fields not syncing with Jetpack CRM * Fixed fatal error trying to sync array/multiselect data to a text field in Jetpack CRM = 3.42.1 - 12/18/2023 = * Added support for [EDD Cancellation Survey](https://wpfusion.com/documentation/ecommerce/edd-recurring-payments/#cancellation-surveys) * Added an option to apply the current user's CRM tags [as CSS classes to the HTML `
` element](https://wpfusion.com/documentation/getting-started/access-control/#protecting-content-via-css) * Fixed bbPress user profiles inheriting access rules from the first post on the site * Fixed (changed the `class_exists()` order check for Advanced Shipment Tracking Pro to make sure it takes priority over WooCommerce Shipment Tracking * Fixed saving the WP Fusion settings page after an OAuth token had been refreshed causing the old token to get saved, and breaking the connection * Fixed PHP warning `foreach() argument must be of type array|object, bool given` after deleting all taxonomy-based access rules * Fixed PHP notices on WishList Member settings page * Fixed fatal error tracking events with FluentCRM when the FluentCRM - Events plugin was deactivated after events had been configured = 3.42.0 - 12/11/2023 = * Added an integration with [Forminator forms](https://wpfusion.com/documentation/lead-generation/forminator/) * Added an integration with [WP Software License for WooCommerce](https://wpfusion.com/documentation/ecommerce/wp-software-license/) * Added support for [linked tags with Gamipress ranks](https://wpfusion.com/documentation/gamification/gamipress/#ranks) * Added compatibility with Advanced Shipment Tracking Pro (fork of [WooCommerce Shipment Tracking](https://wpfusion.com/documentation/ecommerce/woocommerce-shipment-tracking/)) * Improved - With [Fluent Forms](https://wpfusion.com/documentation/lead-generation/fluent-forms/) and [Lead Source Tracking](https://wpfusion.com/documentation/tutorials/lead-source-tracking/), if the lead source cookies are set, the form will no longer be processed asynchronously (to avoid losing the lead source data) * Improved - With Gifting for WooCommerce Subscriptions, if Remove Tags from Customer is checked, they will no longer be removed from the customer if the customer has a separate subscription to the same product * Improved - If staging mode is enabled via wp-config.php (`WPF_STAGING_MODE`) the "It looks like this site has moved or is a duplicate" notice will not be displayed * Improved - Extended the timeout with ActiveCampaign to 15 seconds * Fixed users who registered without a first name getting their first name synced to the CRM as their username * Fixed resync tags and pull user meta batch operations not working since 3.41.48 * Fixed [Filter Course Steps with LearnDash](https://wpfusion.com/documentation/learning-management/learndash/#filter-course-steps) not working with lesson / topic pagination in the course navigation * Fixed `wpf_get_user_id( $contact_id )` returning the IDs of temporary auto-login users = 3.41.48 - 12/5/2023 = * Added Memberships for Teams Team ID field for sync with WooCommerce Memberships for Teams * Fixed new pending orders added via the WooCommerce admin not being synced to the CRM despite being registered on the `woocommerce_order_status_pending` hook * Fixed fatal error calling `wpf_get_tag_id()` before WP Fusion had been connected to a CRM * Fixed PHP error `Parse error: syntax error, unexpected ')'` when gathering the user metadata for a user in PHP < 7.3 * Fixed `Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given` when calculating GiveWP total donor value with PHP 8.1 * Fixed upgrade message in Lite plugin blocking contact fields when WooCommerce and BuddyPress weren't active * Fixed WP Fusion attempting to sync Give donors with missing email addresses * Fixed `wpf_get_setting_enable_queue` showing up under the Custom Code list on the Advanced tab in the settings, with Groundhogg and FluentCRM (same site) = 3.41.47 - 11/27/2023 = * Fixed `Uncaught Error: Call to undefined function is_user_logged_in()` on some hosts since 3.41.46 = 3.41.46 - 11/27/2023 = * Added an integration with [WP User Manager](https://wpfusion.com/documentation/membership/wp-user-manager/) * Added contextual tooltips to some fields in the Contact Fields tab of the WP Fusion settings * Added a Membership Status field for sync with MemberPress * Added Required Tags (not) setting to Divi integration (thanks Ted!) * Improved - The MemberPress Subscription Status field will now be synced any time a subscription status changes, instead of just when it changes to active * Improved - If a user registers with a missing `first_name` and `last_name` but their `display_name` is set, the Display Name will be used for the first and last names * Improved - If you try to sync multiselect or array-formatted data to a text field in HighLevel, WP Fusion will automatically combine the items to prevent an API error * Improved - If you add `define( 'WPF_STAGING_MODE', false );` to wp-config.php, this will disable [automatic staging site detection](https://wpfusion.com/documentation/faq/staging-sites/#automatic-staging-site-detection) * Improved performance with checking permissions on a post based on access rules configured on a taxonomy term * Fixed MemberPress transaction expiration dates not syncing when manually edited on the transaction page * Fixed `apply_tags` parameter in ThriveCart success URL not working for existing users * Fixed first and last name not being synced for new SureCart customers * Fixed `PHP Warning: Undefined array key` when configuring a Remove Tags action on a SureCart product * Fixed a fatal error `Cannot access offset of type string on string` when updating an ActiveCampaign contact's email to the address of an already existing contact = 3.41.45 - 11/20/2023 = * Added support for [Event Tracking with FluentCRM](https://wpfusion.com/documentation/event-tracking/fluentcrm-event-tracking/) (REST API and same site) * Added support for [webhooks in Mailchimp journeys](https://wpfusion.com/documentation/webhooks/mailchimp-webhooks/#webhooks-in-journeys) * Added support for syncing multi-part fields (like Name and Address) with Formidable Forms * Added support for the Gravity Perks Product Configurator addon * Improved - Give donation forms will now default to being enabled for sync, unless the form is specifically set to Disabled * Improved - When creating a Salesforce contact, lead, or other object, any missing required fields will be set to `-` to prevent an API error * Improved - The inline scripts to handle conditional logic on Gravity Forms form fields will now only be loaded if the form uses [WP Fusion's conditional logic](https://wpfusion.com/documentation/lead-generation/gravity-forms/#form-field-conditional-logic) (thanks @karlemilnikka) * Fixed custom fields not syncing with WP Event Manager since WPEM Registrations v1.6.18 * Fixed PHP notices in the Simply Schedule Appointments integration * Fixed import tool not loading more than 1000 contacts with Mailchimp = 3.41.44 - 11/13/2023 = * Added a status metabox to FooEvents tickets showing the contact ID, with a link to re-sync the ticket to the CRM * Added support for syncing to date + time fields with FluentCRM (same site and REST API) * Improved - You can now use "less" and "greater" instead of < and > in the `user_meta_if` shortcode attributes * Improved - Split MemberPress "Order Total" field into "Subscription Total" and "Transaction Total" * Fixed WP Event Manager integration not loading since WPEM Registrations v1.6.18 * Fixed an empty Phone and/or Company field on the FooEvents attendee form erasing the Phone and Company provided in the billing information * Fixed tags not being applied on LearnDash quiz pass or fail since v3.41.35 * Fixed a fatal error `Call to a member function get_tags() on null` following a Gridpane magic login link when Login Tags Sync was enabled * Developers: All ConvertKit API calls will now be signed with WP Fusion's `integration_key` = 3.41.43 - 11/6/2023 = * Added setting Link with Tag - Affiliate Activation to the [Solid Affiliate integration](https://wpfusion.com/documentation/affiliates/solid-affiliate/) * Added Order Total, Transaction Status, and Subscription Status fields [for sync with MemberPress](https://wpfusion.com/documentation/membership/memberpress/#additional-memberpress-fields) * Added View in CRM links with Klaviyo * Improved - The Last Course Progressed field with LearnDash will now be cached and only synced when it changes (rather than every time a course step is completed) * Improved - With ActiveCampaign, if a duplicate record error is encountered while adding a contact, WP Fusion will attempt to look up the contact by email address and update the contact instead * Improved - With Klaviyo, if a duplicate record error is encountered while adding a contact, WP Fusion will instead update the existing contact rather than throwing an error * Fixed dates synced to ActiveCampaign not respecting the account date format since 3.41.36 * Fixed PHP warning `Undefined variable $did_it` when unenrolling a user from a MemberPress membership using a linked tag * Fixed broken link to Enable Month View Cache setting in the Tribe Events integration * Fixed error with Brevo `Error while applying lists: listIds should be type array` when applying lists and a user already had one or more of those lists * Fixed PHP warning saving AffiliateWP affiliates on AffiliateWP versions below 2.13.0 * Fixed a fatal error resetting the WP Fusion settings with ActiveCampaign after enabling Deep Data (`Call to method get_connection_id() on non object`) = 3.41.42 - 10/30/2023 = * Added options for applying tags to AffiliateWP affiliates [based on status](https://wpfusion.com/documentation/affiliates/affiliate-wp/#applying-tags) * Added option to auto-activate and deactivate AffiliateWP affiliates using a linked tag * Added `awp_affiliate_status` field for sync with AffiliateWP * Fixed - With WooCommerce Subscribe All the Things, the tags for "Apply tags when subscribed" will no longer be applied when the product is configured as a "One-off subscription" * Fixed auto-login links not working with FluentCRM (REST API) since 3.41.19 * Fixed deprecated JavaScript console messages * Fixed Pipedrive error "Name must be given" when updating a contact and the name field was not present * Fixed an infinite loop on login with the SUMO Subscriptions plugin * Developers: You can now return `0` from the []`wpf_get_user_id` filter](https://wpfusion.com/documentation/filters/wpf_get_user_id_filter/) to prevent WP Fusion from looking up a user ID based on contact ID * Developers: The `wpf_get_user_id` filter will now only run before the database query, instead of both before and after = 3.41.41 - 10/23/2023 = * Added a [GeoDirectory integration](https://wpfusion.com/documentation/other/geodirectory/) * Added support for syncing optin statuses with Infusionsoft and Keap * Added WhatsApp field for sync with Brevo * Added a FooEvents Tickets batch operation * Fixed + getting prepended to WhatsApp numbers with Brevo and causing sync errors * Fixed inverted timezone offset for syncing date fields with HubSpot * Fixed LearnDash course field mappings (still) not properly saving since 3.41.36 * Fixed error `date(): Argument #2 ($timestamp) must be of type ?int, string given` with PHP 8+ and Brevo when syncing date fields * Fixed a fatal error `Call to a member function get_tags() on null` following a Gridpane magic login link when Login Tags Sync was enabled * Developers: When processing a WooCommerce subscription again via the admin sidebar, the `wpf_woocommerce_product_subscription_active` and `wpf_woocommerce_product_subscription_inactive` hooks will now fire, so addons (like WCS Gifting) are triggered = 3.41.40 - 10/18/2023 = * Improved - If "Enable Admin Bar" is un-checked in the settings, the WP Fusion admin bar item to refresh tags will also be hidden in the admin * Fixed FooEvents integration not applying tags to event attendees with the same email address as the WooCommerce customer since 3.41.39 * Fixed `ld_last_course_progressed` field not syncing when it was only enabled globally and not on specific LearnDash course * Fixed tags not being applied for variable EDD downloads with a price ID of 0 * Developers: You can now return `0` from the []`wpf_get_user_id` filter](https://wpfusion.com/documentation/filters/wpf_get_user_id_filter/) to prevent WP Fusion from looking up a user ID based on contact ID * Developers: The `wpf_get_user_id` filter will now only run before the database query, instead of both before and after = 3.41.39 - 10/16/2023 = * Added a [FluentBooking integration](https://wpfusion.com/documentation/events/fluentbooking/) * Improved - Added a notice in the logs when a FooEvents checkout creates a processing order, but FooEvents is configured to only create tickets for Completed orders * Fixed Test Connection button not working with Mailchimp during initial setup since 3.41.19 * Fixed custom attendee fields not syncing with FooEvents since 3.41.36 * Fixed WooCommerce Subscriptions Trial End Date field being synced as 0 for subscriptions with no trial period * Fixed fatal error loading meta from ActiveCampaign when two fields in a row were in the multiselect format, since 3.41.36 * Fixed shortcode attributes added to the block editor getting saved with curly quotes = 3.41.38 - 10/11/2023 = * Fixed LearnDash course progress field mappings not saving since 3.41.36 * Developers: Moved WooCommerce refund actions to the `woocommerce_order_fully_refunded` hook for compatibility with the [WooCommerce Subscriptions - Cancel on Refund extension](https://github.com/woocommerce/woocommerce-subscriptions-cancel-on-refund) = 3.41.37 - 10/10/2023 = * Improved - The WooCommerce order notes will now indicate when an order was manually re-processed by an admin * Fixed LearnDash quiz score field mappings not saving since 3.41.36 = 3.41.36 - 10/9/2023 = * Added support for [LearnDash quiz question categories](https://wpfusion.com/documentation/learning-management/learndash/#quizzes) * Added support for [event check-ins with FooEvents](https://wpfusion.com/documentation/events/fooevents/#event-check-ins) * Added a [Parent and Student Access for LearnDash integration](3) * Added an integration [with Formidable Forms payments](https://wpfusion.com/documentation/lead-generation/formidable-forms/#payments) (trigger WP Fusion actions based on payment status) * Added support for checkbox fields with Salesforce * Improved - Tickets imported with the FooEvents importer will now sync to the CRM * Improved - FooEvents attendees will now be synced when tickets are created or updated, instead of based on the WooCommerce order * Improved - Updated the `add`, `update`, and `load` contact methods with ActiveCampaign to use the new v3 API (should be faster) * Fixed missing Reset Deep Data checkbox on the advanced tab (with ActiveCampaign) * Fixed `wpf_get_user_id()` picking up the temporary IDs of auto-login users instead of users' actual IDs * Developers: the `wp_fusion_init` hook has been moved from `init` priority `0` to priority `6` so that `wp_fusion()->crm->init()` has finished = 3.41.35 - 10/4/2023 = * Fixed `wpf_get_user_id()` function returning an empty result since 3.41.33 * Fixed fatal error clicking Process WP Fusion Actions Again on a single WooCommerce subscription since 3.41.33 * Fixed WPForms integration syncing date fields as text instead of dates * Fixed contact ID lookup with Constant Contact failing for deleted contacts = 3.41.34 - 10/2/2023 = * Fixed fatal error loading WooCommerce Subscriptions subscription status meta box on stores not using HPOS since 3.41.33 = 3.41.33 - 10/2/2023 = * Re-added support for syncing empty dates with HighLevel (bug was fixed on their end) * Improved settings layout on Paid Memberships Pro membership levels * Improved - Adding logging to Groundhogg, FluentCRM, and FunnelKit when the API request is being blocked by a CloudFlare challenge page * Improved performance when looking up a user ID from a contact ID * Improved peformance for the LearnDash Course Progress Meta batch operation * Improved FluentCRM (REST API) error logging * Improved logging for invalid contact IDs or email addresses being used to start an auto-login session * Improved - If an Elementor form with a WP Fusion action is submitted and no email address field is mapped with the CRM, the first email field on the form will be used as a fallback * Improved Constant Contact error handling * Fixed API error with Constant Contact when applying tags and the user already had one of those tags * Fixed access denied redirects not working on individual LearnDash lessons * Fixed LearnDash Course Progress Meta batch operation not syncing data for courses the user was not currently enrolled in * Fixed WP Fusion status metabox missing on WooCommerce Subscriptions 5.0+ * Fixed Gravity Forms Entry Date field being synced as text not a date * Fixed a bug with HubSpot, MailerLite, and HubSpot whereby auto-login links were not being properly detected on the initial page load (only on the second page load) * Fixed Paid Memberships Pro membership level fields not being synced to the CRM when the user was auto-enrolled into the membership via a linked tag * Fixed form feeds with no fields mapped sending an empty payload to the CRM for logged-in users = 3.41.32 - 9/26/2023 = * Fixed tags not loading with ConvertKit since 3.41.31 = 3.41.31 - 9/25/2023 = * Added "Hide checkbox if consented" setting with [WooCommerce](https://wpfusion.com/documentation/ecommerce/woocommerce/#email-optins) and [Easy Digital Downloads](https://wpfusion.com/documentation/ecommerce/easy-digital-downloads/#email-optins): if the customer has previously consented to marketing, the email optin box can be hidden * Improved performance for syncing LearnDash course progress with the CRM * Improved - The "Admin Permissions" option (only users with `manage_options` can access the WP Fusion settings) will now also apply to the WooCommerce product panel * Improved - With Brevo, the keys `name` and `id` will now show as reserved and can't be used for event tracking * Fixed fatal error accessing settings page when using AffiliateWP versions below 2.13.0 * Fixed linked tags not auto-enrolling users into AffiliateWP groups * Fixed typo in FooEvents SKU field, was `skuu` and is now corrected to `sku` * Fixed fatal error syncing Event Espresso attendees to the CRM when registrations were tied to a deleted event * Fixed new tags added to ConvertKit creating a fatal error when they were loaded onto a WordPress user since 3.41.16 * Fixed warning `FLUENTCRM_SKIP_TAG_SYNC already defined` when applying tags since 3.41.29, with FluentCRM (same site) * Developers - Email optin consent checkboxes with WooCommerce and Easy Digital Downloads will now be saved as a timestamp instead of `true` * Developers - Deprecated filter `learndash_settings_fields_wpf` in favor of `learndash_course_settings_fields_wpf` and `learndash_quiz_settings_fields_wpf` = 3.41.30 - 9/18/2023 = * Fixed modified tags adding the user as an AffiliateWP affiliate since 3.41.29 = 3.41.29 - 9/18/2023 = * Added [order status tagging with Easy Digital Downloads](https://wpfusion.com/documentation/ecommerce/easy-digital-downloads/#order-statuses) * Added Link with Tag setting for AffiliateWP groups * Added Link with Tag setting for Solid Affiliate groups * Added Event SKU field for sync with FooEvents * Improved - Added logging when tags are removed from a user due to switching out of a MemberPress membership level on which Remove Tags was checked * Improved - The HighLevel integration will now also attempt to refresh the access token when it encounters a 401 response * Improved tags select UI when using the block editor— now supports typing in new tags, tag groups, refreshing tags via an API call, and creating tags via an API call * Fixed product tags not being applied with FunnelKit when an upsell product was added to the order after the order had been completed by the Forcefully Switch Order Status feature * Fixed Jan 1st 1970 being synced to the CRM for courses where a user was not enrolled or had free access when running a LearnDash progress meta batch operation * Fixed Event Espresso registration status changes not being synced to the CRM for registered users (was working for guests) * Fixed Blockli Streamer integration not detecting the current user to apply tags to * Fixed accepted WooFunnels upsells no longer triggering Enhanced Ecommerce * Fixed multi-key/value events accidentally enabled for Groundhogg (REST API) * Fixed tags applied in FluentCRM (Same site) being immediately synced back to WP Fusion * Fixed tags applied by FluentCRM automations that were triggered by tags applied by WP Fusion not being synced back * Fixed fatal error `Argument #1 must be of type array` in PHP 8.1 when a form submission did not apply any tags * Developers: added filter `wpf_hubspot_redirect_uri` = 3.41.28 - 9/11/2023 = * Added a [Blockli Streamer integration](https://wpfusion.com/documentation/membership/blockli-streamer/) * Improved - If custom fields are enabled for sync with Event Espresso, the custom fields from the primary registrant will be synced to any attendees who didn't specify custom fields * Improved - When activating a Profile Builder account via activation link, WP Fusion will now wait until the `wppb_activate_user` hook (instead of `user_register`) to ensure any custom field data has been saved * Fixed un-mapped Elementor form fields being synced with empty keys and causing validation errors with Keap / Infusionsoft * Fixed WooFunnels offer accepted tags not being applied for guest checkouts with the most recent WooFunnels update * Fixed Event Espresso Registration Status field not being synced to the CRM when a registration status was changed in the admin * Fixed an issue with activating Profile Builder accounts via activation link and W3 Total Cache: the user cache will now be cleared before syncing data to the CRM * Fixed Ultimate Member radio fields being synced as single-item arrays instead of strings * Fixed PHP warning `Undefined property: stdClass::$tags` when loading an ActiveCampaign contact who had no tags = 3.41.27 - 9/5/2023 = * Added Source, Time Zone, and Company Name fields for sync with HighLevel * Improved - If billing information is enabled for sync with Event Espresso, the billing info from the primary registrant will be synced to any attendees who didn't specify an address * Improved - New custom field created in Groundhogg (same site) will now appear immediately in WP Fusion (no Resync Fields required) * Improved - Event Espresso registrations which aren't synced because they aren't the primary attendee on the transaction will now be flagged `wpf_complete` so they no longer show up in the batch export * Fixed unhandled error when looking up a contact by email address failed during a guest checkout or registration * Fixed fatal error syncing array-formatted data with WS Form on PHP 8.1+ * Fixed date fields configured for sync on individual EDD recurring downloads being set to `text` format by default instead of `date` * Fixed duplicate Phone Number field in HighLevel integration * Fixed not being able to manually test Salesforce webhooks by appending `&contact_id=` to the webhook URL * Fixed SureCart integration not saving tags with spaces or special characters in them on the product configuration * Fixed auto login not working with Mailchimp since 3.41.19 = 3.41.26 - 8/23/2023 = * Improved - Updated to support the new FunnelKit Automations REST API namespace (`autonami-app` instead of `autonami-admin`) * Improved - The "Enable API Queue" setting will be hidden when connected to Groundhogg (Same site), as it's unnecessary when not sending API calls * Improved logging when attempting to add a contact to the CRM and no fields are enabled for sync * Fixed tag search not working with SureCart * Fixed User Created benchmark not being triggered when WP Fusion created a contact from a WordPress user with Groundhogg (same site) * Fixed Email not enabled for sync by default when using the Staging CRM * Fixed tagging not working when connected to the Staging CRM = 3.41.25 - 8/14/2023 = * Added option to [use a multi-select instead of static lists with HubSpot](https://wpfusion.com/documentation/crm-specific-docs/how-lists-work-with-hubspot/#using-a-multiselect-for-segmentation) * Added support for tagging based on [offline donations with GiveWP](https://wpfusion.com/documentation/ecommerce/give/#offline-donations) * Added `order_id` field for sync to the FooEvents attendee data * Fixed Elementor Forms field mapping not showing when no tags were specified, since 3.41.24 * Fixed protected menu items not being hidden in BuddyBoss / BuddyPress groups * Fixed tags not applying via AJAX for auto-login users since 3.41.22 * Fixed `Invalid argument supplied for foreach()` warning when updating a user's profile via Fluent Forms and BuddyPress was active but no XProfile fields existed * Developers: added optional `remove_tags` parameter to `WPF_Forms_Helper::process_form_data()` args = 3.41.24 - 8/7/2023 = * Improved - Refactored Elementor Forms integration. Now easier to use and better performance in the admin * Fixed bug in HighLevel error handling, errors with a `meta` parameter were triggering a fatal error when logged * Fixed empty dates synced to HighLevel getting converted to 1-1-1970 * Fixed empty dates synced to ActiveCampaign causing an error * Misc. HighLevel bugfixes * Added function `wpf_validate_phone_number()` = 3.41.23 - 7/31/2023 = * Added support for [multi-value lookup fields with Dynamics 365](https://wpfusion.com/documentation/crm-specific-docs/dynamics-365-associating-entities/#multi-value-lookup-fields) * Added option to sync with Cases instead of Contacts with Dynamics 365 * Added WP Fusion status column and filters [to the MemberPress transactions list](https://wpfusion.com/documentation/membership/memberpress/#transaction-management) * Added WP Fusion status section to the MemberPress single transaction page * Improved - With WordPress 6.3+ the [Bento tracking script](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#bento) will now be loaded `async` by default * Improved - The View in CRM links in the logs and elsewhere now work when using custom object types (with CRMs that support custom object types) * Improved - The Bento tracking script will now wait for the `bento:ready` event * Fixed warning `Attempt to read subscription_id on bool` when loading the Paid Memberships Pro start date or expiration date for a user who doesn't have any memberships * Fixed event tracking not sending the value (i.e. `details`) to Brevo * Fixed MailerLite (Classic) integration giving an Unauthorized error when applying groups via a batch operation * Fixed FluentCRM (same site) processing tags modified by automations before tags edited on the subscriber record, causing the WP user's tag cache to lose the tags applied by the automation = 3.41.22 - 7/24/2023 = * Improved - Contacts synced to Ontraport with `bulk_sms` set to no will also be synced with `force_sms_opt_out` set to true, to ensure they are opted out of bulk SMS * Fixed empty dates syncing to ConvertKit as 1/1/1970 * Fixed ConvertKit integration removing times from date + time fields * Fixed the Give donation count and total donated not updating when a recurring donation payment was received * Fixed MailerLite API URL not accessible via `wp_fusion()->crm->api_url` until after the `init` hook, since 3.41.19 * Developers: Removed `_nopriv` endpoint for applying and removing tags, increases security (and didn't work for logged out users anyway) = 3.41.21 - 7/18/2023 = * Improved - The AJAX endpoint for applying tags can now accept form-encoded or JSON encoded data * Improved - If a MemberPress subscription is cancelled, Remove Tags is checked, and the user still has another active subscription to a membership that applies the same tags, [those tags will not be removed](https://wpfusion.com/documentation/membership/memberpress/#concurrent-subscriptions) * Improved support for detecting email address changes from non-supported plugins (i.e. JetEngine Forms) * Fixed Klaviyo integration not loading more than ten lists * Fixed - Calling `sfwd_lms_has_access()` inside the `wpf_user_can_access` filter created an infinite loop since LearnDash 4.7.0 * Fixed warning `Invalid argument supplied for foreach()` when updating a user's profile via Fluent Forms and BuddyPress was active but no XProfile fields existed * Fixed Filter Queries - Advanced not working with Search & Filter Pro (changed priority from 10 to 100) * Developers: added filter `wpf_dynamics_365_lookup_field` = 3.41.20 - 7/11/2023 = * Fixed fatal error `Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string` when first installing WP Fusion, since 3.41.19 = 3.41.19 - 7/11/2023 = * Added option with Dynamics 365 to sync with Leads instead of Contacts * Added support for setting the `bulk_mail` and `bulk_sms` fields to Transactional Only with Ontraport * Improved - The Defer Until Activation setting with WP Members now also works when a user confirms their email address * Improved - the WP Fusion section on the admin user profile will now require the `edit_users` capability instead of `manage_options` * Improved - Activating or deactivating a license key will reset license update check lock * Improved - The GetResponse integration can now trigger autoresponders when a contact is added to a list * Improved - The GetResponse integration can now remove tags * Improved HighLevel error reporting for duplicate contact errors * Fixed Formidable Forms integration not syncing `0` value fields * Fixed `user_can_access()` against a specific user ID always returning true if the current user is an admin and Exclude Administrators is checked, since 3.41.18 * Fixed dynamic lists showing as options for import with Dynamics 365 * Developers: CRMs with an `init()` method will now run on the `init` action at priority 5, instead of `plugins_loaded`. This makes it easier for custom code added to the theme's `functions.php` to modify CRM parameters such as the API URL or object type = 3.41.18 - 7/3/2023 = * Improved - Moved EDD email optin checkbox to the bottom of the checkout form, instead of the Personal Details section * Improved - Fluent Forms integration module will now be set to enabled by default in the Fluent Forms general settings * Improved - With WooCommerce Memberships, if a user's membership plan is deleted, and Remove Tags is checked on the plan settings, the Active Member tags will be removed * Updated Fluent Forms user registration hook from `fluentform_user_registration_completed` to `fluentform/user_registration_completed` * Fixed inaccurate group counts and pagination when hiding BuddyPress / BuddyBoss groups using the Filter Queries setting * Fixed first API call after refreshing a HighLevel access token being treated as an error * Fixed error "Can only be array or string." when removing tags with HighLevel since 3.41.14 * Fixed Constant Contact integration not loading more than 50 tags * Fixed a fatal error trying to access the CRM PHP API before it was loaded * Fixed Expiration Date field with MemberPress syncing the date of the next scheduled subscription payment instead of the date of the end of the trial, when using free trials * Fixed a fatal error calling `wp_fusion()->user->push_user_meta()` on an invalid user ID * Fixed - the `wpf_admin_override` filter did not apply to the core `user_can_access()` function = 3.41.17 - 6/26/2023 = * Tested for Fluent Forms v5.0 * Tested for LearnDash 4.7.0 * Improved styling for locked LearnDash lessons and topics when using the BuddyBoss theme and the [Lock Lessons feature](https://wpfusion.com/documentation/learning-management/learndash/#lock-lessons) * Improved HubSpot error handling * Fixed FunnelKit occasionally changing the IDs of tags when they were stored as numbers (tag IDs will now be passed to FunnelKit's UI as strings) * Fixed restricted BuddyBoss groups not being hidden in the BuddyBoss app when Filter Queries was enabled * Fixed PHP warnings in SureCart integration * Fixed PHP warning with BuddyPress groups and Filter Queries since 3.41.17 = 3.41.16 - 6/19/2023 = * Added option to [subscribe ConvertKit subscribers to a form when applying tags](https://wpfusion.com/documentation/crm-specific-docs/convertkit-unsubscribe-notifications/#re-subscribing-unsubscribed-subscribers) * Added option to [use a multi-select for segmentation with Zoho](https://wpfusion.com/documentation/crm-specific-docs/zoho-tags/) (instead of tags) * Added error logging for when a BuddyPress / BuddyBoss group auto-enrollment or un-enrollment fails * Improved - If a WooCommerce order status is changed from Pending to Cancelled due to non-payment, the refund actions will no longer run (they will only run when a paid order is cancelled) * Improved - MemberPress subscription status changes from Pending to Cancelled will now be ignored (fixes Cancelled tags being applied during failed initial payments) * Fixed filter queries not working with BuddyPress / BuddyBoss groups * Fixed fatal error `Uncaught TypeError: trim(): Argument #1 ($string) must be of type string` when loading empty multiselect fields into BuddyPress / BuddyBoss XProfile fields with PHP 8.1+ * Fixed EDD email optin tags not applying for free download purchases * Fixed Zoho integration linking users with contact records who had a matching email address on Secondary Email or other email fields than the primary Email field = 3.41.15 - 6/12/2023 = * Added a [MemberPress Courses integration](https://wpfusion.com/documentation/membership/memberpress/#memberpress-courses) * Added a [UsersWP integration](https://wpfusion.com/documentation/membership/userswp/) * Added support for automatically embedding [the MailerLite tracking script](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#mailerlite) * Improved - Added a max-height and scrollbar on the tags list when setting up BuddyBoss member access controls * Fixed "Lock Lessons" setting not working with LearnDash and BuddyBoss theme in Focus Mode * Fixed "Exclude Administrators" setting not being respected for the site lockout feature * Fixed unhandled error refreshing access token with Constant Contact * Fixed Constant Contact refresh token expiring after two refreshes * Fixed read-only fields being synced back to Salesforce and causing API errors = 3.41.14 - 6/5/2023 = * Improved - With Dynamics 365, dynamic marketing lists will now show as Read Only in the WP Fusion UI, and won't be selectable for "Assign Lists" * Fixed - If a WooCommerce order item is only partially refunded, the tags applied at purchase will no longer be removed * Fixed View in CRM links in the logs not working correctly with Dynamics 365 * Fixed Restrict Content Pro memberships batch operation only loading a single user * Fixed some user roles not auto-enrolling via linked tag into hidden BuddyPress / BuddyBoss groups * Fixed PHP warning `Undefined index "default"` when configuring BuddyBoss activity access controls * Fixed custom fields not loading with the v2 HighLevel API * Fixed custom fields not loading with Maropost * Misc Maropost bugfixes = 3.41.13 - 5/30/2023 = * Added a [Download Manager integration](https://wpfusion.com/documentation/other/download-manager/) for protecting downloadable files * Added a dotted line around widgets protected by WP Fusion access rules [in the Elementor editor](https://wpfusion.com/documentation/page-builders/elementor/#visibility-indicator) * Added Company field for sync with GiveWP * Added a warning when using the Event Espresso Advanced Editor (WP Fusion is currently only compatible with the legacy editor) * Improved - If an Ultimate Member checkbox field only has a single option, the default field format for WP Fusion will be set to `checkbox` instead of `multiselect` * Fixed groups not applying with the old MailerLite API since 3.41.11 * Fixed user meta comparison NOT IN not working since 3.41.8 * Fixed Ultimate Member checkbox fields not syncing at all if they were empty * Fixed warning `Undefined array key "remove_tags"` when processing a WooCommerce subscriptions renewal since 3.41.11 = 3.41.12 - 5/24/2023 = * Improved - With WooCommerce, "Process order actions again" and the orders export tool will now handle refunded and cancelled orders and apply the tags for those statuses (instead of ignoring them) * Improved - If a post type or category/term is protected and configured with a redirect, any redirect on the underlying post will now take priority * Fixed background worker not working on sites protected by HTTP Basic Authentication * Fixed "Contact with email already exists" error when updating WordPress user profiles with FluentCRM (same site) since 3.41.11 * Fixed Filter Course Steps only running on one `ld_course_steps` meta key per request since 3.41.11 (caused issues with LD sidebars containing multiple course outlines) * Fixed "Contact not found" being treated as an error with HighLevel integration since 3.41.11 = 3.41.11 - 5/22/2023 = * Updated HighLevel integration to use the 2.0 API (allows us to add Enhanced Ecommerce and UTM tracking) * Added "View in CRM" links to HighLevel * Added [course enrollment date and course enrollment expiry date fields](https://wpfusion.com/documentation/learning-management/learndash/#course-settings-and-auto-enrollment) for sync with LearnDash * Improved API performance while applying groups with MailerLite * Improved - Brevo integration will now use numeric contact IDs instead of email addresses as unique identifiers (backwards compatible with users who are still linked via email) * Improved Maropost error handling * Improved error handling for failed access token refreshes with Constant Contact * Improved - Moved Gravity Forms conditional fields logic script to `GFFormDisplay::add_init_script()` (proper way to do it according to Gravity Forms and fixes some compatibility issues) * Improved - Exported logs will now include the error level string instead of numeric ID * Fixed email address changes via the Gravity Forms User Registration addon not being synced to the CRM * Fixed an error whereby if the LearnDash course steps were re-generated on the frontend and saved to `ld_course_steps` while a user was viewing a course with filtered steps, the filtered steps would be saved to the database and the hidden content would be removed from the course (thanks @Jason Ioannides for the fix!) * Fixed WooCommerce Subscriptions fields not syncing after the customer's initial payment attempt failed, but subsequently succeeded * Fixed undefined index warning when processing optin forms with FunnelKit and PHP 8.1 * Fixed fatal error in the Custom Code section of the main settings page when a static class method had been attached to a `wpf_*` filter * Fixed Restrict Content Pro Memberships batch operation not working since a recent RCP update = 3.41.10 - 5/16/2023 = * Added support for api.php webhooks with Brevo and FluentCRM * Fixed global webhooks not working with Brevo since 3.41.9 * Fixed custom args passed to `wp_fusion()->batch->batch_init()` being ignored = 3.41.9 - 5/15/2023 = * Added a tool for [exporting historical Fluent Forms entries](https://wpfusion.com/documentation/lead-generation/fluent-forms/#syncing-historical-entries) * Added an option to apply tags based on assistant to the [Salon Booking integration](https://wpfusion.com/documentation/ecommerce/salon-booking/) * Improved - [Force killing the background worker](https://wpfusion.com/documentation/tutorials/batch-operations/#cancelling) will now also unlock the process lock so a new operation can be started * Fixed WP Fusion settings tab not appearing in WP Booking Manager's form settings since WP Booking Manager v2.0 * Fixed active HubSpot lists not available in the dropdown with the WooCommerce auto-apply coupon feature * Fixed JavaScript bug occasionally blocking render of FunnelKit optin settings in some browsers * Fixed fatal error connecting to EmailOctopus when there were no lists or tags in the account * Fixed JavaScript bug on Gravity Forms feed settings that was causing selected CRM lists to get copied into the field mapping * Fixed error "update webhook received but contact data was not found or in an invalid format" with global webhooks and Brevo (formerly Sendinblue) since 3.41.8 * Fixed import tool not working with Pipedrive = 3.41.8 - 5/8/2023 = * Updated Sendinblue integration to Brevo * Added View in CRM links to Brevo integration * Added a [Modern Events Calendar Zoom Integration addon integration](https://wpfusion.com/documentation/events/modern-events-calendar/#zoom) * Added support for multiple parameters using the `IN` operator with the [`user_meta_if` shortcode](https://wpfusion.com/documentation/getting-started/shortcodes/#displaying-content-based-on-user-meta-values) * Added an `ALL` operator to the [`user_meta_if` shortcode](https://wpfusion.com/documentation/getting-started/shortcodes/#displaying-content-based-on-user-meta-values) * Added subscription status, start date, end date, and next payment date fields with [EDD Recurring Payments](https://wpfusion.com/documentation/ecommerce/edd-recurring-payments/#syncing-subscription-fields) * Improved performance for applying and removing lists with Brevo (aka Sendinblue) * Improved - Brevo integration will now use numeric contact IDs instead of email addresses as unique identifiers (backwards compatible with users who are still linked via email) * Improved Maropost error handling * Improved error handling for failed access token refreshes with Constant Contact * Improved - Moved Gravity Forms conditional fields logic script to `GFFormDisplay::add_init_script()` (proper way to do it according to Gravity Forms and fixes some compatibility issues) * Improved - Exported logs will now include the error level string instead of numeric ID * Fixed email address changes via the Gravity Forms User Registration addon not being synced to the CRM * Fixed an error whereby if the LearnDash course steps were re-generated on the frontend and saved to `ld_course_steps` while a user was viewing a course with filtered steps, the filtered steps would be saved to the database and the hidden content would be removed from the course (thanks @Jason Ioannides for the fix!) * Fixed WooCommerce Subscriptions fields not syncing after the customer's initial payment attempt failed, but subsequently succeeded * Fixed undefined index warning when processing optin forms with FunnelKit and PHP 8.1 * Fixed fatal error in the Custom Code section of the main settings page when a static class method had been attached to a `wpf_*` filter * Fixed Restrict Content Pro Memberships batch operation not working since a recent RCP update = 3.41.7 - 5/1/2023 = * Improved - will no longer save an empty `wpf-settings-woo` postmeta value on WooCommerce coupons when no settings had been configured on that coupon * Fixed tags for price IDs always being removed when an EDD subscription status was changed to non-active (regardless of whether or not Remove Tags was checked) since 3.41.6 * Fixed fatal error loading LearnDash course meta box with PHP 8.1+, for existing courses * Fixed fatal error displaying tags select dropdown with WP Job Manager and PHP 8.1 = 3.41.6 - 4/24/2023 = * Added an object type dropdown for Salesforce * Added HTTP API logging for applying and removing tags with Drip * Improved - With EDD Recurring Payments, if Remove Tags is checked, [the tags will no longer be removed as soon as the subscription is canceled](https://wpfusion.com/documentation/ecommerce/edd-recurring-payments/#tracking-cancellations), they will be removed once the subscription's access period expires * Improved - With EDD Recurring Payments, if a cancelled subscription reaches its expiration date, the Expired tags will now be applied at that time * Improved - WP Fusion will move Gamipress `user_register` actions from priority 10 to 25, so that the contact record has already been created in the CRM and tags can be applied * Fixed - updated deprecated filter `learndash-lesson-row-class` to `learndash_lesson_row_class` * Fixed fatal error in CartFlows integration trying to apply upsell tags when no tags had been configured for the main checkout or product * Fixed error `Argument #2 must be of type array, string given` in Toolset Forms integration with PHP 8+ * Developers - Removed redundant check for `wpf_is_user_logged_in()` in the WP Fusion secure block access logic = 3.41.5 - 4/17/2023 = * Improved - With the WooCommerce, GiveWP and EDD email optin checkboxes, existing opted-in customers who don't check the opt-in box will no longer be unsubscribed * Fixed typo "susbcribed" in default optin status for FluentCRM (REST API) * Fixed CRM Tags conditional logic dropdown labels on Gravity Forms feeds showing as "undefined" * Fixed error `Call to a member function get() on null` with LifterLMS in the course builder since 3.41.4 * Fixed `api.php` webhook method not properly looking up user IDs from Drip subscriber IDs (was converting them to integers) * Fixed fatal error `Call to member function is_edit_mode() on null` when using WooCommerce One-Page Checkout with Elementor = 3.41.4 - 4/10/2023 = * Added [Filter Course Steps feature for LifterLMS](https://wpfusion.com/documentation/learning-management/lifterlms/#filter-course-steps) * Added a [LifterLMS Memberships Meta export tool](https://wpfusion.com/documentation/learning-management/lifterlms/#batch-operations) * Added "Resubscribe" option with MailerLite— if enabled, and a contact is unsubscribed, they will be resubscribed when they are added to a new group * Added support for Drip webhooks with the [api.php webhook endpoint](https://wpfusion.com/documentation/other-common-issues/webhooks-not-being-received-by-wp-fusion/#the-async-endpoint-advanced) * Improved - The LearnDash Locked Lesson text [now works with the BuddyBoss app](https://wpfusion.com/documentation/learning-management/learndash/#lock-lessons) * Improved - Added a warning when a webhook is received when connected to FluentCRM on the same site (webhooks aren't necessary) * Improved "Redirect if access is denied" dropdown in admin - Will now only search for pages by title, not content, and will validate external URLs * Fixed redundant syncing of WooCommerce Subscriptions data after a successful renewal payment when the `sub_renewal_date` field was enabled * Fixed invalid timestamp error when syncing LifterLMS membership start dates to HubSpot * Fixed membership level removal actions not working since LifterLMS 6.0 * Fixed Elementor Forms integration treating "1" and "0" as `true` and `false` instead of strings * Fixed Acceptance field on Elementor Forms not being synced as boolean * Fixed "Lock Lessons" setting with LearnDash not being respected in the BuddyBoss app * Improved styling of the WP Fusion metabox when using the Gutenberg editor = 3.41.3 - 4/3/2023 = * Added support for AccessAlly 4.0 and up: [WP Fusion can now be used when AccessAlly is in "AccessAlly Managed" mode](https://wpfusion.com/documentation/membership/accessally/#accessally-managed-mode) * Added [Membership Level Name and Membership Status fields for sync with LifterLMS](https://wpfusion.com/documentation/learning-management/lifterlms/#syncing-meta-fields) * Improved - When selecting a tag in the AccessAlly tag mapping settings, the row will automatically be enabled for sync, and will be highlighted in green * Improved - Updated [Sendlane integration](https://wpfusion.com/documentation/installation-guides/how-to-connect-sendlane-to-wordpress/) to use the v2 API (requires generating a new access token) * Improved - CRMs that use OAuth will now have the refresh token and access token fields disabled in the settings to prevent browsers from accidentally filling the fields * Improved - When updating a user profile in the admin, the log source will say `user-profile` instead of `unknown` * Fixed custom fields being synced twice when updating an admin user profile with AccessAlly active * Fixed fatal error during an Easy Digital Downloads guest checkout, when the API call to look up the contact by email address failed * Fixed fatal error syncing Event Espresso registrations when the event was associated with a deleted venue * Fixed a fatal error if the WP Fusion settings were reset in the middle of a batch operation * Fixed an infinite redirect if a guest tried to access a piece of protected content and "Refresh tags if access is denied" was enabled on that content = 3.41.2 - 3/27/2023 = * Added [Ortto CRM integration](https://wpfusion.com/documentation/installation-guides/how-to-connect-ortto-to-wordpress/) * Added option to [completely remove all WP Fusion settings](https://wpfusion.com/documentation/tutorials/switching-crms/#2-reset-wp-fusion) from the database when resetting the main settings page * Added new scopes to HubSpot integration: timeline, crm.objects.custom.read, and crm.objects.custom.write * Improved - Removed redundant `name` and `email` custom fields with Bento * Improved - Thrive Leads and Thrive API integrations will no longer be loaded on versions of Thrive Dashboard less than 3.30.0, to prevent errors with older versions * Fixed - Pipedrive integration will now use a private app instead of a public app, which will allow setup to complete (previously we were pending a public app review for several months) * Fixed redirect URI mismatch error with HubSpot (since HubSpot scopes were updated on March 24th) * Fixed Klaviyo integration sometimes loading "Unknown List" entries from subscribers in cases of deleted or system lists * Fixed link to edit subscriber in Bento not available immediately after creating a new subscriber * Fixed GMT calculation with HubSpot dates adding the GMT offset when it should have been subtracing it * Fixed not being able to sync `active` and `unsubscribed` text values to set the [opt-in status with MailerLite](https://wpfusion.com/documentation/crm-specific-docs/mailerlite-double-opt-ins/) * Fixed error `Argument #1 ($str) must be of type string, array given` with Gravity Forms when syncing array-formatted data (multiselects, multi-checkboxes, etc) = 3.41.1 - 3/20/2023 = * Added Subscription Trial End date field for sync with WooCommerce Subscriptions * Improved - If a WooCommerce order is changed to Cancelled, the tags applied at purchase will now be removed (same as if it were refunded). The "Refunded" tags will still only be applied if the order is actually refunded * Improved - Overhauled FunnelKit (WooFunnels) integration. Should now be more reliable with Asynchronous Checkout and syncing order data at the correct time * Fixed the Defer Until Activation setting with Ultimate Member not working when using the Limit User Roles setting in WP Fusion * Fixed Event Tracking not working with Groundhogg (This Site) * Fixed Event Tracking updating the most recent event instead of creating a new one with Groundhogg (REST API) * Fixed "Action Failed" error when flushing the logs when WooCommmerce's logging was active in database mode = 3.41.0 - 3/13/2023 = * Added a [WooCommerce Product Options integration](https://wpfusion.com/documentation/ecommerce/woocommerce-product-options/) * Added option to [refresh a user's tags when access is denied](https://wpfusion.com/documentation/getting-started/working-with-tags/#when-access-is-denied) * Added an [Object Sync for Salesforce integration](https://wpfusion.com/documentation/other/object-sync-for-salesforce/) * Added automatic detection of custom profile fields with WooCommerce Memberships * Improved - The API Queue will now run on the `shutdown` hook at priority -1 instead of 1, to try and get ahead of any potential redirects in WooCommerce payment gateways * Improved - With CRMs that support identifying a visitor to a tracking script via JavaScript, a visitor can now be identified in the same page load as a form submission (instead of requiring a redirect or refresh) * Improved - The "Select a redirect" box in the main WP Fusion metabox can now accept a page or a URL * Improved - You can now set the `WPF_MULTISITE_PREFIX_KEYS` in wp-config.php to turn on [blog ID prefixes for usermeta keys](https://wpfusion.com/documentation/faq/multisite/) * Improved - Moved Push All setting to Advanced settings tab * Fixed - Updated to support latest versions of Thrive Architect, Leads, and Automator (3.18, 3.16, and 1.9 respectively) * Fixed - In some cases a FunnelKit order would still be pending when the asynchronous checkout script was loaded, causing it not to fire. We'll now enqueue the async checkout script for pending orders as well * Fixed missing tag labels in Thrive Automator with some CRMs * Fixed View in CRM link showing on Gravity Forms entries for CRMs that did not support linking directly to the contact's record * Fixed loading the metadata from the CRM resetting a user's wpForo usergroup to the default * Fixed fatal error loading the WP Fusion MemberMouse settings page since MemberMouse = 3.40.59 - 3/7/2023 = * Fixed content not unlocking when an initial auto-login URL was visited, since 3.40.57 * Improved - The tag select option on the Messages settings tab with BuddyBoss' member access controls will now be limited to the first 100 tags, to prevent out of memory errors * Fixed import tool not working with Salesforce picklist-based segmentation = 3.40.58 - 3/6/2023 = * Added a [Pretty Links integration](https://wpfusion.com/documentation/affiliates/pretty-links/) for tracking link engagement in your CRM * Added a [ThirstyAffiliates integration](https://wpfusion.com/documentation/affiliates/thirstyaffiliates/) for tracking link engagement in your CRM * Added a [WP All Import integration](https://wpfusion.com/documentation/other/wp-all-import/) for syncing generated passwords with your CRM * Added support for Time fields with Gravity Forms * Improved - When changing the tag type with Salesforce, all users will automatically have their tags resynced from the CRM * Improved - When using a Picklist for Salesforce tags, if an unknown is loaded for a user, it will be added to the dropdown of available options * Improved - The Bento tracking script will now be registered via `wp_enqueue_script()` instead of inline, to play better with caching and optimization plugins * Fixed Enhanced Ecommerce data not syncing with FunnelKit when an upsell offer was rejected and Asynchronous Checkout was enabled * Fixed Import Users tool not working with Salesforce picklist-based segmentation * Fixed Salesforce integration not loading more than 2000 available topics * Fixed fatal error with Push All when other plugins updated user meta fields before WP Fusion had loaded = 3.40.57 - 2/27/2023 = * Added a [WooCommerce Gravity Forms Product Add-ons integration](https://wpfusion.com/documentation/ecommerce/woocommerce-gravity-forms-product-add-ons/) * Added ability to [apply tags when a new topic or reply are posted](https://wpfusion.com/documentation/forums/bbpress/#forums-activity-tracking) in bbPress (and BuddyBoss) forums and topics * Added support for [updating lookup fields and associated entities with Microsoft Dynamics 365 Marketing](https://wpfusion.com/documentation/crm-specific-docs/dynamics-365-associating-entities/) * Improved - When an auto-login session loads the tags for someone who has a user account on the site, those tags will also be saved to their local cache * Improved - Clicking Cancel on a batch operation / export operation will now cancel the next operation in the queue, even if the key is unknown * Improved - Some plugins sloppily trigger `wp_login` twice during a single login. WP Fusion will now only run on the first instance * Improved error handling with Dynamics 365 * Improved - Updated Bento, Engage, and Intercom integrations to support upcoming multi-key event tracking * Fixed HTML in custom field names being displayed in the Contact Fields list * Fixed the logs recording an error when a webhook was received from ThriveCart * Fixed typo "susbcribed" in default optin status for FluentCRM (same site) preventing automation emails from sending since 3.40.40 * Fixed Groundhogg (REST API) integration not loading more than 100 available tags * Fixed custom fields not syncing with S2Member when using a custom database table prefix * Fixed a fatal error in FooEvents when a contact ID lookup (by email address) resulted in an error * Developers: If the background worker / exporter goes rogue, [you can now hard cancel everything](https://wpfusion.com/documentation/tutorials/batch-operations/#cancelling) by appending `&wpf-cancel-batch` to the WPF settings page URL = 3.40.56 - 2/20/2023 = * Improved - If the MemberDash plugin is active, a warning will be displayed on LearnDash courses about potential conflicts when using two plugins to manage enrollments into the same course * Improved - The cookie to track Bento guest form submissions will only be set for one hour (instead of one year). This is plenty of time for the Bento tracking script to pick it up, and will make it easier to cache pages for identified guests * Fixed Order Date field not syncing with RestroPress orders in the Processing status * Fixed error `Undefined function wpf_render_tag_multiselect()` when editing an event on the frontend using the Modern Events Calendar Front-end Event Submission addon * Fixed warning with Ultimate Member `Attempt to read property "ID" on null` when registering meta boxes on some post types * Fixed the ActiveCampaign integration intercepting API errors from other CRMs during the initial connection process = 3.40.55 - 2/13/2023 = * Added `wpf-refresh` query string parameter [to force a refresh of the user's tags and/or meta from the CRM](https://wpfusion.com/documentation/getting-started/shortcodes/#via-url) * Added a setting to [apply a tag when a specific checkout step is completed in a CartFlows flow](https://wpfusion.com/documentation/ecommerce/cartflows/#checkouts) * Added support for webhooks with the v2 MailerLite API * Added links to the settings page with MailerLite to view and delete all registered webhooks (for debugging purposes) * Added direct link to view a subscriber from WordPress when using the new V2 MailerLite API * Improved - Guest form submissions and checkouts will now pass the guest's email address to the Bento tracking script * Improved notifications when an error was encountered saving or validating an option in the WP Fusion settings * Improved - Added error logging when registering a MailerLite webhook fails * Improved MailerLite error handling * Improved - Reverted change from 3.40.54, we found a way to resubscribe unsubscribed subscribers with the V2 MailerLite API * Fixed Thrive Architect integration syncing leads with an empty email address * Fixed PHP warning syncing the WooCommerce Memberships user memebership fields when the user's membership was not part of a plan * Fixed WooCommerce Subscriptions Start date syncing as GMT instead of local time * Fixed error `Cannot access offset of type string on string` when tracking leadsource data and the visitor's `wpf_leadsource` tracking cookie was an empty string * Fixed Bento integration returning `false` when a contact had no tags, instead of an empty array. Sometimes caused errors with other integrations. = 3.40.54 - 2/6/2023 = * Improved - Using the new V2 MailerLite API, if you attempt to create an Unsubscribed subscriber, [no data will be sent to MailerLite](https://wpfusion.com/documentation/crm-specific-docs/mailerlite-double-opt-ins/#v1-vs-v2-apis) * Fixed - Tags applied for Pending MemberPress subscriptions were not being removed after a successful checkout using a 100% discount * Fixed WP Simple Pay actions not running when a new subscription was created via SEPA payment * Fixed Last Course Enrolled field not syncing when a user was added to a LearnDash course * Fixed fatal `undefined method` errors with Thrive Architect 3.16+ * Fixed fatal error `Call to undefined function bp_get_member_type_key()` when trying to sync a Member Type field from BuddyPress to the CRM, and the Member Types component was disabled = 3.40.53 - 1/30/2023 = * Improved - WP Simple Pay integration will also run on the `payment_intent.processing` Stripe event to sync data for pending SEPA payments * Improved - ActiveCampaign event tracking API calls updated to use `wp_remote_post()` instead of `wp_safe_remote_post()` to fix occasional `A valid URL was not provided` errors * Improved - After triggering an automated enrollment into a wpForo usergroup, WP Fusion will delete and rebuild the `_wpf_member_obj` cache for the user * Fixed WooCommerce email opt-in checkbox appearing right-aligned on some themes * Fixed custom Billing and Shipping fields added via WooCommerce Checkout Field Editor not showing as available for sync * Fixed fatal error `Cannot use object of type WP_Post as array` with the Tickets Commerce payment gateway (The Events Calendar) when only a single attendee was on the ticket * Fixed Event Checkin tags not applying with Event Tickets tickets purchased using the Tickets Commerce gateway * Fixed Event Checkin tags not applying with Event Tickets Plus when attendees were checked in manually via the Event Tickets Plus app * Fixed missing log entries for updating contacts and applying tags with Event Tickets event check-ins * Fixed groups not applying for anonymous subscribers when using the new MailerLite API * Fixed JavaScript based lead source tracking not working with WP Rocket * Fixed PHP warning `preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated` when syncing a null value to a CRM field since 3.40.52 * Fixed PHP warning `Undefined array key "order_id"` when using asynchronous checkout with PHP 8+ = 3.40.52 - 1/23/2023 = * Fixed MemberPress sub-account tags not being applied beyond the first user when importing users from a .csv into a corporate account * Improved - All WP Simple Pay post-payment actions will now be triggered via webhooks from Stripe. This fixes some issues with tags not being applied if the payment success shortcode wasn't present, or if the payment success page was on another site * Improved status output for batch operations in the console: will now count items processed in the last batch, and available memory is human-readable * Fixed subscription tag fields not showing when using All Products for WooCommerce Subscriptions * Fixed Push User Meta / Export Users operations not picking up the MemberPress Corporate Parent Email field * Fixed LifterLMS course track complete tags not being applied since LifterLMS 7.0 * Fixed some random access keys (like `183e3486`) being treated as scientific notation and converted to 0 * Fixed warning "Attempt to read `cap_key` on bool" when adding or removing roles with a deleted user ID * Fixed error `Failed to parse XML-RPC request` when syncing HTML in text fields to Infusionsoft / Keap * Fixed warnings `Return type of X should be compatible with Y` warnings with PHP 8.1 and the XMLRPC library (Infusionsoft/Keap) = 3.40.51 - 1/17/2023 = * Added Next Payment Date field for sync with Paid Memberships Pro * Added a warning to the LearnDash course settings page when Filter Steps is enabled on a course and the Single Page Courses module is enabled in Uncanny LearnDash Toolkit Pro * Improved - When upgrading or downgrading between grouped MemberPress memberships, tags from the previous level will now be removed if "Remove Tags" is checked on the membership product * Improved - Moved WP Simple Pay post-payment actions to the `simpay_charge_created` hook to avoid syncing data to the CRM for failed payments * Improved - The locking transient will no longer be cleared after a failed incoming webhook * Fixed LearnDash Quiz Score field syncing the quiz points and not the percentage score. * Fixed automated enrollments into wpForo usergroups not working since wpForo 2.1 * Fixed Paid Memberships Pro Start Date field not syncing correctly since 3.40.50 * Fixed fatal error syncing string-formatted date timestamps to ActiveCampaign with PHP 8.1 * Fixed Import Users tool with Sendinblue not loading more than 500 subscribers * Fixed Quentn integration treating a Contact Not Found as a serious error * Fixed fatal error loading WP Fusion feed settings on Paymattic forms since Paymattic v4.3.2 = 3.40.50 - 1/9/2023 = * Added an integration with [YITH WooCommerce Booking](https://wpfusion.com/documentation/events/yith-woocommerce-booking/) * Added an integration with the [Virtual Events addon for The Events Calendar](https://wpfusion.com/documentation/events/the-events-calendar-event-tickets/?c#virtual-events) * Added a [`sync_if_empty` parameter](https://wpfusion.com/documentation/getting-started/shortcodes/#sync-if-empty) to the `user_meta` shortcode * Improved: the `wpf_update_meta` and `wpf_update_tags` shortcodes will now output an HTML comment to help locating them within a page * Improved: When syncing an optin from a supported ecommerce plugin [to MailerLite](https://wpfusion.com/documentation/crm-specific-docs/mailerlite-double-opt-ins/#ecommerce-plugins), if the subscriber's status is `active` or `unconfirmed` it will not be changed * Updated Elementor Forms integration to no longer use deprecated method `add_form_action()` with Elementor Pro v3.5.0+ * Fixed the `wpf_update_meta` shortcode triggering a pull from the CRM multiple times per page load (if used with multiple blank fields) * Fixed fatal error syncing the membership start date as a member was deleted in Paid Memberships Pro, with PHP 8 = 3.40.49 - 1/3/2023 = * Added multi-key/value event tracking support for CRMs that accept that kind of data (Bento, Drip, Engage, Gist, Groundhogg, Intercom, Klaviyo, Mailchimp, and Sendinblue) * Fixed Event Tracking not working with a recent ActiveCampaign API update (not sure exactly when it started) * Fixed date fields not syncing to FluentCRM (REST API) * Fixed opt-in status always showing as No when editing an EDD order in the admin, since 3.40.45 * Fixed fatal error syncing the membership expiration date as a member was deleted in Paid Memberships Pro, with PHP 8 = 3.40.48 - 12/27/2022 = * Added [SureCart integration](https://wpfusion.com/documentation/ecommerce/surecart/) * Improved - If a user's contact record is deleted, their cached tags will be deleted as well (previously these were left behind and could clutter up the database) * Fixed fatal error loading the edit order screen in WooCommerce versions below 6.4, since 3.40.45 * Fixed WooCommerce Orders batch operaton picking up `shop_order_refund` type orders since 3.40.45 * Fixed error merging lead source data into guest checkouts when the cookie contained invalid JSON * Fixed WPF not running on multiple user registrations in the same request * Fixed BuddyPress custom profile type fields being synced as the type ID not the name * Fixed ACF user fields not showing up on the Contact Fields list when User Form or User Role wasn't the first location rule * Fixed fatal error `Cannot use object of type WP_Post as array` displaying LearnDash course navigation with BuddyBoss theme 2.2.2 and PHP 8 = 3.40.47 - 12/20/2022 = * Fixed fatal error manually adding a new WooCommerce Subscription via the admin since 3.40.45 = 3.40.46 - 12/20/2022 = * Added a global setting for the Lesson Locked Text with LearnDash (at Settings >> WP Fusion >> Integrations) * Fixed fatal error on CartFlows order received page when using Asynchronous Checkout, since 3.40.45 * Fixed an unhandled error refreshing the Mautic access token when the user's API credentials had changed = 3.40.45 - 12/19/2022 = * Added [Studiocart integration](https://wpfusion.com/documentation/ecommerce/studiocart/) * Added support for [WooCommerce High Performance Order Storage ](https://developer.woocommerce.com/2022/09/14/high-performance-order-storage-progress-report/) * Added [Optin Status field for sync with MailerLite](https://wpfusion.com/documentation/crm-specific-docs/mailerlite-double-opt-ins/) — you can sync a value of `active`, `unconfirmed`, or `unsubscribed` to update the subscriber's status in MailerLite * Added "skip already processed" option to Event Espresso Registrations batch operation * Fixed BuddyBoss App Segment integration not working with CRMs which use tag IDs * Fixed batch operations getting stuck on the last record, since 3.40.44 * Fixed Enhanced Ecommerce settings not showing on Gravity Forms feeds since Gravity Forms PayPal 2.4.0 * Fixed GiveWP settings not saving if no tags were selected * Fixed GiveWP integration not creating a contact record in the CRM if the donation was made by a registered user who didn't already have a contact record * Fixed updating a user profile in WordPress marking MailerLite subscribers as Active even if they hadn't been confirmed yet * Fixed Processed / Not Processed order status filter showing up for all post types * Developers: Added filters `wpf_edd_customer_data` and `wpf_give_customer_data` = 3.40.44 - 12/12/2022 = * Fixed fatal error `json_decode(): Argument #1 ($json) must be of type string, array given` when parsing leadsource tracking data, since 3.40.43 * Added option for default opt-in status when adding new contacts to MailerLite. * Added option to filter WooCommerce orders based on whether or not they've been processed by WP Fusion = 3.40.43 - 12/12/2022 = * Added [Breakdance Builder integration](https://wpfusion.com/documentation/page-builders/breakdance/) * Added option to apply tags when a user joins a BuddyPress / BuddyBoss group * Improved lead source tracking — tracking data will now be stored JSON-encoded inside of a single cookie, instead of across multiple cookies * Improved - Using the `date-format` parameter in the `user_meta` shortcode will now output the date in the site's language (as opposed to English) * Fixed `timezone-offset` parameter in the `user_meta` shortcode being treated as minutes, not hours * Fixed fields being synced as empty with MemberPress when an profile was updated and fields set to "Show In Account" were not present on the Account page * Fixed removing a linked tag not setting the default BuddyPress profile type when the type name didn't match the type key * Fixed batch operations started on a single multisite showing the status bar on all other sites in the network * Fixed fatal error displaying a user's tags on the All Users list when a user's tags were stored as a string, with PHP 8 * Fixed mysterious JavaScript error `tipTip is not a function` when editing Gravity Forms feeds on some sites * Fixed - Moved FluentForms feed processing back to asynchronous (reverted change from 3.40.42) = 3.40.42 - 12/5/2022 = * Added [Engage CRM integration](https://engage.so/) * Improved - Fluent Forms submissions are no longer processed asynchronously (this fixes lead source tracking and the incorrect form URL showing in the logs) * Fixed BuddyPress custom profile type fields being synced as the type ID not the name * Fixed automated profile type un-enrollments with BuddyPress / BuddyBoss not working when the profile type key didn't match the post name * Fixed API errors syncing multiselect or array data with Gist * Fixed API errors not being logged when updating an existing contact via a form integration * Fixed un-checked MemberPress checkboxes not syncing from the admin * Fixed unenrolling a user from a BuddyPress profile type using a linked tag not working when the type key didn't match the `post_name` * Fixed HubSpot integration using a 120 second timeout * Fixed PHP warning during Fluent Forms feed processing when no tags were specified to be applied * Removed German language translation = 3.40.41 - 11/29/2022 = * Added Last Order Type field for sync with WooCommerce Subscriptions * Added German language translation * Improved - Set a `max-height` on the debug output for HTTP API logging in the logs * Improved logging for when a BuddyBoss / BuddyPress profile type auto-enrollment fails * Fixed custom fields not syncing with Klaviyo since 3.40.40 * Fixed logs warning with Groundhogg when a user updated their email address to have capital letters in it * Fixed Salesforce tags picklist field selection not saving in the admin since 3.40.40 * Fixed Fluent Forms integration syncing empty form fields * Fixed PHP error `Cannot use string offset as array` when importing users with PHP 8 * Fixed Fatal Error manually activating Staging Mode when using ActiveCampaign's Deep Data integration * Fixed MailPoet integration listing a user's segments as "unknown lists" = 3.40.40 - 11/21/2022 = * Added [Intercom event tracking](https://wpfusion.com/documentation/event-tracking/intercom-event-tracking/) * Added [Intercom site tracking](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#intercom) * Added [Klaviyo event tracking](https://wpfusion.com/documentation/event-tracking/klaviyo-event-tracking/) * Added option with FluentCRM (REST API and same site) to set the default status for new contacts to either Subscribed or Pending (and trigger a double opt-in email) * Added support for using CRM tags in Gravity Forms feed conditions * Added link to edit the contact in the CRM for HighLevel (requires a Resync Contact IDs operation to load the edit URLs) * Added Previous User Email field for sync (to track email address changes) * Improved - Updated Klaviyo integration to use the new v2022-10-17 API, which will greatly improve performance * Improved - Clicking Process WP Fusion Actions Again on a WooCommerce or EDD order, for a registered user, will force lookup that user's contact ID in the CRM (in case it's changed or been merged) * Improved - Reorganized FooEvents fields in the settings into two groups, Attendee Fields and Event Fields * Improved - When a WooCommerce User Membership is deleted, the user's status will be synced as cancelled, and the expiration date will be set to the current time * Improved - When using the MemberPress offline gateway, and "Admin Must Manually Complete Transactions" is enabled, no tags will be applied until the admin has completed the transaction * Improved - If a contact was created in staging mode, deactvating staging mode will also remove the user's `staging_xxxx` contact ID * Fixed custom properties created with the core Groundhogg plugin (not the Better Meta extension) not being available for sync * Fixed error resyncing available fields when the Groundhogg Better Meta plugin was active * Fixed all phone numbers getting synced to HighLevel with a +1 country code * Fixed: Removed Drip site tracking code (Drip no longer supports site tracking) * Fixed being unable to clear out the User dropdown filter in the logs once a user was selected * Fixed AccessAlly integration not listing more than 1000 available tags * Fixed Resync Tags and Fields not working with Mautic over OAuth * Fixed EDD Recurring Payments Statuses batch operation processing subscriptions from newest to oldest * Fixed Easy Digital Downloads Orders batch operation processing orders from newest to oldest * Fixed fatal conflict with Thrive Ultimatum * Fixed fatal error adding new WP Fusion Thrive Leads API connection * Developers: Added filter [wpf_event_tickets_apply_tags](https://wpfusion.com/documentation/filters/wpf_event_tickets_apply_tags/) = 3.40.39 - 11/14/2022 = * Added [Thrive Leads integration](https://wpfusion.com/documentation/lead-generation/thrive-leads/) * Added OAuth API integration with Mautic (requires settings reset) * Improved - The tags specified on a WooCommerce product for "Apply tags when initial transaction failed" will no longer be applied during a failed WooCommerce Subscriptions renewal order * Fixed Defer Until Activation setting with BuddyPress / BuddyBoss causing tags linked to groups not to be applied * Fixed Gravity Forms conditonal logic scripts getting output when pages were loaded via the REST API (i.e. by Yoast's link indexer) * Fixed Thrive Automator integration not applying tags with CRMs that use tag IDs * Fixed Thrive Automator integration not syncing the name field to the CRM * Fixed WP Fusion integration showing up as an empty box under Thrive Product Manager >> API Integrations * Fixed Groundhogg (REST API) integration not loading more than 25 available tags * Fixed fatal error with Thrive Ultimatum `Call to undefined method WPF_Thrive_Autoresponder_Main::get_email_merge_tag()` = 3.40.38 - 11/10/2022 = * Fixed notice "Subscription status was changed to active, but the user is not currently subscribed to the product. No tags will be applied." with MemberPress since 3.40.36 * Fixed PHP warning `Undefined variable $code` in Zoho integration when handling an API error * Fixed users with no tags showing in Users Insights as `a:0:{}` * Fixed tags select not initializing properly when adding a new variable price option in Easy Digital Downloads = 3.40.37 - 11/7/2022 = * Added support for [AffiliateWP referrer tracking](https://wpfusion.com/documentation/other/affiliate-wp/#syncing-referrer-meta-fields) with Fluent Forms * Improved - With the [WooCommerce Subscriptions Gifting integration](https://wpfusion.com/documentation/ecommerce/gifting-for-woocommerce-subscriptions/), if a separate shipping address was provided by the customer at checkout, the shipping details will be synced to the gift recipient's contact record * Improved - With CRMs which require an email address for some API calls, WP Fusion will now check to see if the email can be retrieved from a WooCommerce order before making an API call to load the contact (improves performance) * Fixed both the WooCommerce and WooCommerce Subscriptions applying the same tags on a new subscription order * Fixed WP Fusion tag select boxes not usable after adding a new price option on a download product with EDD 3.0+ * Fixed membership meta fields not syncing with WooCommerce Memberships when no tags were configured on the membership plan * Developers: Added filter `wpf_get_email_from_contact_id` * [Updated Growmatik integration](https://github.com/verygoodplugins/wp-fusion-lite/pull/20) = 3.40.36 - 10/31/2022 = * Tested for WordPress 6.1.0 * Fixed Groundhogg syncing new user registrations to Groundhogg before WP Fusion * Fixed WooCommerce Memberships Status field not syncing when a paused membership was reactivated due to a successful subscription payment * Fixed LearnDash lessons protected by "Required Tags (Not)" not being protected when the parent course was set to apply tags on course completion * Fixed WP Fusion overriding conditional visibility controls on Bricks Builder elements * Fixed Staging Mode checkbox not un-checkable when the site was in staging mode due to detecting a change in the site's URL * Fixed default profile type not being set with BuddyBoss when a linked tag was removed, when the profile type directory key didn't match the type name = 3.40.35 - 10/24/2022 = * Added [Group Leader Email and Group Name fields for sync with the Restrict Content Pro Group Accounts addon](https://wpfusion.com/documentation/membership/restrict-content-pro/#groups) * Fixed automated enrollments into BuddyBoss / BuddyPress profile types not working when the type `directory_slug` didn't match the type `post_name` * Fixed group license tags not being applied in Uncanny LearnDash Groups when a user was added to a group via an enrollment key * Fixed JetEngine integration crashing the Listing Grid widget when Elementor wasn't active * Fixed WooCommerce Subscriptions integration syncing 0 as the end date for subscriptions with no expiration * Fixed variable price settings not displaying in Easy Digital Downloads since EDD 3.0 * Fixed WooCommerce Shipment Tracking tracking link not syncing for guest checkouts * Fixed WooCommerce Shipment Tracking tracking link only syncing custom tracking links, not standard carriers * Fixed WooCommerce Memberships membership status field not syncing when a subscription was reactivated in the user's frontend account area * Fixed deprecated method `isSequential()` in WishListMember integration * Fixed PHP warnings in Maropost integration * Updated Autonami to FunnelKit Automations * Developers: Tested for PHP 8.1.9 = 3.40.34 - 10/17/2022 = * Fixed form field mappings not saving in the admin since 3.40.33 = 3.40.33 - 10/17/2022 = * Added [Pipedrive CRM integration](https://wpfusion.com/documentation/installation-guides/how-to-connect-pipedrive-to-wordpress/) * Improved - Exporting the activity logs will now automatically unserialize any serialized data * Improved - The Refresh Tags and Fields link in the admin toolbar will now only be shown to administrators (`manage_options`) * Improved - Dates will be force to UTC for timestamp conversion before beng synced (fixes issues with other plugins calling `date_default_timezone_set()` and messing up the conversion) * Improved - The tags list in the All Users list now has a max height set, and can be clicked to expand * Fixed Learnpress course content protection not working since LearnPress 4.1.6.9 * Fixed Filter Queries not working on LearnPress courses * Fixed the TipTip JS file getting enqueued twice with WooCommerce (made tooltips not automatically close) * Fixed password resets via Clean Login not being synced to the CRM * Fixed expiration date not syncing with Paid Memberships Pro when a member was manually added to a level with a custom end date * Fixed fatal error registering new users in the admin with ACF multiselect repeater data, when BuddyPress was active = 3.40.32 - 10/20/2022 = * Fixed access control system broken in 3.40.31 = 3.40.31 - 10/20/2022 = * Added Refresh Available Tags & Fields button to the admin toolbar * Added support for the Groundhogg White Label Branding extension * Improved - If an Elementor element is protected by an invalid tag (for example a deleted tag, or tag from a prior CRM), the element will no longer be hidden * Fixed - All links to CRM contact records in the logs will now open in a new browser window * Fixed Gravity Perks Nested Forms getting processed before the parent entry was synced * Fixed Event Tracking not working with HubSpot * Fixed deleting an Event Tickets attendee applying the Deleted tags to the user who made the purchase, not the attendee * Fixed Invalid JSON Response error when editing pages in Gutenberg and Gravity Forms was active * Fixed fatal error loading the API Connections panel within Thrive Ovation = 3.40.30 - 10/3/2022 = * Added support for the Tickets Commerce payment gateways with Event Tickets and Event Tickets Plus * Added support for guest checkouts with RestroPress * Added Subscription Price field for sync with Paid Memberships Pro * Added Event Ticket ID field for sync with Event Tickets Pro * Improved - The Bento integration will force all email addresses to lowercase, both for syncing and for contact ID lookups * **Warning** - Bento users - Note that this change will cause WordPress users to become disconnected from their Bento subscriber records if their email addresses in Bento contain capital letters. To fix this, it's recommended to run a Push User Meta operation one time, and WP Fusion will update all your subscriber records in Bento to use lowercase email addresses * Improved - If Autonami is running on the same site, tag changes will be synced across to WP Fusion immediately, without requiring an API call * Improved - If a MemberPress transaction expires, and the user has another active transaction to the same product, the Transaction Expired tags will not be applied * Fixed lists not loading with Dynamics Marketing 365 * Fixed staging mode only auto-activating in the admin of the staging site * Fixed Preview With Tag not working with tags with apostrophes in the tag name * Fixed the BuddyPress integration syncing the profile type slug instead of profile type name when a user was added to a profile type via a linked tag * Fixed being unable to remove a saved tag in the "Apply tags when a product with this term is purchased" setting with WooCommerce * Fixed the Delivery Address fields not syncing with RestroPress * Fixed Event Check-in tags not being applied with Event Tickets Plus when the ticket was sold via WooCommerce * Fixed Attendee Deleted tags not being applied with Event Tickets Plus when the ticket was sold via WooCommerce * Fixed the MailerLite integration logging an error when a subscriber record isn't found for an email address (should just be an info message) * Fixed PHP warning syncing the Gender field with BuddyPress when it was empty * Fixed custom fields not loading with Autonami 2.2.0 * Fixed PHP warning loading usermeta fields from Autonami (same site) * Fixed unhandled fatal error when a HubSpot access token refresh failed * Fixed fatal error starting an auto login session with Dynamics 365 when the contact wasn't on any lists = 3.40.29 - 9/26/2022 = * Added Asynchronous Checkout support to CartFlows * Added support for syncing avatar URLs with wpForo * Improved Asynchronous Checkout support for WooFunnels * Improved - The HTTP API logs will now be associated with the user who initiaited the API call, instead of "system" * Fixed address and phone fields not updating with Groundhogg (REST API) * Fixed wpForo integration not loading since wpForo 2.0 * Fixed Filter Queries - Advanced not working when no post types were specified, since 3.40.28 * Fixed Filter Course Steps with LearnDash not working correctly when steps from multiple courses were listed on the same page * Fixed error `The entity "ccedil" was referenced, but not declared.` when syncing a country value of `Curaçao` to Infusionsoft * Fixed fatal error loading the Contact Fields settings tab when the "Remove WooCommerce Billing Address Fields for Free Checkout" plugin was active * Fixed error `Uncaught Error: Too few arguments to function WPF_WPBakery::shortcode_output()` when using the Accordion shortcode with WPBakery * Developers: Fixed WPF_Pods::post_save_user() running when editing users in the admin (was intended to be for frontend edits only) = 3.40.28 - 9/19/2022 = * Added Asynchronous Checkout support to WooFunnels * Added "Add to CRM" checkbox on admin Add New User form * Added as-you-type filter to Preview With Tags admin bar dropdown when there are more than 20 available tags * Added [event check-in support to Modern Events Calendar integration](https://wpfusion.com/documentation/events/modern-events-calendar/#event-check-ins) * Added Corporate Account Parent Email field for sync with MemberPress * Improved - Filter Queries Advanced will now take into account any `post__in` arguments when building up the array of post IDs to exclude (improves performance) * Improved - Moved MemberPress transaction expiration process from the `mepr-event-transaction-expired` to the `mepr-txn-expired hook`, should be more reliable * Fixed Filter Queries - Advanced not working on `post` post type when not speficied as the `post_type` in the `WP_Query` arguments * Fixed un-selected checkboxes not being loaded from HubSpot * Fixed PHP warning in Users Insights integration when users did not have a contact record * Developers: When a user's tags are modified, the memory cache at WPF_Access_Control::$can_access_posts will be cleared * Developers: `wpf_crm_loaded` action will now pass the active CRM as a parameter = 3.40.27 - 9/15/2022 = * Fixed WP Fusion overriding Gravity Forms conditional logic for logged in users since 3.40.24 = 3.40.26 - 9/14/2022 = * Fixed PHP warning marking content complete in LearnDash integration since 3.40.24 * Fixed missing `use_utm_names` flag with Ontraport when updating existing contacts (prevented lead sources from being set) * Fixed `WPF_WooCommerce::get_contact_id_from_order()` returning an empty contact ID during guest checkout if the order was just placed * Fixed MemberPress Membership Statuses batch operation not applying Expired tags for free memberships = 3.40.25 - 9/12/2022 = * Fixed fatal error `Call to undefined method WPF_Thrive_Autoresponder_Main::get_data_for_setup()` when editing pages with Thrive Architect since 3.40.24 = 3.40.24 - 9/12/2022 = * Added [Thrive Automator integration](https://wpfusion.com/documentation/other/thrive-automator/) * Added [Thrive Apprentice integration](https://wpfusion.com/documentation/learning-management/thrive-apprentice/) * Added [LearnDash Progress Meta batch operation](https://wpfusion.com/documentation/learning-management/learndash/#progress-meta) * Improved performance when using Filter Queries in Advanced mode and a query is for multiple post types * Improved staging site automatic detection on hosts that find/replace the site URL throughout the database when copying from live to staging * Improved and simplified duplicate site and staging site notices in the admin * Improved - Stopped saving LearnDash course progress to the `wp_usermeta` table, it will now just be synced as needed as users progress through courses * Fixed `?wpf-end-auto-login=true` query parameter not working * Fixed PHP warning applying LearnDash lesson attributes on LearnDash versions below 4.2.0 * Fixed BuddyPress / BuddyBoss profile type names not syncing when the type was granted by a linked tag * Fixed Gravity Forms conditional logic not saving the condition in the admin if you don't click on the operator dropdown first * Fixed PHP error trying to sync the `order_notes` field with RestroPress * Fixed PHP warning `undefined array key user_id` in PeepSo integration * Fixed Advanced Ads integration settings not saving = 3.40.23 - 9/6/2022 = * Added integration with Subscriptions for WooCommerce * Added integration with YITH WooCommerce Checkout Manager * Improved support for Lock Lessons feature with LearnDash 4.2.0+ (now works in focus mode) * Improved - When a product is fully refunded from a partially refunded WooCommerce order, the tags applied with that product will be removed, and the refund tags for that product will be applied * Improved - With WooFunnels and Drip + ActiveCampaign, if an upsell is accepted after the order has been processed by Enhanced Ecommerce, it will be processed again (i.e. the existing invoice will be updated) * Improved - Made WP Fusion menu item and settings page title able to be white labelled via the `gettext` filter * Fixed fatal error viewing WooCommerce order received page, with WooFunnels, using an invalid order ID * Fixed memory leak when using [the_excerpt] shortcode inside a post's main content area * Fixed Defer Until Activation setting with WP Members not being respected when using the Limit User Roles feature (in the WP Fusion Advanced settings) * Fixed fatal error `Too few arguments to function WPF_Access_Control::login_redirect()` with some themes since 3.40.21 * Fixed PHP warning during auto-login session when a Return After Login redirect was attempted = 3.40.22 - 8/29/2022 = * Added [tag-based conditional logic to Gravity Forms form fields](https://wpfusion.com/documentation/lead-generation/gravity-forms/#form-field-visibility) * Added support for [syncing custom profile and registration fields with LearnPress](https://wpfusion.com/documentation/learning-management/learnpress/#syncing-meta-fields) * Added an integration with the [Modern Events Calendar RSVP Addon](https://wpfusion.com/documentation/events/modern-events-calendar/#RSVPs) * Added latitude and longitude fields for sync with NationBuilder * Improved - The WooCommerce Subscriptions Statuses batch operation will now retroactively apply the Free Trial Over tag to subscribers who had a free trial * Improved layout of Gravity Forms feed settings * Improved styling of EDD order status metabox with EDD 3.0 * Fixed Apply Tags on View functionality not working when "Restrict Content" was disabled in the General settings * Fixed WP Fusion's access rules sometimes running on content in Elementor's edit mode for non-admin editors * Fixed connection settings getting overwritten when calling `wp_fusion()->settings->set()` after having switched to another multisite blog * Fixed Async Checkout sometimes running on pending orders on the Order Confirmed page with WooFunnels * Fixed fatal error trying to delete import groups that contained `WP_Error`s * Fixed EDD order status metabox showing incorrect information since EDD 3.0 * Fixed fatal error auto-enrolling users into wpForo usergroups since wpForo 2.0 * Fixed disabling the API queue also disabling staging mode = 3.40.21 - 8/23/2022 = * Added Membership Plan Name field for sync with WooCommerce Memberships * Added Status field for sync with JetPack CRM * Improved - Moved WPBakery controls to their own settings tab * Improved method of hiding content with WPBakery * Improved Return After Login feature, will also run on the `login_redirect` filter for cases where another plugin takes priority over the login redirect on `wp_login` * Updated to support Paymattic (used to be WPPayForm Pro), and fixed form feeds not saving * Fixed creating a new BuddyBoss App Access Group based on a tag processing indefinitely * Fixed JavaScript lead source tracking not working on some hosts (cookie components were being URI-encoded) * Fixed PHP warning in Memberoni integration * Fixed Lesson Locked text not showing with LearnDash 4.3.0+ * Fixed wpForo settings page missing since wpForo 2.0 * Fixed WPBakery tag search returning all tags in the UI = 3.40.20 - 8/17/2022 = * Added [Holler Box integration](https://wpfusion.com/documentation/other/holler-box/) * Added Recruiter ID field for sync with NationBuilder * Addded Avatar URL for sync with FluentCRM (can update the contact's photo by syncing a URL to an image) * Added error handling for the Sendinblue Sales CRM API * Improved - Asynchronous Checkout with WooCommerce will set a cron task for one minute in the future to confirm that the order was synced, for cases where the normal async process fails * Fixed "Converted" tags not being applied when running the EDD Recurring Payments statuses batch operation * Fixed Required Tags (Not) setting not working with WPBakery * Fixed tags displaying as IDs after saving a WPBakery element = 3.40.19 - 8/8/2022 = * Added Availability, Support Level, Inferred Support Level, Priority Level, Do Not Call, Mobile Opt-In, and Do Not Contact fields for sync with NationBuilder * Improved - If an EDD Software Licensing license is re-activated, the Expired tags will be removed * Improved support for syncing user capabilities when using a custom table prefix * Improved the UI for activating and deactivating the license on the Setup tab = 3.40.18 - 8/1/2022 = * Added Voting District fields for sync with NationBuilder * Improved - MemberPress active tags will now also be applied on the `mepr-event-non-recurring-transaction-completed` hook * Fixed a bug with automatic discounts and WooCommerce, where if the user's tags made them eligible for multiple discounts, navigating to the checkout page would apply an additional discount even when the cart total was already 0 * Fixed If-So integration not working with CRMs that use tag IDs * Fixed tags not being applied properly when a LearnDash quiz with essay responses was graded in the admin * Fixed Clean Login integration not syncing user_login and user_pass * Fixed fatal error on the Contact Fields tab with WooCommerce Stripe Gateway 6.5.0 * Fixed removing a user role syncing the user's role as the name of the role that was just removed * Developers: Fixed `wpf_get_setting_{$id}` filter not updating the option inputs on the settings page = 3.40.17 - 7/25/2022 = * Added an integration with the BuddyBoss App's [new Access Controls component](https://wpfusion.com/documentation/membership/buddyboss/#access-controls) * Added support for Filter Queries on the Jet Engine Listing Grid widget * Added County fields for sync with NationBuilder * Improved performance when auto-enrolling users into BuddyPress profile types based on tags * Fixed WP Event Manager integration not syncing registrations when transitioning an attendee from Waiting to Confirmed * Fixed HubSpot lists showing as "Array" in If-So's Select A Condition dropdown * Fixed fatal error saving LifterLMS membership plans on PHP 8+, since 3.40.15 = 3.40.16 - 7/19/2022 = * Fixed error with Jetpack CRM "Jetpack CRM plugin not active" since 3.40.15 * Fixed staging mode not automatically activating when copying to a staging site on WP Engine and Cloudways * Fixed tags not loading with MooSend * Fixed PHP warnings in MooSend integration = 3.40.15 - 7/18/2022 = * Added support for [WP Event Manager's Sell Tickets Addon](https://wpfusion.com/documentation/integrations/wp-event-manager/) * Improved - If the logs are disabled, the logs database table will be dropped * Improved - Groundhogg integration will now log an error when updating a contact's email to an address that is already in use by another contact * Fixed WP Event Manager integration not syncing registrations added via the admin * Fixed GiveWP integration not syncing guest donors * Fixed tags configured on LearnDash groups not being applied when users were self-enrolled in groups via the Uncanny Toolkit Pro Group Sign Up module * Fixed tags with quotes in them not saving fully on LifterLMS course and membership settings * Fixed the `read only` HTML flag showing with HubSpot active lists in the Oxygen conditions builder dropdown * Fixed PHP warning in Contact Form 7 integration when editing the WP Fusion settings and no fields had been added to the form * Fixed guest registrations not being synced with WP Event Manager 3.1.30+ * Fixed fatal error on WP Fusion settings page when connected to Jetpack CRM and the Jetpack CRM plugin was deactivated * Developers - Improved: The `validate_field_` filters in the settings will now only run when an option value has changed instead of on every save = 3.40.14 - 7/12/2022 = * Improved - Fluent Forms global settings page will now be hidden from the menu since it doesn't do anything * Fixed tags not being applied to recipient with Gifting for WooCommerce Subscriptions when user_email and billing_email were mapped to separate fields * Fixed fatal conflict with older WPBakery versions (Uncaught ArgumentCountError) * Fixed PHP notice in Advanced Ads integration on PHP 8 = 3.40.13 - 7/7/2022 = * Fixed WooCommerce Subscriptions integration disabled since 3.40.12 * Fixed Mautic ignoring empty fields * Fixed fatal error loading the WP Fusion PeepSo Groups settings subpage when no groups had been configured = 3.40.12 - 7/5/2022 = * Added an integration with [WPBakery Page Builder](https://wpfusion.com/documentation/page-builders/wpbakery-page-builder/) * Added an integration with [WooCommerce Payments](https://wpfusion.com/documentation/ecommerce/woocommerce-payments/) * Added Last Topic Completed field for sync with LearnDash * Improved - If a Gravity Forms User Registration Update feed runs, only the submitted usermeta fields will be synced to the CRM (instead of all fields in the database) * Improved - The MemberPress Memberships Statuses batch operation will now apply any tags configured via the Corporate Accounts addon when the user is a member of a sub-account * Fixed Return After Login feature not working since WordPress 6.0 * Fixed the "Require Admin Permissions" setting (Advanced settings tab) not working * Fixed conflict with "WooCommerce Fattureincloud Premium" when loading the available WooCommerce checkout fields in the admin * Developers - Changed the EDD update check from a POST to a GET for improved performance = 3.40.11 - 6/28/2022 = * Added [Bricks builder integration](https://wpfusion.com/documentation/page-builders/bricks/) * Improved - If a user registers and has an existing Lead record in Gist, the Lead will be converted to a User * Fixed custom attendee fields not syncing with Event Tickets Plus v5.5.0+ * Fixed Advanced Custom Fields multi-checkbox fields not syncing when MemberPress was active * Fixed MemberPress pending tags not being applied for pending transactions * Fixed Transaction Expired tags not being removed when running a MemberPress Memberships Statuses batch operation * Fixed Transaction Expired tags not being removed when a new transaction was placed for a membership product that was previously expired * Fixed some HTML and escaping glitches on the WooCommerce product panel upgrade nag with WP Fusion Lite = 3.40.10 - 6/20/2022 = * Added support for WP Global Cart (products configured on Site A will now have their tags applied when purchased on Site B) * Addded an experimental method for setting the lead source tracking cookies on sites like WP Engine and Flywheel which sanitize UTM parameters out of request URIs * Fixed calls to `wpf_user_can_access()` failing during a webhook (because the user was not logged in, it was assumed they did not have any tags) * Fixed fatal error adding a new Solid Affiliate affiliate when the `saff_referral_count` field was enabled for sync * Fixed special characters in Gravity Forms multiselect options appearing UTF-8 encoded when using the Create Tag(s) from Value option = 3.40.9 - 6/13/2022 = * Improved - When searching in the Redirect if Access is Denied dropdown in the main WP Fusion meta box, results will by grouped by post type * Fixed [WooCommerce automatic discounts](https://wpfusion.com/documentation/ecommerce/woocommerce/#auto-applying-discounts) not applying when logging in using the checkout login form * Fixed MemberPress membership statuses batch operation not applying tags for expired transactions * Fixed Gist webhooks not working wih webhooks configured via automation rules * Fixed CartFlows optin fields not being automatically detected if there was an existing custom checkout field with the same field key * Fixed incorrect format when syncing dates to Bento = 3.40.8 - 6/6/2022 = * Added fields Marital Status and External ID for sync with NationBuilder * Improved - With the `update` and `update_tags` webhook with Drip, the tags will now be read out of the webhook payload, improving performance and saving an API call * Improved - If ActiveCampaign Deep Data responds with an error indicating the connection has been deleted, the saved connection ID will also be cleared out in WP Fusion * Improved - If a timestamp being synced to HubSpot is already a whole date (midnight UTC), it won't be recalculated using the site's timezone offset * Improved logging with WP Remote User Sync - The remote site that triggered the action will now be added to the log's source trace rather than a separate log entry * Fixed WP Fusion's LearnDash course settings getting reset when quick editing a LearnDash course in the post list table * Fixed conflict (`Uncaught ArgumentCountError`) with the auto-register functionality in FluentCRM v2.5.9 * Fixed upsell tags not being applied with CartFlows when Asynchronous Checkout was enabled * Fixed staging mode activating if the `WPF_STAGING_MODE` constant was defined as `false` since 3.39.5 * Fixed slashes in Mautic API passwords not getting unslashed before saving, and breaking the API connection * Fixed Ultimate Member integration syncing data back to the CRM after a new user was imported, when Push All was enabled * Fixed typo in Constant Contact class name = 3.40.7 - 5/30/2022 = * Added [`the_excerpt` shortcode for use in the restricted content message](https://wpfusion.com/documentation/getting-started/access-control/#restricted-content-excerpts) * Added Current Page pseudo-field to [lead source tracking fields](https://wpfusion.com/documentation/tutorials/lead-source-tracking/) * Improved - If a tag is set for a post (or the More block is used), and the Restricted Content Message is being displayed, the post excerpt (above the tag) will be displayed * Improved - A notice will be logged if a ThriveCart success URL is detected but the ThriveCart Auto Login setting is disabled * Improved - If a WooCommerce subscription status is changed to Pending Cancel, the Next Payment Date field will be erased in the CRM * Improved - If an auto login link is visited, the Return After Login process will be triggered (if enabled) * Improved - User role won't be synced back to the CRM if it was changed by a webhook (improves performance) * Improved - If a form submission is triggering a new user registration (via Gravity Forms User Registration, WPForms User Registration, or similar), the tags applied by the form submission will be passed directly to the new user account (this fixes an issue where the tags may not have been fully saved in the CRM by the time the user is logged in) * Improved - Simplified the language and tooltips in the WP Fusion status meta box on single WooCommerce subscriptions * Updated to support WPForms User Registration addon v2.0.0+ * Fixed bulk editing access rules not working since WordPress 6.0 * Fixed date fields not syncing to NationBuilder * Fixed special characters in LearnDash course/lesson/topic titles getting synced to the CRM ASCII-encoded * Fixed WooCommerce auto-applied discounts not respecting the usage limit per user setting during an auto-login session * Fixed WPForms multi-select inputs not syncing correctly when set to Create Tag(s) from Value * Fixed UI saying "Add Topics" instead of "Add Tags" when using a picklist field for tags with Salesforce * Fixed PHP warning `Expected parameter 2 to be array, null given` when bulk editing WP Fusion access rules and the Merge Changes box was checked * Developers: Added parameters `$event_id` and `$ticket_id` to the [`wpf_event_tickets_attendee_data` filter](https://wpfusion.com/documentation/filters/wpf_event_tickets_attendee_data/) * Developers: Added filter `wpf_loaded_tags` when tags are loaded from the CRM for a user = 3.40.6 - 5/23/2022 = * Added option to "skip already processed" to the [Event Tickets attendees batch operation](https://wpfusion.com/documentation/integrations/the-events-calendar-event-tickets/#exporting-attendees) * Fixed `billing_email` getting synced as a the user's `user_email` when a registered user checked out with WooCommerce * Fixed fatal error `Class 'WPF_Staging' not found` when trying to sync data to the CRM on a multisite install after calling `switch_to_blog()` * Fixed the Drip integration not loading custom fields with capital letters in the field keys * Developers: Improved - WP Fusion will not save the main settings if you are currently switched to another blog on a multisite install. This prevents settings from the original site overwriting the site you've switched to. = 3.40.5 - 5/16/2022 = * Added [WP Booking System integration](https://wpfusion.com/documentation/events/wp-booking-system/) * Added support for [Sendinblue event tracking](https://wpfusion.com/documentation/event-tracking/sendinblue-event-tracking/) * Added support for [Sendinblue site tracking](https://wpfusion.com/documentation/tutorials/site-tracking-scripts/#sendinblue) * Added the ability to [restrict the purchase of LifterLMS access plans using tags](https://wpfusion.com/documentation/learning-management/lifterlms/#access-plans) * Improved - Mobile phone numbers synced to NationBuilder will be set to opted in for SMS by default * Fixed expiration date not syncing and tags not being applied for the pending cancellation status with the Paid Memberships Pro - Cancel on Next Payment Date addon v0.4 * Fixed PHP warning in EventON integration * Fixed PHP warning (undefined array key) in Restrict Content Pro integration * Fixed PHP warning (undefined array key) in Uncanny LearnDash Groups integration = 3.40.4 - 5/8/2022 = * Added Add Attendees option to [EventON integration](https://wpfusion.com/documentation/events/eventon/) * Added option to apply tags when an attendee is checked in to an EventON event * Improved - When a Paid Memberships Pro membership level is cancelled the `pmpro_expiration_date` field will be erased * Improved - When a Paid Memberships Pro membership is cancelled and the Cancel on Next Payment Date addon is active, the next payment date will be synced to the `pmpro_expiration_date` field * Fixed missing AccessAlly settings submenu page with latest AccessAlly versions * Fixed CartFlows optin step settings not saving since 3.39.0 * Fixed conflict with Premmerce Permalink Manager for WooCommerce (WP Fusion settings page not saving) * Fixed logs not properly displaying the results of a value modified by the `wpf_format_field_value` when the input variable was empty * Fixed custom fields not syncing with Constant Contact * Fixed phone numbers and addresses not syncing with Constant Contact * Fixed dates not syncing with Constant Contact * Fixed empty dates getting synced to Mailchimp as Jan 1st 1970 * Developers: added action `wpf_crm_loaded` = 3.40.3 - 4/25/2022 = * Fixed all content restricted for logged in users since 3.40.2 = 3.40.2 - 4/25/2022 = * Added [EMPTY and NOT EMPTY comparisons](https://wpfusion.com/documentation/getting-started/shortcodes/#empty-and-not-empty) to the `user_meta_if` shortcode * Added Status field for sync with FluentCRM (same site) * Improved - If a contact has been deleted or merged in ActiveCampaign and a "not found" error is triggered, WP Fusion will try to look up the contact again by email address and retry the API call * Improved - If an invalid timestamp is being synced to HubSpot (+/- 1000 years from today) it will be removed from the payload to avoid an API error * Fixed fatal error applying tags to event attendees with FooEvents when the initial contact record creation failed due to an API error * Fixed "Apply tags when refunded" tags not being applied when a WooCommerce renewal order was refunded but the subscription was still active * Developers: Fixed the `wp_fusion_init_crm` action running too early for code added to functions.php (moved from `plugins_loaded` to `init`) = 3.40.1 - 4/21/2022 = * Fixed `wp_fusion()->crm_base` variable not being initialized since 3.40.0 * Fixed some weirdness with Staging Mode since 3.40.0: tags and contact IDs were getting lost when resyncing * Fixed bbPress archive restriction running when a redirect was saved in the settings but Restrict Archives not checked * Fixed "Apply tags when purchased" setting missing on WooCommerce variations when Restrict Content was disabled in the General settings * Fixed conflict with WooCommerce Anti Fraud (edits to users in the admin were syncing the user's email address to the admin's contact record) * Fixed PHP warning in `WPF_CRM_Base` when viewing an admin user profile before WP Fusion had been set up * Fixed error in WeGlot integration since 3.40.0 = 3.40.0 - 4/18/2022 = ** Heads up! ** This update cleans up a lot of old and redundant code in the CRM integration classes. It should be safe for regular users, but if you have any custom code or have created custom CRM modules, please test on a staging site before updating. * Refactored and simplified CRM class structure: removed calls to wp_fusion()->crm_base, removed class `WPF_CRM_Queue`, removed redundancies in calling `WPF_Staging` CRM * Refactored and simplified [lead source tracking](https://wpfusion.com/documentation/tutorials/lead-source-tracking) * Removed parameter `$map_meta_fields` in CRM classes. Field mapping is now handled in `__call()` magic method in `WPF_CRM_Base` (i.e. `wp_fusion()->crm`) * Added [Constant Contact integration](https://wpfusion.com/documentation/installation-guides/how-to-connect-constant-contact-to-wordpress/) * Improved - WPML, WeGlot, TranslatePress, and GTranslate integrations will now sync the current language preference whenever a contact is created or updated in the CRM (including for guests) * Improved - When processing actions again for WooCommerce, Woo Subscriptions, GiveWP, EDD, and Gravity Forms, any tags will be applied regardless of the cache in WordPress (bypasses the Prevent Reapplying Tags option) * Fixed Events Manager integration not detecting cancelled bookings when the plugin language was non-English * Fixed admin users list showing No Contact ID for users who had a contact ID but no tags * Fixed WooCommerce Memberships for Teams team meta batch operation crashing when trying to access deleted users * Fixed updates to existing leads not working with Intercom and Gist = 3.39.5 - 4/13/2022 = * Fixed WooCommerce auto-applied coupons not working in AJAX requests since 3.39.3 * Improved - MemberPress emails and receipts will no longer be sent when a user is auto-enrolled into a membership via a linked tag * Developers - Added function `wpf_is_staging_mode()` = 3.39.4 - 4/11/2022 = * Added [WPPayForm integration](https://wpfusion.com/documentation/ecommerce/wppayform/) * Added option to [use a custom picklist field for tags with Salesforce](https://wpfusion.com/documentation/crm-specific-docs/salesforce-tags/) * Added option to configure form auto-login per form feed with Gravity Forms * Added link to view the donor's record in the CRM to the GiveWP / WP Fusion payment meta box * Improved - Auto login sessions will now be ended on the `set_logged_in_cookie` action instead of `wp_login` and `wp_authenticate` (fixes conflict with Gravity Perks Auto Login) * Improved - Updated NationBuilder add contact API endpoint to `/people/push` instead of `/people` to better handle merging duplicate records * Improved logging when syncing dates with invalid formats * Improved handling of European date formats with Advanced Custom Fields * Improved ActiveCampaign error handling * Improved - Updated Mailchimp `add_contact()` API call to `PUT` instead of `POST` to better handle duplicates * Fixed orders failing to sync when using Asynchronous Checkout and the WooCommerce PayPal Payments gateway, when payment capture was delayed by PayPal * Fixed PHP warning trying to apply tags via AJAX when an invalid tag name was provided * Fixed Gist integration not loading more than 50 available tags * Fixed user passwords getting recorded in the logs when registering a new user during an active auto-login session * Fixed date fields on ACF Frontend forms syncing the previous value * Fixed WooCommerce Subscriptions renewal payments getting processed by Asynchronous Checkout (if enabled) * Fixed PHP warning in Advanced Custom Fields integration when syncing repeaters * Fixed fatal error calling `wpf_get_current_user()` before the API was initialized * Fixed `contact data was not found or in an invalid format` error when receiving webhooks from FluentCRM on the same site * Fixed broken "Reauthorize with NationBuilder" link on the setup panel * Fixed (Lite) - Integrations settings tab will now be hidden in WP Fusion Lite = 3.39.3 - 4/4/2022 = * Added ACF Frontend integration * Addded support for tag-based visibility controls with new Elementor Container widget * Improved Elementor visibility controls: protected sections and columns will now be completely removed from the page instead of hidden via CSS * Improved - WooCommerce automatic discounts will not be applied if the cart total has already been discounted to 0 * Fixed Give email optin checkbox click also selecting the anonymous donation checkbox on donation forms that allow anonymous donations * Fixed WP Fusion's WooCommerce Subscriptions settings fields showing up on regular (non-subscription) variable products since WooCommerce Subscriptions v4.0.0 * Fixed Capsule integration not returning the contact ID of newly created contacts * Fixed filtering in the logs not working if headers were already sent by another plugin * Fixed 401 / unauthorized errors not being correctly handled with Bento * Fixed dismissing notices on the WPF settings page not being remembered * Fixed HubSpot integration starting a site tracking session when batch exporting WooCommerce guest orders * Fixed adding a new list in HubSpot via WP Fusion causing the existing Select A List dropdown to only show `(array)` for each list option * Developers: Added filter `wpf_woocommerce_order_statuses_for_payment_complete` = 3.39.2 - 3/28/2022 = * Fixed "contact not found" being treated as an irrecoverable API error with HubSpot, since v3.39.1 * Fixed missing second parameter `$force` in [wpf_get_tags() function](https://wpfusion.com/documentation/functions/get_tags/) * Fixed WooCommerce Subscriptions psuedo fields not being declared as pseudo fields (would try to load subscription data from the CRM and save it in usermeta) * Fixed unhandled exception when updating a contact's email address to an email address already in use by another contact, with FluentCRM (same site) = 3.39.1 - 3/28/2022 = * Added License ID and License Key fields for sync with EDD Software Licensing integration * Added "Skip Already Processed" checkbox option to Ninja Forms entry export batch operation * Improved - The tooltip for restricted content in the admin post list table will now show if a redirect has been configured on the post * Improved HubSpot error handling * Fixed MemberMouse integration not applying tags for new purchases since v3.37.12 * Fixed webhooks with multiple contact records not being successfully processed with Salesforce and MailerLite since 3.38.31 * Fixed import by tag not working with MailChimp and numeric tag IDs * Fixed Meta Box fields being registered as pseudo fields (only one-way sync) * Fixed Sync Tags on Login and Sync Meta on Login running at the start of a ThriveCart auto-login and sometimes erasing the user's cached tags * Fixed "The link you followed has expired" error when bulk deleting users and the Members plugin is active * Fixed unclosed