Written from the ground up to pass valuable user actions and information from Woocommerce to Intercom.
Keys: Added. Updated. Fixed. Removed. Thanks. Security.
Tested up to WordPress 5.5.3
Tested up to WooCommerce 4.8.0
Tested up to WooCommerce Subscriptions 3.0.7
Intercom API – Force version ‘1.4’ of Intercom API. In preparation for ‘2.0’ switch.
Bulk Syncing – Better handling for error status codes
Bulk Syncing – Ability to cancel a Bulk Sync.
Bulk Syncing – Status output of a Bulk Sync in a wp-admin notice.
Bulk Syncing – Add better handling for rate-limiting by Intercom API.
Admin UX – Make admin panel smarter, toggling fields based on selections.
Bulk Syncing – Reduce references to PAT.
Bulk Syncing – Switch from deprecated /bulk/ endpoints to individual user syncing.
ewI Core – Fixed bug causing “Trying to get property ‘id’ of non-object” error in logs from ewi_convert_visitor()
Subscriptions – Added Smart Tagging.
eWI Core – Improved multisite compatibility for the Multi-shop addon.
eWI Core – If ‘Thank You’ page actions enabled, also update ‘last_payment_at’ attribute.
eWI Core – Added actions ‘ewi_before_footer_js’ and ‘ewi_after_footer_js’ (with $appID and $init_array variables)
eWI Core – Fixed fatal error on some hosting environments when debugging can’t write to files.
eWI Core – Moved the count updater to avoid occasional PHP Notice about $user_id not being set.
eWI Core – Rolled back ewi_custom_attribs() from asyncronous to inline sync to Intercom.
Bulk Syncing – Added ‘ewi_bulk_sync_batch_size’ to allow for changing of batch size.
Bulk Syncing – Bug preventing companies/phones from sometimes being synced correctly.
Bulk Syncing – Replaced old user count with more efficient count_users().
eWI Core – Switched ewi_custom_attribs() to asyncronous sync to Intercom.
Subscriptions – Module refactored to improve compatibility with WC3.0+ CRUD functions.
Subscriptions – 3 new powerful filters, 6 filters deprecated.
eWI Core – Product title tagging updated to be more compatible with WC3.0+ changes.
ewI Core – Replaced deprecated call to order->id with order->get_order_number() in ewi_convert_lead().
Settings – Renamed ‘Payment Completed’ settings to ‘Order Completed’ for clarity.
eWI Core – Don’t tag Subscription products in cart on Completed/Thank You triggers, defer to Subs module.
eWI Core – Stopped full body response from being sent to debug log from Asynchronous Syncing to avoid privacy breaches.
eWI Core – Bug causing fatal error when Lead converted to User in Intercom
eWI Core – Notice of $current_user variable not being set for logged out checkouts.
eWI Meta – Bumped the version numbers of the plugin to be ready for Licencing and Auto-updates.
CRITICAL FIX – Bug causing sites to get stuck in endless loops when syncing for specific customers, due to malformed Company data.
Bulk Syncing – If enabled, sync ‘user_role’ custom attribute.
Bulk Syncing – Filter ‘ewi_bulk_sync_roles’ moved to background syncing modules.
Bulk Syncing – Phone and Company variables moved to background syncing modules.
Bulk Syncing – Bug – user selection for bulk sync was beign ignored.
Bulk Syncing – Old (pre-background) bulk syncing function.
Bulk Syncing – Filter ‘ewi_bulk_sync_roles’ to adjust which roles get synced.
eWI Core – ‘WC requires at least’ and ‘WC tested up to’ added for upgrade notices.
eWI Core – Bug preventing Categories to be tagged if toggled on either thank you page or order completion
ewI Core – Phone number to lead conversion, register user, footer JS code, bulk sync functions.
ewI Core – Company name to lead conversion, register user, footer JS code, bulk sync functions.
eWI Core – ‘ewi_add_footer’ to allow for optionally disabling the JS footer by user.
eWI Core – Filter: ‘ewi_bulk_sync_item’ to manipulate data item for each user during bulk sync.
eWI Core – Filter: ‘ewi_footer_js_attribs_all_visitors’ to manipulate custom attributes for all customers (including guests).
eWI Core – Switched to new JS widget code for footer, should fix bug with Referral URL being wrong.
eWI Core – Check for Token existence with persistent notice, before code initialised.
In preparation for switch to OAuth from Personal Access Tokens.
Bulk Syncing – Added check for Settings before allowing sync to initiate.
Bulk Syncing – Bounce out of bulk syncs on Unauthorised result from Intercom.
eWI Core – Error handling for debug logging file is now more silent.
Intercom API – Deprecated handling of API Key sets to only allow for PATs.
Woocommerce – Toggleable – Sync user role in footer.
Woocommerce – Added total_discount and total_taxes to meta_data for completed order events.
Woocommerce – Switched to new WC ->get_x functions.
Woocommerce – Switched to ‘wc_get_order()’.
eWI Core – Link to Intercom Developer console and Secure Mode pages.
Woocommerce – Filters to disable hooks/actions
Subscriptions – Filters to disable hooks/actions
Bulk Syncing – Over the top debugging for recursive testing on big sites (5,000+ customers).
Bulk Syncing – Debugging for Intercom Background Jobs
Bulk Syncing – Added usleeps to try avoid throttling for big sites.
Bulk Syncing – Bug that only sent across 10% of customers when there were 99+ to sync.
Added actions/tagging triggers to thank-you page. (toggle-able via settings, off by default)
Tag customer with ‘subscriber’ if they have any active subscriptions.
Tag/untag customer with product name based on their subscription status (toggle-able with Settings -> Tag with Product Titles)
eWI, Woo Core, Woo Subs and Intercom Syncing Functions refactored into classes/traits.
Bulk syncing refactored into syncing smaller chunks to avoid execution time-outs on some environments.
Woo Subs actions/filters for > 2.1.0.
Cast total_spend custom attribute values to Float from String.
Intercom API Keys functionality fully deprecated and removed. PAT toggle to be removed from settings in 1.0.0
Event ‘subscription status changed’ on subscription status change.
Bug when guest checkout syncing enabled, lead some customers to WSOD.
Bug with swapping from guest to registered user event syncing.
Bug that wasn’t recognising that some users exist in Intercom.
Long-loop bug in the visitors/convert functions.
(Toggleable) Foundation for syncing guest/visitor actions to Intercom.
(Toggleable) Sync username across to Intercom.
API Key field from settings.
Switched action-triggered events to firing inline, as it was slowing down AJAX functions.
Bug affecting syncing of new users to Intercom.
Moved Syncing of User Actions from Background to Asynchronous processing.
13 new filters for adding metadata to eWI events.
Bug caused by depreciated functions for customers of Custom Attributes plugin.
Background processing of API calls to Intercom.
First phase of re-organising code for more rapid debugging ahead of v.1.0
Immense hat-tip and outry of thanks to Ashley Rich for open-sourcing his awesome WP Background Processing plugin, which is used to handle background syncing and making the plugin invisible on front-end! Huge thanks to our awesome customers at Yumi for pointing us to the Background Processing codebase in a request.
Toggle-able Secure Mode for ensuring privacy of conversations with logged in customers.
Better handling for failed logging when permissions don’t allow for creating log file.
Better handling of errors fetching API results.
Filters to subscription meta_data making it more extendable
Subscription actions to new Woocommerce Subscription Actions hooks
Ability to remove tags from users via the actions (foundation set).
Bug that was corrupting the Intercom JS footer on some servers.
Massive thanks to Micky for reporting the bug.
Filters on registration functions to make syncs even more extendable.
Toggle for hiding the Guest Checkout warning on Woocommerce settings page.
Better handling of registering new users on Intercom when checking out.
Strings of data converted to arrays and converted to JSON for better handling.
Bug not tracking some woo hooks for logged in customers.
Bug with product titles and cats not sometimes being synced on checkout.
Fatal Error on Guest Checkouts
Filter ‘ewi_bulk_sync_attribs’ to extend Bulk Sync functionality
Action from bulk sync function.
Changed initialisation to set all hooks up regardless of logged in state.
Allowed for JS footer to work for non-logged in users if toggled on.
Rebuilt Bulk Sync to use /bulk/ API instead of individual calls. Now 15x faster!
Massive thanks to @mwhatters from Intercom’s Dev Support, who went above and beyond to help us debug a server error with the new Bulk Sync function.
Action to bulk sync to allow other functions/plugins to hook in later.
Made sure bulk sync also syncs across Woocommerce Subscribers.
Moved admin notice about ‘Guest Checkouts’ to only show in Woocommerce settings pages.
Thanks to Benjamin for sending over a patch for Bulk Sync bug.
Bulk syncing of customers, order counts and total spends.
Note: Bulk sync will trigger as soon as the link is clicked and can take between 10s and 1m to finish.
New factory function for sending across custom attributes for users.
Notices for sites who have Guest Checkouts enabled.
New ‘eWI bespoke attributes’ addon product & service now in beta (Please contact ektagon support when logged in for more info)
Remove debug logging of data for ‘users’ endpoint, to avoid emails and names in log file.
Better handling for fetching of settings to make toggles of new functionality more robust.
When only using PAT, hooks weren’t being activated correctly.
Replaced die()’s with error_log()’s on debug function to avoid killing pages when debug file cannot be opened.
Re-enabled triggered action on checkout and creation of customer accounts.
Toggle for switching to Personal Access Tokens from API Key sets. (See blog post for more info)
Small bug that wouldn’t sync across usernames for some customers who returned since plugin was installed.
Small bug not syncing across registration date with Intercom user creation.
Tweak – Renamed the ‘Intercom App Secret’ field to ‘Intercom API Key’ to be in-line with Intercom’s terminology.
Allow new customers to be given a tag of choice when synced to Intercom.
Ability to toggle events per hook.
Syncing previous orders/customers to Intercom
Replaced depreciated ‘get_currentuserinfo’ with ‘wp_get_current_user’. Thanks Warren for submitting request.
More commenting and prepping for thorough documentation as we prepare for the data-syncing functions previously promised when launching v1.1.0
As requested, can now tag a user with either/both Products’ Category Slug and Products’ Names on Completed Order.
As requested, variation_title now synced as meta-data to events generated via Woocommerce Subscription
As requested, toggle can now turn off inserting Intercom JS into footer.
Recursive handling of syncing when user doesn’t already exist in Intercom. Fixes several reported bugs.
As requested, removed automatically tagging of new customers with their Role type when synced to Intercom.
Bug was preventing Intercom JS from being injected into footer for some users.
Made sure all syncing of customer info sends over First Name and Last Name instead of display name.
Some servers were throwing a fatal error on activation of plugin.
Rough handling of Woocommerce Subscription Actions (activated subscription, cancelled subscription, subscription end of prepaid term, subscription expired, subscription put on hold, subscription trial ended, subscription payment, and subscription payment failure)
Moved Settings to Integrations Page under WC Settings
cart removed action wasn’t carrying Product Title meta correctly
cart removed and cart added meta data has a trailing , which broke JSON parsing
Hooks now fired on: New user registered, Viewed account page, Password reset, Address updated (both billing and shipping) , Searched for anything , Viewed product page , Added anything to cart, Removed anything from cart, Viewed cart page, Coupon applied to cart, Checkout process started, Payment process completed, Viewed past order details, Clicked to track order, Downloaded File, Ordere Re-ordered, and, Order cancelled
Connected 17 woocommerce action points to intercom.
Add user-role ‘tag’ in intercom.
Create user in intercom.
Throw intercom JS to front-end footer.