=== ActiveTrail for WooCommerce ===



Tags: activetrail ,ActiveTrail, ActiveTrail for WooCommerce, ActiveTrail WooCommerce, email marketing , automation
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.2.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html


Integration plugin that connects WooCommerce with ActiveTrail for data synchronization via API.


== Description ==


ActiveTrail for WooCommerce is an integration plugin that enables a simple and efficient connection between a WooCommerce store and the ActiveTrail platform.


The plugin allows synchronizing core store data from WooCommerce to ActiveTrail, including contacts, orders, products, and site activity events.  
It supports both historical synchronization of existing data and online (real-time) synchronization of new data.


The connection is established using an API key from the site owner’s ActiveTrail account and is configured through the WordPress admin interface.  
No additional development is required.


== Key Features ==


= Order and Subscriber Synchronization =
- Automatic synchronization of orders and subscribers from the website to ActiveTrail  
- Transfer of customer data, order details, and activity events  
- Synchronization respects the user's marketing consent status based on data stored on the site  


= Marketing Consent Management =
- Add marketing consent checkboxes to the checkout page  
- Add marketing consent checkboxes to registration forms  
- Store and validate consent status using user metadata fields  


= Historical Synchronization =
- Historical synchronization of existing contacts  
- Option to synchronize contacts only or contacts together with orders  
- Automatic scanning of commonly used metadata fields to verify previously given marketing consent  


= Cart Abandonment Tracking =
- Detection and tracking of abandoned carts on the site  
- Sending abandoned cart data to ActiveTrail  
- Cart tracking applies to registered users only  


= Dynamic Product Catalog Generation =
- Generation of product catalogs in XML format for:
  - Facebook Catalog  
  - Google Merchant Center  
- Catalogs are updated automatically in real time when products are added, updated, or deleted  


== Installation ==


= Automatic Installation =
1. Log in to your WordPress admin dashboard.  
2. Go to Plugins > Add New.  
3. Search for "ActiveTrail for WooCommerce".  
4. Click "Install Now" and then "Activate".  


= Manual Installation =
1. Download the plugin ZIP file.  
2. Go to Plugins > Add New > Upload Plugin.  
3. Upload the ZIP file and activate the plugin.  


= Configuration =
1. Go to WooCommerce > Settings > ActiveTrail.  
2. Enter your ActiveTrail API key.  
3. Select the target group to which the synchronized data will be sent.  
4. Save the settings.  


The plugin is now ready to synchronize data between WooCommerce and ActiveTrail.


== Frequently Asked Questions ==


= Do I need an ActiveTrail account? =
Yes. An active ActiveTrail account and API key are required to use this plugin.


= Where can I find my API key? =
In your ActiveTrail account, go to the main menu and select API > API Keys. Create a new API key and copy the generated code.


= Where is the synchronized data sent? =
During configuration, you can select a target group in ActiveTrail to which the synchronized data will be sent.


= Does the plugin support historical synchronization? =
Yes. The plugin supports historical synchronization of existing contacts, with an option to include orders.


= How is marketing consent handled during online synchronization? =
During online synchronization, the plugin allows adding a marketing consent checkbox to the registration page or the checkout page. Based on the selection, the recipient is synchronized with the appropriate marketing consent status.


= How is marketing consent handled during historical synchronization? =
During historical synchronization, the system scans commonly used user metadata fields to determine marketing consent status. Accuracy is high, but consent status cannot be guaranteed in all cases.


= Does the plugin support cart abandonment tracking? =
Yes. The plugin tracks abandoned carts and sends the relevant cart data to ActiveTrail.


= Is WooCommerce required? =
Yes. WooCommerce must be installed and activated for this plugin to work.


== Screenshots ==
1. Plugin settings page with API configuration
2. Marketing consent checkbox configuration


== Privacy Policy ==


ActiveTrail for WooCommerce transfers data via API to the site owner’s ActiveTrail account in order to synchronize information between WooCommerce and ActiveTrail.


The plugin respects the user's marketing consent status.


The data sent to ActiveTrail may include:
- Information submitted through registration forms  
- Information submitted during order checkout  
- Shopping cart data in cases of cart abandonment, for registered users only  


== Third-party Services ==


This plugin integrates with the ActiveTrail platform.


Service provider: ActiveTrail  
Purpose: Synchronization of contacts, orders, cart data, and generation of product catalogs via API  


Relevant policies:
- Anti-Spam Policy: https://www.activetrail.com/anti_spam_policy/
- Privacy Policy: https://www.activetrail.com/privacy_policy/
- Data Processing Agreement (DPA): https://www.activetrail.com/dpa/
- Terms and Conditions: https://www.activetrail.com/terms-and-conditions/
- ISO 27001 Certification: https://www.activetrail.com/iso-27001/


== Changelog ==


= 1.2.5 =
* Fix: Resolved a fatal error ("TypeError: Unsupported operand types: int * string") when adding a variable product (or a product with an empty price) to the cart on PHP 8+. Prices are now safely cast before calculation, so add-to-cart tracking works across all PHP versions.
* Fix: Hardened purchase event tracking against a division-by-zero fatal on order items with a zero quantity.

= 1.2.4 =
* Improvement: Increased API request timeout to 40 seconds to reduce historical sync failures ("cURL error 28: Operation timed out") on stores with larger contact lists
* Compatibility: Declared High-Performance Order Storage (HPOS) compatibility so the plugin no longer appears as incompatible under WooCommerce > Settings > Advanced > Features

= 1.2.3 =
* Fix: Product feed XML no longer breaks when product content contains invalid control characters (e.g. content pasted from Word or Excel)

= 1.2.2 =
* Fix: Product feed image URLs with non-ASCII characters (e.g. Hebrew filenames) are now properly percent-encoded so they are accepted by Google Merchant Center and Facebook Catalog

= 1.2.1 =
* Fix: Product feed image URLs are now always absolute (prevents relative URL issue on migrated or misconfigured hosts)
* Fix: Product and variation links now fall back to home URL if permalink is unavailable
* Fix: Variation image fallback to parent image now works correctly after absolute URL normalization
* Fix: Sale price no longer outputs 0.00 for scheduled sales with an empty sale price field
* Fix: HTML entities in product titles, descriptions, brands, and categories are no longer double-encoded in the XML feed

= 1.2.0 =
* Fix: Product feed now always includes a description (falls back to product title if description and short description are both empty)
* Fix: Product feed now always includes a MPN/SKU value (falls back to product ID if no SKU is set)
* Fix: Product feed now always includes a product type (falls back to "Uncategorized" if no category is assigned)

= 1.1.9 =
* Fix: Connect Store now always includes the XML catalog URI in the API payload (removed unreliable loopback self-test that silently dropped the catalog URL in most hosting environments)

= 1.1.8 =
* Fix: Product XML catalog feed now correctly loads products (resolved hook priority race condition with WooCommerce post type registration)
* Fix: Admin success messages (API key saved, group saved, store connected) now auto-dismiss after 3 seconds

= 1.0.0 =
= 1.0.1 =
= 1.0.2 =
= 1.0.3 =
= 1.0‪.‬4 =
= 1.0‪.‬5 =
= 1.0‪.‬6 =