WP Fusion was designed with performance in mind, and is used on sites with hundreds of thousands of users, and stores processing thousands of transactions a day.
Unlike some other membership plugins with CRM integrations, WP Fusion will only connect to your CRM as a direct result of user action. For example:
- Updating a profile
- Making a purchase
- Completing a course
WP Fusion does not connect to your CRM to authenticate user logins, and it does not run any background synchronization processes.
Another benefit of this is that even if your CRM’s API is offline or unreachable, your users will still be able to log in and access their content.
On a fresh install WP Fusion will have no noticeable impact on your site’s speed at all. However there are some steps you can take to maintain optimal performance on your WP Fusion powered site.
WP Fusion includes the option to load your user’s latest tags and meta data from your CRM on login.
While this is an easy way to make sure their data is always up to date, this will slow down the login process while the various API calls are made.
Instead, set up webhooks from your CRM to WP Fusion. You can trigger a webhook only when something has modified and needs to be updated in WordPress. Since webhooks run in the background, your users’ updated tags and meta data will already be available when they log in.
Keep “Push All” turned off
WP Fusion has a setting that will sync data to your CRM whenever any field in your database is modified.
This setting is intended for people using plugins or custom code that isn’t supported by WP Fusion, but shouldn’t be necessary on normal sites. Leaving this setting on may result in unnecessary API calls being sent.
Be careful with “Linked” tags
WP Fusion includes a powerful feature called “Link with tag”, which allows you to automate enrollment into courses, groups, and membership levels when a tag is applied.
As a general rule, only specify a linked tag if you’re trying to trigger an automated enrollment via an outside trigger. For example a product purchase in an outside shopping cart, or using a drip sequence in your CRM.
If you are using linked tags, avoid overlapping their functionality. For example if you have a linked tag that enrolls someone into a membership, and that membership includes bundled courses, it’s not necessary to set a linked tag on each of the courses as well. This can create a chaining situation which can slow down your site.
The technical stuff
WP Fusion includes a few technologies to keep your site running fast.
The API queue
The API queue is enabled by default, though it can be turned off for troubleshooting purposes. The setting is under the Advanced tab.
With the API queue on, WP Fusion puts all API calls into a buffer and executes them during PHP’s shutdown function.
This means that any delay introduced by API calls will happen in the footer of the page, after the page has already loaded for the site visitor.
The queue also combines redundant calls into a single API call. For example
wp_fusion()->user->push_user_meta( $user_id, array( 'first_name' => 'John' ) ); wp_fusion()->user->push_user_meta( $user_id, array( 'user_email' => '[email protected]' ) );
With the API queue off these two function calls would trigger two API calls. With the queue on it will just send a single API call.
The queue combines calls that:
- Apply tags
- Remove tags
- Update contacts
To speed this up, WP Fusion has an option for Asynchronous Checkout with WooCommerce and Easy Digital Downloads. This setting is enabled by default and can be found on the Integrations tab.
With async checkout enabled, WP Fusion will send a non-blocking POST request to a background worker on your server. This lets WP Fusion process all the API calls in the background without delaying the checkout.
The background process worker
WP Fusion includes a background worker which can export users, membership statuses, order details, and more to your CRM.
This background worker is based on the WP Background Processing library. Items to be processed are added to a queue and are worked through sequentially, taking into account the server’s available memory and max execution time.
Using the background worker we have processed up to 300,000 WooCommerce orders in a single go.
The background process can run for up to 24 hours. This can be extended if needed by using the