Written from the ground up to pass valuable user actions and information from Woocommerce to Intercom.
Currently Being Work On:
Automatic updates of plugin. Scheduled for v1.1.0.
Switching from Personal Access Tokens to OAuth. Scheduled for v1.2.0.
Keys: Added. Updated. Fixed. Removed. Thanks. Security.
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 v0.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.