{"id":312311,"date":"2026-05-15T21:40:52","date_gmt":"2026-05-15T21:40:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/layersync-for-woocommerce\/"},"modified":"2026-05-15T21:45:00","modified_gmt":"2026-05-15T21:45:00","slug":"layersync-conversion-tracking","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/layersync-conversion-tracking\/","author":23498530,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.17.0","stable_tag":"1.17.0","tested":"6.9.4","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"LayerSync \u2013 Conversion Tracking, Pixel Manager, and Server-Side API","header_author":"LayerSync","header_description":"Conversion tracking for online stores. Pixel injection plus server-side Conversion API delivery to supported analytics and ad platforms through the LayerSync SaaS. Built for WooCommerce.","assets_banners_color":"e1d6fc","last_updated":"2026-05-15 21:45:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/layersynchub.com","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.17.0":{"tag":"1.17.0","author":"layersync","date":"2026-05-15 21:45:00"}},"upgrade_notice":{"1.17.0":"<p>Renamed plugin, hardened public events endpoint, moved every inline script to the WP enqueue API, and added several smaller compliance fixes for the WordPress.org Plugin Directory review.<\/p>","1.16.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3533447,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3533447,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3533447,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3533447,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.17.0"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[986,7855,985,1005,286],"plugin_category":[45],"plugin_contributors":[263122],"plugin_business_model":[],"class_list":["post-312311","plugin","type-plugin","status-publish","hentry","plugin_tags-conversion-tracking","plugin_tags-facebook-pixel","plugin_tags-google-ads","plugin_tags-google-analytics","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-layersync","plugin_committers-layersync"],"banners":{"banner":"https:\/\/ps.w.org\/layersync-conversion-tracking\/assets\/banner-772x250.png?rev=3533447","banner_2x":"https:\/\/ps.w.org\/layersync-conversion-tracking\/assets\/banner-1544x500.png?rev=3533447","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/layersync-conversion-tracking\/assets\/icon-128x128.png?rev=3533447","icon_2x":"https:\/\/ps.w.org\/layersync-conversion-tracking\/assets\/icon-256x256.png?rev=3533447","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<h4>Overview<\/h4>\n\n<p>LayerSync is server-side conversion tracking for WooCommerce. It captures ecommerce events and forwards them through the LayerSync SaaS to nine ad and analytics platforms via their server-side APIs \u2014 Meta (Conversions API), Google Analytics 4 (Measurement Protocol), Google Ads (Enhanced Conversions), TikTok (Events API), Pinterest, Snapchat, LinkedIn, Reddit, and X (Twitter).<\/p>\n\n<p>Configuration lives in the LayerSync dashboard, so there's no Google Tag Manager server container, no custom tracking subdomain, no external hosting to manage. The plugin handles WooCommerce; LayerSync handles per-platform delivery.<\/p>\n\n<h4>Why Server-Side Tracking<\/h4>\n\n<p>Browser pixels are increasingly blocked by ad-blockers and degraded by Safari\/iOS tracking-prevention. Sending the same events server-to-server restores conversion data your ad platforms use to optimize. LayerSync ships WooCommerce events over HMAC-signed HTTPS to the LayerSync hub, which calls each platform's CAPI with a shared <code>event_id<\/code> so browser and server halves are deduplicated automatically.<\/p>\n\n<h4>What's Included<\/h4>\n\n<p><strong>Nine ad platforms, one plugin<\/strong> \u2014 Meta CAPI, GA4 MP, Google Ads Enhanced Conversions, TikTok Events API, Pinterest CAPI, Snapchat CAPI, LinkedIn CAPI, Reddit CAPI, X CAPI. Browser pixels + server-side CAPI for all of them, with automatic deduplication.<\/p>\n\n<p><strong>WooCommerce funnel coverage<\/strong> \u2014 view item, add to cart, view cart, begin checkout, add payment info, purchase, refund. HPOS-compatible. Triple-fallback purchase capture (<code>payment_complete<\/code> + <code>checkout_order_processed<\/code> + <code>woocommerce_thankyou<\/code>) so custom checkouts still fire.<\/p>\n\n<p><strong>Lead-form auto-detect<\/strong> \u2014 Contact Form 7, WPForms, Ninja Forms, Formidable Forms, and WooCommerce checkout forms.<\/p>\n\n<p><strong>Browser-side recovery engine<\/strong> \u2014 save-first localStorage queue, priority-aware overflow (purchases never dropped), cross-tab serialization, exponential backoff with jitter, multi-day retention (up to 30 days for purchases), <code>sendBeacon<\/code> on page exit.<\/p>\n\n<p><strong>Privacy &amp; compliance<\/strong> \u2014 per-event consent snapshot, default-denied mode, CMP integration via <code>window.LayerSync.setConsent()<\/code>, SHA-256 PII hashing, IP anonymization, GDPR \/ UK ICO \/ CCPA-aware (Meta Limited Data Use, Do-Not-Sell drop mode).<\/p>\n\n<p><strong>Operational visibility<\/strong> (via the LayerSync hub) \u2014 real-time event status, per-platform delivery success rates, anomaly detection, Slack\/PagerDuty\/email digest alerts (paid plans).<\/p>\n\n<h4>Free vs Paid Plans<\/h4>\n\n<p><strong>Free<\/strong> includes browser pixels for all 9 platforms, server-side CAPI to one platform of your choice, 1 site, 1 team seat, 10,000 events\/month, WooCommerce + lead-form auto-tracking, event quality scoring, real-time event log.<\/p>\n\n<p><strong>Paid plans<\/strong> add: server-side CAPI to all 9 platforms, higher event quotas, multiple sites, team seats, Slack\/PagerDuty alerts, anomaly detection, audience builder, ROI dashboard, user journeys, customer profiles, automatic conversion recovery, custom event definitions, white-label (enterprise), custom ingest domain (enterprise).<\/p>\n\n<p><a href=\"https:\/\/layersynchub.com\/pricing\">Compare Plans<\/a><\/p>\n\n<h4>For Developers<\/h4>\n\n<p>LayerSync exposes a JavaScript API, a same-origin REST endpoint, and WordPress hooks for custom event tracking.<\/p>\n\n<p><strong>JavaScript API:<\/strong><\/p>\n\n<pre><code>window.LayerSync.track('lead', {email: 'user@example.com', value: 25.00, currency: 'USD'});\nwindow.LayerSync.setConsent({ad_storage: 'granted', ad_user_data: 'granted'});\n<\/code><\/pre>\n\n<p><strong>REST endpoint<\/strong> (same-origin, nonce-protected, survives ad-blockers and corporate firewalls):<\/p>\n\n<pre><code>POST \/wp-json\/layersync\/v1\/events\n<\/code><\/pre>\n\n<p><strong>WordPress filter hooks:<\/strong> <code>layersync_event_payload<\/code>, <code>layersync_event_before_enqueue<\/code>, <code>layersync_event_after_delivery<\/code>, <code>layersync_consent<\/code>.<\/p>\n\n<p>Full API documentation: <a href=\"https:\/\/layersynchub.com\/docs\">layersynchub.com\/docs<\/a>.<\/p>\n\n<h4>Compatibility<\/h4>\n\n<p>Works alongside Cookiebot, CookieYes, OneTrust, Borlabs Cookie, Complianz, and any CMP that supports a JS consent callback. Compatible with WP Rocket, LiteSpeed Cache, W3 Total Cache, Cloudflare, and other major caching\/CDN solutions.<\/p>\n\n<h4>Getting Started<\/h4>\n\n<ol>\n<li>Sign up at <a href=\"https:\/\/layersynchub.com\">layersynchub.com<\/a> and create your first site.<\/li>\n<li>Install and activate LayerSync from the WordPress plugin directory.<\/li>\n<li>Visit <strong>LayerSync \u2192 Settings<\/strong> in wp-admin and paste your API key, API secret, and Site ID.<\/li>\n<li>Click <strong>Test connection<\/strong> \u2014 once green, configure your platforms (Meta Pixel ID, GA4 Measurement ID, etc.) in the LayerSync dashboard.<\/li>\n<li>Events start firing within seconds; check the <strong>Live Events<\/strong> tab to confirm.<\/li>\n<\/ol>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to external third-party services to provide its functionality. Below is a complete list of all external services, when they are called, what data is transmitted, and links to their terms of service and privacy policies.<\/p>\n\n<p><strong>LayerSync SaaS Hub (Always Active):<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> LayerSync (https:\/\/layersynchub.com)<\/li>\n<li><strong>Purpose:<\/strong> Receives every WooCommerce \/ form \/ page event from your site and dispatches matching Conversions API calls to each connected ad platform. Stores the order ledger for conversion recovery, the queue table for outage survivability, and provides the configuration dashboard for your platforms.<\/li>\n<li><strong>What data is sent:<\/strong> Event name, timestamp, hashed user data (email, phone, name SHA-256), product\/order data (SKU, value, currency, quantity), browser-side context (page URL, referrer, user agent, IP \u2014 IP can be anonymized in settings), <code>event_id<\/code> for deduplication, consent snapshot<\/li>\n<li><strong>When it's sent:<\/strong> When a tracked event occurs (page view, product view, add to cart, purchase, refund, lead, etc.). Browser-side: sent via the same-origin REST proxy. Server-side: sent from PHP via WordPress HTTP API.<\/li>\n<li><strong>Service provider:<\/strong> LayerSync<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/layersynchub.com\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/layersynchub.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>When You Enable Meta Pixel \/ Conversions API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Meta (Facebook) Graph API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to Meta for ad optimization<\/li>\n<li><strong>What data is sent:<\/strong> Event name, timestamp, hashed user email\/phone, click ID (<code>fbclid<\/code> \/ <code>fbp<\/code> \/ <code>fbc<\/code>), product SKU, revenue, IP, user agent, Pixel ID<\/li>\n<li><strong>When it's sent:<\/strong> Automatically when a tracked event occurs and Meta is enabled in your LayerSync dashboard<\/li>\n<li><strong>Service provider:<\/strong> Meta Platforms, Inc.<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/www.facebook.com\/legal\/terms<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.facebook.com\/privacy\/policy<\/li>\n<\/ul>\n\n<p><strong>When Loading Meta Pixel Script (If Enabled):<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Facebook Connect CDN<\/li>\n<li><strong>Purpose:<\/strong> Load fbevents.js for browser-side Meta Pixel<\/li>\n<li><strong>What data is sent:<\/strong> Standard HTTP request data (IP, user agent, referrer)<\/li>\n<li><strong>When it's sent:<\/strong> On every page load when Meta browser tracking is enabled<\/li>\n<li><strong>Script URL:<\/strong> https:\/\/connect.facebook.net\/en_US\/fbevents.js<\/li>\n<\/ul>\n\n<p><strong>When You Enable Google Analytics 4 \/ Google Ads:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google Analytics 4 Measurement Protocol + Google Ads API<\/li>\n<li><strong>Purpose:<\/strong> Send analytics + conversion events to Google for reporting and ad optimization<\/li>\n<li><strong>What data is sent:<\/strong> Event name, page URL, referrer, session ID, client ID, IP, user agent, device info, hashed user data for Enhanced Conversions<\/li>\n<li><strong>Service provider:<\/strong> Google LLC<\/li>\n<li><strong>Terms of Service:<\/strong> https:\/\/marketingplatform.google.com\/about\/analytics\/terms\/us\/<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p><strong>When Loading Google Tag Script (If Enabled):<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google Tag Manager CDN<\/li>\n<li><strong>Purpose:<\/strong> Load gtag.js for browser-side GA4 + Google Ads tracking<\/li>\n<li><strong>Script URL:<\/strong> https:\/\/www.googletagmanager.com\/gtag\/js<\/li>\n<\/ul>\n\n<p><strong>When You Enable TikTok Events API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> TikTok Business API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to TikTok for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/analytics.tiktok.com\/i18n\/pixel\/events.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.tiktok.com\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>When You Enable Pinterest Conversions API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Pinterest Tag + Conversions API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to Pinterest for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/s.pinimg.com\/ct\/core.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/policy.pinterest.com\/en\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>When You Enable Snapchat Conversions API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Snap Pixel + Conversions API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to Snapchat for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/sc-static.net\/scevent.min.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/snap.com\/en-US\/privacy\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>When You Enable LinkedIn Insight Tag + Conversions API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> LinkedIn Marketing API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to LinkedIn for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/snap.licdn.com\/li.lms-analytics\/insight.min.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.linkedin.com\/legal\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>When You Enable Reddit Pixel + Conversion API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Reddit Ads API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to Reddit for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/www.redditstatic.com\/ads\/pixel.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/www.reddit.com\/policies\/privacy-policy<\/li>\n<\/ul>\n\n<p><strong>When You Enable X (Twitter) Pixel + Conversion API:<\/strong><\/p>\n\n<ul>\n<li><strong>Service:<\/strong> X Ads API<\/li>\n<li><strong>Purpose:<\/strong> Send conversion events to X for ad optimization<\/li>\n<li><strong>Script URL (if browser pixel enabled):<\/strong> https:\/\/static.ads-twitter.com\/uwt.js<\/li>\n<li><strong>Privacy Policy:<\/strong> https:\/\/x.com\/en\/privacy<\/li>\n<\/ul>\n\n<p><strong>Important Notes:<\/strong><\/p>\n\n<ul>\n<li><strong>No automatic data sharing:<\/strong> LayerSync does NOT send any data to ad platforms unless you explicitly enable them in your LayerSync dashboard<\/li>\n<li><strong>Consent-aware:<\/strong> LayerSync respects user consent state via the <code>window.LayerSync.setConsent()<\/code> API and only fires browser pixels and server events after consent is granted<\/li>\n<li><strong>You control the data:<\/strong> You choose which platforms to enable, what events to track, and what user data to include (emails, phones, etc.)<\/li>\n<li><strong>Required account:<\/strong> This plugin requires a LayerSync account to operate. The plugin alone does not function without API credentials from layersynchub.com.<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>LayerSync sends the following data to the LayerSync SaaS hub (https:\/\/layersynchub.com):<\/p>\n\n<p><strong>Per-Event Data:<\/strong><\/p>\n\n<ul>\n<li>Event name (e.g. <code>purchase<\/code>, <code>add_to_cart<\/code>)<\/li>\n<li>Timestamp<\/li>\n<li>Page URL and referrer<\/li>\n<li>User agent<\/li>\n<li>IP address (configurable \u2014 can be anonymized)<\/li>\n<li><code>event_id<\/code> for deduplication<\/li>\n<li>Visitor consent snapshot at the moment of the event<\/li>\n<li>LayerSync first-party visitor ID (<code>layersync_uid<\/code> cookie \u2014 UUIDv4, 2-year sliding expiry)<\/li>\n<\/ul>\n\n<p><strong>For E-Commerce Events:<\/strong><\/p>\n\n<ul>\n<li>Product SKU, title, category, image URL, price, currency, quantity<\/li>\n<li>Order ID, total, currency (for purchase \/ refund events)<\/li>\n<\/ul>\n\n<p><strong>For Lead \/ Form Events:<\/strong><\/p>\n\n<ul>\n<li>Form ID, submission ID, field values you've configured as trackable<\/li>\n<\/ul>\n\n<p><strong>Hashed User Data (when available, hashed BEFORE leaving your server):<\/strong><\/p>\n\n<ul>\n<li>Email (SHA-256)<\/li>\n<li>Phone (SHA-256)<\/li>\n<li>First name (SHA-256)<\/li>\n<li>Last name (SHA-256)<\/li>\n<li>City, state, zip, country (SHA-256)<\/li>\n<\/ul>\n\n<p>LayerSync hashes PII server-side before forwarding to any ad platform.<\/p>\n\n<p><strong>External Data Sharing (Only When You Enable Each Platform):<\/strong><\/p>\n\n<p>Per-platform data forwarding is documented in the <strong>External services<\/strong> section above. No data is sent to any ad platform unless you explicitly enable it in your LayerSync dashboard.<\/p>\n\n<p><strong>Privacy Controls:<\/strong><\/p>\n\n<ul>\n<li><strong>IP Anonymization:<\/strong> Available in Settings \u2192 Privacy.<\/li>\n<li><strong>Consent Integration:<\/strong> Respects <code>window.LayerSync.setConsent({...})<\/code> for Cookiebot, CookieYes, OneTrust, Borlabs Cookie, Complianz, and custom consent managers.<\/li>\n<li><strong>Default-denied mode:<\/strong> Treats all visitors as consent-denied until a CMP signals otherwise \u2014 suitable for EU\/UK traffic.<\/li>\n<li><strong>Right to delete:<\/strong> Send a <code>POST \/api\/v1\/privacy\/delete<\/code> request to LayerSync with the visitor's <code>external_id<\/code> (or hashed email \/ phone) and all matching events, audit rows, customer profile entries, landing signals, and delivery records are removed.<\/li>\n<\/ul>\n\n<p><strong>Your Responsibilities:<\/strong><\/p>\n\n<ul>\n<li>Disclose LayerSync's data flow in your site's privacy policy<\/li>\n<li>Obtain user consent before tracking, where required by law<\/li>\n<li>Configure data retention and privacy settings appropriately<\/li>\n<li>Honor user data-deletion requests via the LayerSync privacy API<\/li>\n<\/ul>\n\n<h3>Support<\/h3>\n\n<ul>\n<li><a href=\"https:\/\/layersynchub.com\/docs\">Documentation<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/layersync-conversion-tracking\">Support<\/a><\/li>\n<li><a href=\"https:\/\/layersynchub.com\/contact\">Contact us<\/a><\/li>\n<\/ul>\n\n<h3>Trademarks &amp; Third-Party Services<\/h3>\n\n<p>LayerSync integrates with various third-party analytics and advertising platforms. All trademarks, service marks, and company names mentioned in this plugin are the property of their respective owners.<\/p>\n\n<p><strong>Third-Party Platforms:<\/strong><\/p>\n\n<ul>\n<li>Meta, Facebook, Instagram, and Facebook Pixel are trademarks of Meta Platforms, Inc.<\/li>\n<li>Google, Google Analytics, Google Ads, and GA4 are trademarks of Google LLC.<\/li>\n<li>TikTok is a trademark of ByteDance Ltd.<\/li>\n<li>Pinterest is a trademark of Pinterest, Inc.<\/li>\n<li>Snapchat is a trademark of Snap Inc.<\/li>\n<li>LinkedIn is a trademark of Microsoft Corporation.<\/li>\n<li>X (Twitter) is a trademark of X Corp.<\/li>\n<li>Reddit is a trademark of Reddit, Inc.<\/li>\n<li>WooCommerce is a trademark of Automattic, Inc.<\/li>\n<\/ul>\n\n<p><strong>Integration Requirements:<\/strong><\/p>\n\n<ul>\n<li>Users must have active accounts with third-party platforms to use their respective features<\/li>\n<li>API access requires platform-specific credentials and compliance with their terms of service<\/li>\n<li>Data transmission follows each platform's API specifications and privacy policies<\/li>\n<li>Users are responsible for compliance with each platform's terms of service<\/li>\n<\/ul>\n\n<p>LayerSync is an independent plugin and SaaS, and is not officially affiliated with, endorsed by, or sponsored by any of the companies mentioned above. All product names, logos, brands, and trademarks are property of their respective owners.<\/p>\n\n<p><strong>Data Privacy:<\/strong> LayerSync forwards event data to enabled ad platforms only with user consent. No data is transmitted to any third party unless explicitly configured by the site administrator.<\/p>\n\n<!--section=installation-->\n<h4>From WordPress Admin<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong><\/li>\n<li>Search for <strong>\"LayerSync\"<\/strong><\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual Upload<\/h4>\n\n<ol>\n<li>Download the ZIP from WordPress.org<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong><\/li>\n<li>Upload the ZIP, install, and activate<\/li>\n<\/ol>\n\n<h4>After Activation<\/h4>\n\n<ol>\n<li>Sign up at <a href=\"https:\/\/layersynchub.com\">layersynchub.com<\/a> if you haven't already<\/li>\n<li>Create a site in your LayerSync dashboard and copy your API key, API secret, and Site ID<\/li>\n<li>Go to <strong>LayerSync \u2192 Settings<\/strong> in wp-admin<\/li>\n<li>Paste your credentials and click <strong>Test connection<\/strong><\/li>\n<li>Once green, configure your ad platforms (Meta Pixel ID, GA4 Measurement ID, etc.) in your LayerSync dashboard<\/li>\n<li>Events start firing automatically; verify in the <strong>Live Events<\/strong> tab<\/li>\n<\/ol>\n\n<p>WooCommerce is recommended but not required \u2014 without WC, the plugin runs in pixel-only mode (no add-to-cart \/ purchase hooks, but browser pixels still fire and lead-form tracking works).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20layersync%20improve%20roas%20and%20lower%20cpa%3F\"><h3>How does LayerSync improve ROAS and lower CPA?<\/h3><\/dt>\n<dd><p>When browser-side pixels miss conversions (due to iOS 14+, ad blockers, or cookie restrictions), ad platforms optimize on incomplete data and your cost-per-acquisition rises. LayerSync fixes this by sending conversion events <strong>server-to-server<\/strong> to every connected platform via their respective Conversions API. Browser and server events are deduplicated automatically using a shared <code>event_id<\/code>, so platforms see more of your real conversions without double-counting. More complete data means better optimization and improved Return on Ad Spend.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20meta%20pixel%20with%20server-side%20tracking%3F\"><h3>How do I set up Meta Pixel with server-side tracking?<\/h3><\/dt>\n<dd><ol>\n<li>Install and activate LayerSync<\/li>\n<li>Sign up at <a href=\"https:\/\/layersynchub.com\">layersynchub.com<\/a> and create your site<\/li>\n<li>In your LayerSync dashboard, go to <strong>Platforms \u2192 Meta<\/strong> and paste your Pixel ID + Conversions API Access Token (both from Meta Events Manager)<\/li>\n<li>Save and click <strong>Test Connection<\/strong><\/li>\n<\/ol>\n\n<p>LayerSync automatically fires both the browser Meta Pixel and Meta Conversions API events server-to-server. They're deduplicated using a shared <code>event_id<\/code>. User data (email, phone, name, address) is SHA-256 hashed and sent as Advanced Matching parameters for maximum Event Match Quality (EMQ). No Google Tag Manager server container required.<\/p><\/dd>\n<dt id=\"what%20is%20server-side%20tracking%20and%20why%20do%20i%20need%20it%3F\"><h3>What is server-side tracking and why do I need it?<\/h3><\/dt>\n<dd><p>Server-side tracking sends conversion events directly from your server to ad platforms \u2014 instead of relying only on browser JavaScript pixels. This matters because:<\/p>\n\n<ul>\n<li><strong>Ad blockers<\/strong> block ~40% of browser tracking pixels<\/li>\n<li><strong>iOS 14+ App Tracking Transparency<\/strong> reduced Meta Pixel reported conversions by 30\u201340%<\/li>\n<li><strong>Safari ITP<\/strong> limits first-party cookies to 7 days, causing session data loss<\/li>\n<li><strong>Browser privacy features<\/strong> increasingly restrict third-party tracking<\/li>\n<\/ul>\n\n<p>With server-side tracking, your conversion data bypasses all browser restrictions. Ad platforms see your real sales, optimize better, and your ROAS improves.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20layersync%20account%3F\"><h3>Do I need a LayerSync account?<\/h3><\/dt>\n<dd><p>Yes. This plugin connects WordPress to the LayerSync SaaS, which performs the actual server-to-server dispatch to each ad platform. The LayerSync account is what configures which platforms are enabled, stores your API credentials encrypted, and runs the queue + recovery worker. A free plan is available.<\/p><\/dd>\n<dt id=\"how%20many%20ad%20platforms%20does%20layersync%20support%3F\"><h3>How many ad platforms does LayerSync support?<\/h3><\/dt>\n<dd><p>Nine: Meta (Facebook &amp; Instagram), Google Ads, Google Analytics 4, TikTok, Pinterest, Snapchat, LinkedIn, Reddit, and X (Twitter). All nine are server-side, all nine are available on paid plans. The free plan supports browser pixels for all 9 and server-side CAPI for one of your choice.<\/p><\/dd>\n<dt id=\"does%20layersync%20work%20with%20woocommerce%3F\"><h3>Does LayerSync work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. LayerSync automatically tracks the full WooCommerce funnel: product view \u2192 add to cart \u2192 view cart \u2192 begin checkout \u2192 add payment info \u2192 purchase \u2192 refund. Order metadata (value, SKU, currency, quantity, category) is captured automatically. HPOS-compatible. Triple-fallback purchase hook (payment_complete + checkout_processed + thankyou) ensures no transaction is missed.<\/p><\/dd>\n<dt id=\"what%20about%20easy%20digital%20downloads%2C%20surecart%2C%20memberpress%3F\"><h3>What about Easy Digital Downloads, SureCart, MemberPress?<\/h3><\/dt>\n<dd><p>The current release covers WooCommerce and any custom integration via the JavaScript \/ REST APIs. Support for additional ecommerce platforms is on the roadmap.<\/p><\/dd>\n<dt id=\"does%20layersync%20slow%20down%20my%20website%3F\"><h3>Does LayerSync slow down my website?<\/h3><\/dt>\n<dd><p>No. The browser tracking script loads asynchronously (non-blocking), events are batched server-side, the same-origin REST proxy is lightweight, and the plugin uses indexed database tables. Compatible with WP Rocket, LiteSpeed Cache, W3 Total Cache, Cloudflare, and other caching\/CDN solutions. The browser-side recovery queue uses localStorage with strict size limits \u2014 no measurable impact on page load.<\/p><\/dd>\n<dt id=\"does%20layersync%20work%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Does LayerSync work with High-Performance Order Storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. LayerSync is fully compatible with WooCommerce HPOS. WC order data is read via the standard <code>wc_get_order()<\/code> API which abstracts over both storage modes.<\/p><\/dd>\n<dt id=\"is%20layersync%20gdpr%20and%20ccpa%20compliant%3F\"><h3>Is LayerSync GDPR and CCPA compliant?<\/h3><\/dt>\n<dd><p>Yes. The plugin captures per-event consent state and respects it during retries. There's an admin toggle for \"default to denied until consent\" suitable for EU\/UK traffic. CMPs integrate via <code>window.LayerSync.setConsent({ad_storage: 'granted', ad_user_data: 'granted', ad_personalization: 'granted'})<\/code>. PII (email, phone, name, address) is SHA-256 hashed server-side before any platform handoff. IP anonymization is supported.<\/p><\/dd>\n<dt id=\"does%20layersync%20support%20google%20consent%20mode%20v2%3F\"><h3>Does LayerSync support Google Consent Mode v2?<\/h3><\/dt>\n<dd><p>Yes \u2014 via the <code>setConsent()<\/code> API. Pass the v2 fields (<code>ad_user_data<\/code>, <code>ad_personalization<\/code>) and LayerSync forwards them to Google's gtag in the correct shape.<\/p><\/dd>\n<dt id=\"does%20layersync%20support%20meta%20limited%20data%20use%20%28ldu%29%20for%20california%20traffic%3F\"><h3>Does LayerSync support Meta Limited Data Use (LDU) for California traffic?<\/h3><\/dt>\n<dd><p>Yes. The Privacy tab has an LDU toggle. When enabled, every Meta server event ships with <code>data_processing_options: ['LDU']<\/code> so California-resident traffic is CCPA-compliant.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20layersync%27s%20saas%20goes%20down%3F\"><h3>What happens if LayerSync's SaaS goes down?<\/h3><\/dt>\n<dd><p>Browser pixels keep firing directly to ad platforms (they're independent of the LayerSync hub). Server-side events queue in your WordPress database for up to 30 days for critical events (purchases, refunds), 7 days for high-value funnel events (add-to-cart, begin-checkout, lead), and shorter windows for behavioral events. When LayerSync recovers, the queue drains automatically without intervention.<\/p><\/dd>\n<dt id=\"can%20i%20track%20custom%20events%3F\"><h3>Can I track custom events?<\/h3><\/dt>\n<dd><p>Yes. Use the JavaScript API:<\/p>\n\n<pre><code>window.LayerSync.track('button_click', {button_name: 'Download PDF', value: 0});\n<\/code><\/pre>\n\n<p>Or the REST endpoint from your own PHP code:<\/p>\n\n<pre><code>POST \/wp-json\/layersync\/v1\/events\n<\/code><\/pre>\n\n<p>Custom event definitions per site (with per-platform name mapping) are available on paid plans.<\/p><\/dd>\n<dt id=\"can%20i%20export%20my%20data%3F\"><h3>Can I export my data?<\/h3><\/dt>\n<dd><p>Yes. Every report in the LayerSync dashboard has a CSV export. You can also pull data programmatically via the REST API on paid plans.<\/p><\/dd>\n<dt id=\"does%20layersync%20replace%20my%20existing%20pixel%20plugins%3F\"><h3>Does LayerSync replace my existing pixel plugins?<\/h3><\/dt>\n<dd><p>Yes. The plugin loads each platform's pixel SDK directly from the platform CDN with hashed Advanced Matching set at init time. You can disable any other Meta\/Google\/TikTok pixel plugins. Don't run two plugins that load the same pixel \u2014 both will fire, doubling your conversion counts.<\/p><\/dd>\n<dt id=\"can%20i%20use%20layersync%20on%20client%20sites%20%2F%20agency%20white-label%3F\"><h3>Can I use LayerSync on client sites \/ agency white-label?<\/h3><\/dt>\n<dd><p>Yes. The free WordPress plugin can be installed on unlimited sites. Each site connects to one LayerSync account. Agencies running multiple client stores use the Growth or Enterprise tiers, which include white-label branding, custom ingest domain, and multi-site management from a single dashboard.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20free%20and%20paid%20plans%3F\"><h3>What's the difference between Free and Paid plans?<\/h3><\/dt>\n<dd><p><strong>Free<\/strong> includes: browser pixels for all 9 platforms, server-side CAPI to one platform of your choice, 1 site, 1 team seat, 10K events\/month, WooCommerce + lead-form auto-tracking, event quality scoring, real-time event log.<\/p>\n\n<p><strong>Paid plans<\/strong> add: server-side CAPI to all 9 platforms, higher event quotas, multiple sites, team seats, Slack\/PagerDuty alerts, anomaly detection, audience builder, ROI dashboard, user journeys, customer profiles, automatic conversion recovery, custom event definitions, white-label (enterprise), custom ingest domain (enterprise).<\/p>\n\n<p><a href=\"https:\/\/layersynchub.com\/pricing\">Compare Plans<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.17.0<\/h4>\n\n<ul>\n<li>Renamed plugin to better describe what it does: \"LayerSync for WooCommerce \u2013 Conversion Tracking, Server-Side API, Pixel Manager, GA4\".<\/li>\n<li>Hardened the public events endpoint: same-origin nonce check, per-IP rate limit, body-size cap, and a block on <code>purchase<\/code> \/ <code>refund<\/code> events (those flow only through the WooCommerce server hook now).<\/li>\n<li>Refactored every inline <code>&lt;script&gt;<\/code> to ship through <code>wp_add_inline_script<\/code> against registered handles, in line with the WordPress Plugin Directory's enqueue-API guideline.<\/li>\n<li>Replaced closure-based <code>register_setting()<\/code> sanitize callbacks with named static methods so static-analysis tools can resolve them.<\/li>\n<li>Scoped the \"Not connected\" admin notice to the Dashboard, Plugins list, and WooCommerce Settings only \u2014 no more banner on every admin page.<\/li>\n<li>CSV queue export now neutralizes leading <code>=<\/code>, <code>+<\/code>, <code>-<\/code>, <code>@<\/code> characters to prevent spreadsheet formula injection when an admin opens the file.<\/li>\n<li>Declared <code>Requires Plugins: woocommerce<\/code>; bumped <code>Requires at least<\/code> to 6.5.<\/li>\n<\/ul>\n\n<h4>1.16.0<\/h4>\n\n<p>Initial public release.<\/p>\n\n<ul>\n<li>Browser pixel injection for 9 ad platforms: Meta (Facebook &amp; Instagram), Google Tag (GA4), Google Ads, TikTok, Snapchat, Pinterest, Reddit, X (Twitter), and LinkedIn.<\/li>\n<li>Server-side Conversions API forwarding via the LayerSync hub \u2014 one connection, every platform.<\/li>\n<li>Same-origin REST proxy keeps event delivery working through ad-blockers and corporate firewalls.<\/li>\n<li>Browser-side resilience: events queue locally during outages and drain automatically when connectivity returns.<\/li>\n<li>Lead-form tracking for Contact Form 7, WPForms, Ninja Forms, and Formidable.<\/li>\n<li>Privacy-first: per-event consent capture, CMP integration via <code>window.LayerSync.setConsent({...})<\/code>, IP anonymization, and SHA-256 PII hashing before any platform handoff.<\/li>\n<li>Catalog sync to LayerSync for one product feed URL consumed by every connected platform.<\/li>\n<\/ul>","raw_excerpt":"Conversion tracking for online stores. Pixel injection plus server-side Conversion API delivery, built for WooCommerce.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/312311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=312311"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/layersync"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=312311"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=312311"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=312311"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=312311"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=312311"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=312311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}