{"id":308219,"date":"2026-05-11T23:38:02","date_gmt":"2026-05-11T23:38:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/capiflow-meta-pixel-conversions-api-capi-for-woocommerce\/"},"modified":"2026-09-27T21:18:04","modified_gmt":"2026-09-27T21:18:04","slug":"capiflow","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/capiflow\/","author":23492201,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.3","stable_tag":"1.1.3","tested":"7.0.6","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"CapiFlow \u2013 Conversions API (CAPI) Tracking for WooCommerce","header_author":"CapiFlow","header_description":"Server-side Meta Conversions API (CAPI) tracking for WooCommerce. Maximize ad attribution with browser pixel deduplication, 10\/10 Event Match Quality, fraud alerts, and an analytics dashboard.","assets_banners_color":"3b3c5a","last_updated":"2026-09-27 21:18:04","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/capiflowpro.com\/capiflow\/","header_author_uri":"https:\/\/capiflowpro.com\/about\/","rating":5,"author_block_rating":0,"active_installs":10,"downloads":686,"num_ratings":3,"support_threads":3,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"capiflow","date":"2026-05-22 01:36:43","revision":3542991},"1.0.1":{"tag":"1.0.1","author":"capiflow","date":"2026-05-22 01:36:43","revision":3542991},"1.0.2":{"tag":"1.0.2","author":"capiflow","date":"2026-07-28 19:47:13","revision":3626392},"1.1.0":{"tag":"1.1.0","author":"capiflow","date":"2026-08-20 18:31:00","revision":3657556},"1.1.1":{"tag":"1.1.1","author":"capiflow","date":"2026-08-20 19:11:42","revision":3657654},"1.1.2":{"tag":"1.1.2","author":"capiflow","date":"2026-09-19 05:50:02","revision":3702970},"1.1.3":{"tag":"1.1.3","author":"capiflow","date":"2026-09-27 21:18:04","revision":3716063}},"upgrade_notice":{"1.1.3":"<p>Fixes E.164 domestic trunk-zero phone normalization bug affecting Meta Advanced Matching accuracy. Adds <code>hash_postcode()<\/code> alias and <code>get_universal_uid()<\/code> for first-party visitor tracking. Recommended update.<\/p>","1.1.2":"<p>Fixes European and international currency price inflation\/zero-value bug on AddToCart events across classic and block themes, introduces universal price normalization, and prevents false AddToCart triggers on unselected variations. Highly recommended update for all stores.<\/p>","1.1.1":"<p>Fixes Meta Events Manager &quot;predicted_ltv invalid value&quot; warning. The predicted_ltv field is now only included when COGS data exists.<\/p>","1.1.0":"<p>Major catalog alignment release: configurable Content ID Strategy (SKU\/Parent SKU\/Product ID), Search content_ids, Order Source Filter for marketplace integrations, Guard 5 and Guard 6 for Purchase events, and tax-parity item pricing. Upgrade recommended for all Dynamic Ads users.<\/p>","1.0.2":"<p>Fixes issue where pre-existing orders created before plugin installation triggered invalid Purchase events upon status changes.<\/p>","1.0.1":"<p>WordPress 7.0 compatibility release.<\/p>","1.0.0":"<p>Initial public release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3529278,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3529278,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3529278,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3529278,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.1.1","1.1.2","1.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3531074,"resolution":"1","location":"assets","locale":"","width":695,"height":725},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3529278,"resolution":"10","location":"assets","locale":"","width":852,"height":355},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3529278,"resolution":"2","location":"assets","locale":"","width":1366,"height":1839},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3531074,"resolution":"3","location":"assets","locale":"","width":1191,"height":532},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3531074,"resolution":"4","location":"assets","locale":"","width":900,"height":993},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3531074,"resolution":"5","location":"assets","locale":"","width":911,"height":940},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3531074,"resolution":"6","location":"assets","locale":"","width":909,"height":548},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3529278,"resolution":"7","location":"assets","locale":"","width":1204,"height":476},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3529278,"resolution":"8","location":"assets","locale":"","width":405,"height":555},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3529278,"resolution":"9","location":"assets","locale":"","width":998,"height":547}},"screenshots":{"1":"<strong>Setup Wizard<\/strong> \u2014 Guided first-time configuration","2":"<strong>Settings Page<\/strong> \u2014 Pixel ID, Access Token, and connection test","3":"<strong>Analytics Dashboard<\/strong> \u2014 Event tracking overview","4":"<strong>Event Configuration<\/strong> \u2014 Per-event browser and server toggles","5":"<strong>System Health<\/strong> \u2014 Token validity and queue status","6":"<strong>Debug Console<\/strong> \u2014 Event log with API responses","7":"<strong>Order Columns<\/strong> \u2014 CAPI sync status in order list","8":"<strong>Pixel Helper<\/strong> \u2014 Browser and server event verification","9":"<strong>Event Test Tool<\/strong> \u2014 All events delivery status","10":"<strong>Purchase Event<\/strong> \u2014 Server-side Purchase with API response"}},"plugin_section":[262246],"plugin_tags":[195844,7855,207498,219244,286],"plugin_category":[36,45],"plugin_contributors":[262612],"plugin_business_model":[],"class_list":["post-308219","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-conversions-api","plugin_tags-facebook-pixel","plugin_tags-meta-pixel","plugin_tags-server-side-tracking","plugin_tags-woocommerce","plugin_category-analytics","plugin_category-ecommerce","plugin_contributors-capiflow","plugin_committers-capiflow"],"banners":{"banner":"https:\/\/ps.w.org\/capiflow\/assets\/banner-772x250.png?rev=3529278","banner_2x":"https:\/\/ps.w.org\/capiflow\/assets\/banner-1544x500.png?rev=3529278","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/capiflow\/assets\/icon-128x128.png?rev=3529278","icon_2x":"https:\/\/ps.w.org\/capiflow\/assets\/icon-256x256.png?rev=3529278","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-1.png?rev=3531074","caption":"<strong>Setup Wizard<\/strong> \u2014 Guided first-time configuration"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-2.png?rev=3529278","caption":"<strong>Settings Page<\/strong> \u2014 Pixel ID, Access Token, and connection test"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-3.png?rev=3531074","caption":"<strong>Analytics Dashboard<\/strong> \u2014 Event tracking overview"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-4.png?rev=3531074","caption":"<strong>Event Configuration<\/strong> \u2014 Per-event browser and server toggles"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-5.png?rev=3531074","caption":"<strong>System Health<\/strong> \u2014 Token validity and queue status"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-6.png?rev=3531074","caption":"<strong>Debug Console<\/strong> \u2014 Event log with API responses"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-7.png?rev=3529278","caption":"<strong>Order Columns<\/strong> \u2014 CAPI sync status in order list"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-8.png?rev=3529278","caption":"<strong>Pixel Helper<\/strong> \u2014 Browser and server event verification"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-9.png?rev=3529278","caption":"<strong>Event Test Tool<\/strong> \u2014 All events delivery status"},{"src":"https:\/\/ps.w.org\/capiflow\/assets\/screenshot-10.png?rev=3529278","caption":"<strong>Purchase Event<\/strong> \u2014 Server-side Purchase with API response"}],"raw_content":"<!--section=description-->\n<p><strong>CapiFlow<\/strong> is a 100% self-hosted, enterprise-grade server-side tracking engine for WooCommerce. Send conversion events directly from your WordPress server to the <strong>Meta Conversions API (CAPI)<\/strong> with zero cloud hosting bills, 3-click setup, and intelligent algorithm protection.<\/p>\n\n<p>Unlike conventional tracking tools, CapiFlow eliminates the need for expensive external server containers (saving you $240+\/year), ensures 0ms checkout speed impact, and prevents fake or unverified orders from corrupting your Meta ad optimization.<\/p>\n\n<p>42% of online shoppers run ad blockers, and Apple Safari ITP silently wipes out 30%\u201340% of standard browser pixel conversions. CapiFlow restores your lost revenue attribution by bypassing browser restrictions completely \u2014 sending high-fidelity conversion events directly from your WordPress server to Meta Events Manager.<\/p>\n\n<h4>For Store Owners &amp; Media Buyers<\/h4>\n\n<ul>\n<li><strong>For WooCommerce Store Owners:<\/strong> Maximize real ROAS, stop fake Cash-on-Delivery (COD) orders from poisoning your ad optimization, and save $240\u2013$1,200\/year in cloud server bills.<\/li>\n<li><strong>For Media Buyers &amp; Agencies:<\/strong> Achieve 9.0+ Event Match Quality (EMQ), 100% deterministic deduplication, and 180-day Safari ITP first-party cookie attribution without touching GTM.<\/li>\n<\/ul>\n\n<h4>\ud83d\udcb0 Save $240+\/Year \u2014 100% Self-Hosted ($0 Cloud Hosting Fees)<\/h4>\n\n<p>Why pay <strong>$20 to $100 every single month<\/strong> to third-party services like Stape.io, Google Cloud, or AWS just to run a server GTM container?<\/p>\n\n<ul>\n<li><strong>Zero Cloud Bills:<\/strong> CapiFlow runs 100% natively on your existing WordPress server.<\/li>\n<li><strong>Unlimited Events:<\/strong> Track unlimited page views, carts, and purchases without event tier limits or surprise overage charges.<\/li>\n<li><strong>No GTM Required (3-Click Setup):<\/strong> Completely removes web\/server GTM container complexity, triggers, and dataLayer debugging. Simply paste your Pixel ID and Access Token, toggle on, and click Save. Setup takes under 3 minutes.<\/li>\n<\/ul>\n\n<h4>\ud83d\ude80 Zero-GTM Nightmare \u2014 Skip 25+ Tags, Containers &amp; Hours of Debugging Hell<\/h4>\n\n<p><strong>95% of store owners are not tracking engineers or programmers.<\/strong> You got into e-commerce to sell great products and grow your brand \u2014 not to spend your weekends configuring complex tracking infrastructure:<\/p>\n\n<ul>\n<li><strong>The 4-Layer GTM Nightmare (Designed for Coders):<\/strong> Traditional server tracking forces merchants through an excruciating technical gauntlet:\n\n<ol>\n<li>Build TWO Separate GTM Containers: Must create and juggle both a Web and a Server GTM container.<\/li>\n<li>Write 25+ Custom DataLayer Variables (DLVs): Manually mapping <code>ecommerce.items.price<\/code>, <code>currency<\/code>, <code>user_data.email<\/code>, <code>transaction_id<\/code>, etc.<\/li>\n<li>Configure Complex Triggers &amp; Client Templates: Manually setting triggers for every event and configuring HTTP client request templates.<\/li>\n<li>Connect Stape.io or GCP Custom Domains: Setting up DNS records, provisioning SSL certificates, and configuring transport URLs.<\/li>\n<\/ol><\/li>\n<li><strong>The Silent Attribution Killer (Zero Error Warnings):<\/strong> In GTM, a single missing comma, an <code>event_id<\/code> mismatch between web and server containers, or a tiny dataLayer discrepancy (like <code>ecommerce.items<\/code> vs. <code>items<\/code>) breaks tracking completely in silence. Your store shows ZERO error messages, yet data stops reaching Meta, Event Match Quality (EMQ) plummets to 3\/10, Meta's AI optimization flies blind, and your ad costs (CPA) double without warning! Most store owners end up spending $150\u2013$300 hiring tracking freelancers just to debug the mess.<\/li>\n<li><strong>The CapiFlow 3-Click Freedom:<\/strong> Everything is 100% pre-engineered, native, and automated. No GTM containers. No dataLayer code. No tags or triggers to configure:\n\n<ol>\n<li>Paste your Pixel ID &amp; Meta Access Token.<\/li>\n<li>Toggle the events you want to track.<\/li>\n<li>Click Save &amp; Test Connection.\nSetup takes under 3 minutes, saves you $150\u2013$300 in agency setup fees, eliminates debugging headaches forever, and delivers a 9+ EMQ score straight out of the box!<\/li>\n<\/ol><\/li>\n<\/ul>\n\n<h4>\ud83d\udee1\ufe0f Confirmed Purchase Control (Ad Algorithm Anti-Poisoning)<\/h4>\n\n<p><strong>The Competitor Flaw:<\/strong> Conventional tracking plugins (PixelYourSite, Conversios, GTM) prematurely fire the <code>Purchase<\/code> event the exact millisecond a customer clicks \"Place Order\". If an order is a fake Cash-on-Delivery (COD) submission, entered with a wrong phone number, or cancelled an hour later \u2014 Meta's AI algorithm has already marked it as a successful high-value buyer, actively training Meta Advantage+ to find more fake buyers and chronic returners!<\/p>\n\n<ul>\n<li><strong>CapiFlow Free (Confirmed Purchase Control):<\/strong> CapiFlow does NOT fire <code>Purchase<\/code> prematurely upon checkout placement. Instead, it holds the event until the store owner verifies the order and marks it as <strong>\"Confirmed\" or \"Completed\"<\/strong> in WooCommerce. Only 100% real, verified purchases reach Meta Events Manager!<\/li>\n<li><strong>CapiFlow Pro (Courier API Automation):<\/strong> Automatically verifies delivery status in real-time with courier networks (Pathao, Steadfast, REDX, DHL, FedEx) and auto-fires <code>Purchase<\/code> upon delivery confirmation. If an order is returned or cancelled, it dispatches <strong>Negative Purchase Signals<\/strong> to retrain ad algorithms away from chronic returners!<\/li>\n<\/ul>\n\n<h4>\u26a1 0ms Checkout Speed Impact (100% Asynchronous Background Queuing)<\/h4>\n\n<p>Never sacrifice checkout conversion rates for tracking accuracy.\n* <strong>Non-Blocking Architecture:<\/strong> CapiFlow offloads all server-side CAPI API dispatches to background workers using WordPress Action Scheduler.\n* <strong>0ms Latency:<\/strong> Your customers experience instant checkout confirmation with zero API timeout delays, perfectly protecting your Core Web Vitals.<\/p>\n\n<h4>\ud83c\udf6a 180-Day Cache-Safe Persistent Server Cookies<\/h4>\n\n<ul>\n<li><strong>Safari ITP &amp; Ad Blocker Immune:<\/strong> While Apple Safari and browser privacy shields wipe JavaScript cookies (<code>document.cookie<\/code>) within 1 to 7 days, CapiFlow sets first-party <code>HttpOnly<\/code> server cookies that persist for <strong>up to 180 days<\/strong>.<\/li>\n<li><strong>Page-Cache Bypass:<\/strong> Cookies are delivered via uncacheable REST response headers, ensuring 100% functionality even on aggressive caching stacks (LiteSpeed Cache, WP Rocket, Varnish, Cloudflare).<\/li>\n<li><strong>Skyrocket Event Match Quality (EMQ):<\/strong> Matches returning customers months after their first ad click with full SHA-256 hashed customer parameters, achieving 9+ EMQ scores.<\/li>\n<\/ul>\n\n<h4>Core Features<\/h4>\n\n<p><strong>Direct Server-to-Server Tracking<\/strong>\n* \ud83c\udfaf <strong>7 Standard Events Supported:<\/strong> Purchase, InitiateCheckout, AddPaymentInfo, AddToCart, ViewContent, Search, PageView.\n* \ud83d\udd04 <strong>Deterministic Deduplication:<\/strong> Browser and server events share the exact same synchronized <code>event_id<\/code> to guarantee Meta never double-counts conversions.\n* \ud83d\udee1\ufe0f <strong>First-Party Proxy Endpoint:<\/strong> Client tracking scripts can be routed through your own domain, bypassing ad-blocker domain blocklists.\n* \ud83d\udd10 <strong>SHA-256 PII Advanced Matching:<\/strong> Automatically hashes customer email, phone, first name, last name, city, and state before leaving your server.<\/p>\n\n<p><strong>WooCommerce Control &amp; Monitoring<\/strong>\n* \ud83d\udcc8 <strong>Interactive Dashboard:<\/strong> Real-time event analytics, browser vs. server delivery ratios, and conversion trends.\n* \ud83d\udd0d <strong>Live Debug Console:<\/strong> Inspect exact server payloads, timestamp logs, and Meta Graph API response codes.\n* \ud83c\udfe5 <strong>System Health Inspector:<\/strong> Instant verification of Meta Access Token validity, queue backlog, and cURL connectivity.\n* \ud83d\udcde <strong>Checkout Phone Validator:<\/strong> Automatically cleans and validates customer phone formatting at checkout.\n* \ud83d\udccb <strong>Order Column Badges:<\/strong> Per-order CAPI dispatch status badges directly inside the WooCommerce Orders screen.<\/p>\n\n<h4>Free vs Pro Comparison<\/h4>\n\n\n\n\n  Feature\n  CapiFlow Free\n  CapiFlow Pro\n\n\n\n\n  100% Self-Hosted (Zero Monthly Cloud Fees)\n  \u2705 Yes\n  \u2705 Yes\n\n\n  Meta Conversions API (CAPI) Core Events\n  \u2705 Yes\n  \u2705 Yes (All + Custom)\n\n\n  Multi-Platform Support (GA4, Google Ads, TikTok, Pinterest...)\n  Meta CAPI Only\n  \u2705 All 8 Platforms\n\n\n  Browser &amp; Server Event Deduplication (<code>event_id<\/code>)\n  \u2705 Yes\n  \u2705 Yes\n\n\n  Purchase Event Firing Logic\n  Manual Confirmed Purchase Control\n  \u2705 Fully Automated via Courier APIs\n\n\n  Negative Purchase Signals (Ad Budget Optimization)\n  \u274c No\n  \u2705 Yes (Automated on Returns)\n\n\n  0ms Async Background Queuing\n  \u2705 Yes\n  \u2705 Yes\n\n\n  Cache-Safe 180-Day Persistent Server Cookies\n  \u2705 Yes\n  \u2705 Yes\n\n\n  Category-Based Multi-Pixel Routing\n  \u274c No\n  \u2705 Yes\n\n\n  3-Layer AI Fraud Defense &amp; Phone OTP Verification\n  \u274c No\n  \u2705 Yes (Full Suite)\n\n\n  Multi-Carrier Courier Auto-Booking (Pathao, Steadfast, DHL...)\n  \u274c No\n  \u2705 Yes\n\n\n  Smart Cart Recovery with Dynamic Single-Use Auto-Coupons\n  \u274c No\n  \u2705 Yes (SMS + Email)\n\n\n\n\n<h4>CapiFlow Pro<\/h4>\n\n<p>Ready to automate your entire post-purchase pipeline? <strong>CapiFlow Pro<\/strong> upgrades your store into an automated powerhouse:\n* <strong>8-Platform Multi-CAPI:<\/strong> Track Meta, Google Analytics 4, Google Ads Enhanced Conversions, TikTok, Pinterest, Snapchat, LinkedIn, and X.\n* <strong>Automated Courier Logistics:<\/strong> 1-click booking and real-time delivery status syncing with Pathao, Steadfast, REDX, DHL, FedEx, and custom webhooks.\n* <strong>Negative Purchase Signals:<\/strong> Automatically signal ad platforms when orders are cancelled or returned to reduce your Cost Per Acquisition (CPA) by 20%\u201340%.\n* <strong>Smart Cart Recovery &amp; Dynamic Coupons:<\/strong> Recovers abandoned checkout drafts with single-use, time-limited auto-coupons sent via SMS &amp; Email.\n* <strong>3-Layer AI Fraud Guard:<\/strong> Delivery success rate prediction and phone OTP verification to stop fake buyers before shipment.<\/p>\n\n<p>Learn more on the <a href=\"https:\/\/capiflowpro.com\/\">CapiFlow Pro Website<\/a>.<\/p>\n\n<h4>Compatibility<\/h4>\n\n<ul>\n<li><strong>Payment Gateways:<\/strong> bKash, Nagad, Rocket, SSLCommerz, Stripe, PayPal, COD (Cash on Delivery), and all standard WooCommerce gateways.<\/li>\n<li><strong>Themes:<\/strong> 100% compatible with Classic themes, Block themes (FSE), Elementor, Divi, Bricks, and custom WooCommerce templates.<\/li>\n<li><strong>Storage Engines:<\/strong> Full native support for High-Performance Order Storage (HPOS) and legacy custom post types.<\/li>\n<li><strong>Consent Management Platforms (CMP):<\/strong> Seamless integration with CookieYes, Complianz, CookieBot, and custom hooks (<code>capiflow_has_tracking_consent<\/code>).<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0+<\/li>\n<li>WooCommerce 7.0+<\/li>\n<li>PHP 7.4+ (PHP 8.0, 8.1, 8.2, 8.3 fully supported)<\/li>\n<li>OpenSSL PHP extension<\/li>\n<li>Meta Pixel ID &amp; System User Access Token<\/li>\n<\/ul>\n\n<h4>External Services<\/h4>\n\n<p>This plugin connects to the following third-party services:<\/p>\n\n<p><strong>Meta (Facebook) Conversions API<\/strong><\/p>\n\n<p>CapiFlow sends WooCommerce event data to the Meta Conversions API via: <code>https:\/\/graph.facebook.com\/<\/code><\/p>\n\n<p>This connection is made from your server to Meta's servers when a configured tracking event occurs. No data is sent until a valid Pixel ID and Access Token are configured.<\/p>\n\n<p>Data transmitted includes:<\/p>\n\n<ul>\n<li>Hashed email, phone, first and last name (SHA-256)<\/li>\n<li>Client IP address and Browser User Agent<\/li>\n<li>Meta Click ID (_fbc) and Browser ID (_fbp) cookies<\/li>\n<li>Order total, currency, and event metadata<\/li>\n<\/ul>\n\n<p>All personal data is SHA-256 hashed before transmission.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.facebook.com\/terms.php\">Meta Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Meta Privacy Policy<\/a><\/li>\n<li><a href=\"https:\/\/developers.facebook.com\/terms\/\">Meta Platform Terms<\/a><\/li>\n<\/ul>\n\n<p><strong>Meta Pixel JavaScript SDK<\/strong><\/p>\n\n<p>This plugin loads the Meta Pixel SDK from: <code>https:\/\/connect.facebook.net\/en_US\/fbevents.js<\/code><\/p>\n\n<p>Loaded on frontend pages when a Pixel ID is configured. The SDK is hosted by Meta.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/www.facebook.com\/terms.php\">Meta Terms of Service<\/a><\/li>\n<li><a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Meta Privacy Policy<\/a><\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>For server-side events, all personal data is SHA-256 hashed before transmission. For browser events, the Meta Pixel SDK handles hashing via Advanced Matching. This plugin does not store raw PII in its own tables. See <a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Meta's privacy policy<\/a>.<\/p>\n\n<h4>Cookies<\/h4>\n\n<ul>\n<li><code>cs_uid<\/code> \u2014 Random visitor identifier for <code>external_id<\/code> deduplication. 180 days. No PII.<\/li>\n<li><code>_fbc<\/code> \u2014 Meta Click ID. Set by Meta SDK on ad click. CapiFlow reads\/extends server-side. 180 days.<\/li>\n<li><code>_fbp<\/code> \u2014 Meta Browser ID. Set by Meta SDK. CapiFlow reads\/extends server-side. 180 days.<\/li>\n<\/ul>\n\n<p>All cookies are first-party and contain no personally identifiable information.<\/p>\n\n<h4>Data Storage<\/h4>\n\n<ul>\n<li><code>{prefix}_capiflow_events<\/code> \u2014 Queued\/sent event payloads. Auto-purged after delivery.<\/li>\n<li><code>{prefix}_capiflow_analytics<\/code> \u2014 Daily aggregated analytics. Auto-purged by retention settings.<\/li>\n<li>Order metadata with <code>_capiflow_<\/code> prefix. Removed on uninstall if \"Keep Data\" is disabled.<\/li>\n<li>Logs in <code>wp-content\/uploads\/capiflow-logs\/<\/code> with <code>.htaccess<\/code> protection. Auto-cleaned daily.<\/li>\n<\/ul>\n\n<h4>Consent<\/h4>\n\n<p>By default, events fire once configured. Enable \"Consent Enforcement\" in Settings to respect CMP signals for both browser and server events.<\/p>\n\n<p>Supported CMPs: CookieYes, Complianz, CookieBot, GDPR Cookie Consent. Custom integration via <code>capiflow_has_tracking_consent<\/code> filter.<\/p>\n\n<p>When Consent Enforcement is enabled, browser and server-side events are blocked until valid tracking consent is detected.<\/p>\n\n<p>Store owners are responsible for lawful consent configuration where required by privacy regulations.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install from WordPress plugins screen or upload <code>capiflow<\/code> to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Setup wizard launches \u2014 enter <strong>Pixel ID<\/strong> and <strong>Access Token<\/strong>.<\/li>\n<li>Click <strong>Test Connection<\/strong> \u2014 check <strong>CapiFlow \u2192 Dashboard<\/strong> to monitor.<\/li>\n<\/ol>\n\n<h4>Getting an Access Token<\/h4>\n\n<ol>\n<li><a href=\"https:\/\/www.facebook.com\/events_manager2\/\">Meta Events Manager<\/a> \u2192 Select Pixel \u2192 Settings \u2192 Conversions API<\/li>\n<li>Click <strong>Generate Access Token<\/strong> or create a System User<\/li>\n<li>Paste into CapiFlow \u2192 Settings \u2192 Pixel Settings<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20use%20capiflow%20for%20meta%20pixel%20server-side%20tracking%20without%20gtm%3F\"><h3>Can I use CapiFlow for Meta Pixel server-side tracking without GTM?<\/h3><\/dt>\n<dd><p>Yes! CapiFlow is built specifically for WooCommerce stores to enable full server-side Conversions API (CAPI) and Meta Pixel tracking without needing Google Tag Manager (sGTM), complex dataLayers, triggers, or custom code. Everything is 100% pre-engineered, native, and automated. You simply paste your Pixel ID and Access Token, and tracking starts in under 3 minutes.<\/p><\/dd>\n<dt id=\"can%20i%20run%20meta%20conversions%20api%20without%20stape.io%2C%20google%20cloud%2C%20or%20monthly%20fees%3F\"><h3>Can I run Meta Conversions API without Stape.io, Google Cloud, or monthly fees?<\/h3><\/dt>\n<dd><p>Yes, absolutely. You do not need Stape.io, Google Cloud Platform (GCP), AWS, or any paid cloud server container. CapiFlow runs 100% natively on your existing WordPress server and offloads events via Action Scheduler, saving you $240 to $1,200+ every year in cloud hosting subscriptions.<\/p><\/dd>\n<dt id=\"does%20this%20replace%20the%20meta%20browser%20pixel%20or%20run%20dual-tracking%3F\"><h3>Does this replace the Meta browser pixel or run dual-tracking?<\/h3><\/dt>\n<dd><p>CapiFlow runs Meta's officially recommended dual-tracking setup: it fires both client-side Meta Pixel (<code>fbq<\/code>) and server-side Conversions API (CAPI) simultaneously. Both streams share identical, synchronized cryptographic <code>event_id<\/code> values for 100% deterministic deduplication in Meta Events Manager.<\/p><\/dd>\n<dt id=\"will%20dual%20tracking%20cause%20duplicate%20events%20or%20inflated%20conversion%20numbers%3F\"><h3>Will dual tracking cause duplicate events or inflated conversion numbers?<\/h3><\/dt>\n<dd><p>No. Matching <code>event_id<\/code> values guarantee that Meta automatically deduplicates browser and server events within Meta's 48-hour deduplication window. You get 100% accurate conversion reporting with zero double-counting.<\/p><\/dd>\n<dt id=\"how%20does%20capiflow%20bypass%20apple%20safari%20itp%20and%20ios%2014.5%2B%20tracking%20loss%3F\"><h3>How does CapiFlow bypass Apple Safari ITP and iOS 14.5+ tracking loss?<\/h3><\/dt>\n<dd><p>While Apple Safari and ad blockers wipe JavaScript cookies (<code>document.cookie<\/code>) within 1 to 7 days, CapiFlow sets persistent first-party identity cookies (<code>_fbp<\/code> and <code>_fbc<\/code>) via uncacheable REST response headers that persist for up to 180 days. This bypasses page caching layers (LiteSpeed, WP Rocket, Varnish, Cloudflare) and recovers 25%+ of lost conversions.<\/p><\/dd>\n<dt id=\"how%20does%20capiflow%20achieve%20a%209%2B%20event%20match%20quality%20%28emq%29%20score%20on%20meta%3F\"><h3>How does CapiFlow achieve a 9+ Event Match Quality (EMQ) score on Meta?<\/h3><\/dt>\n<dd><p>CapiFlow normalizes and SHA-256 hashes customer data (E.164 phone numbers, lowercase trimmed emails, names, cities, postal codes) and pairs them with <code>fbc<\/code>, <code>fbp<\/code>, <code>external_id<\/code>, client IP, and browser user agent. This multi-signal matching consistently delivers 9.0+ EMQ scores in Meta Events Manager.<\/p><\/dd>\n<dt id=\"does%20capiflow%20slow%20down%20my%20checkout%20or%20store%20page%20speed%3F\"><h3>Does CapiFlow slow down my checkout or store page speed?<\/h3><\/dt>\n<dd><p>No. CapiFlow offloads all server-side CAPI dispatches to background workers using WordPress Action Scheduler. It adds 0ms delay to customer checkout or page load speeds, keeping your Core Web Vitals 100% green.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20caching%20plugins%20like%20litespeed%20cache%2C%20wp%20rocket%2C%20or%20cloudflare%3F\"><h3>Does this work with caching plugins like LiteSpeed Cache, WP Rocket, or Cloudflare?<\/h3><\/dt>\n<dd><p>Yes! CapiFlow sets persistent server identity cookies directly via uncacheable REST response headers. This completely bypasses page caching layers (LiteSpeed, WP Rocket, Varnish, Cloudflare) and ensures cookies are never cached statically.<\/p><\/dd>\n<dt id=\"how%20does%20confirmed%20purchase%20control%20protect%20my%20ad%20budget%20from%20fake%20orders%3F\"><h3>How does Confirmed Purchase Control protect my ad budget from fake orders?<\/h3><\/dt>\n<dd><p>Conventional tracking plugins fire a Purchase event the exact moment a customer submits checkout. If that order is a fake Cash-on-Delivery (COD) submission or gets cancelled, Meta's algorithm still counts it as a successful sale, poisoning your ad optimization. CapiFlow Free holds the Purchase event until you verify the order and mark it \"Confirmed\" or \"Completed\" in WooCommerce. In CapiFlow Pro, this is fully automated via Courier APIs (Pathao, Steadfast, REDX, DHL, FedEx) and Negative Purchase signals!<\/p><\/dd>\n<dt id=\"which%20woocommerce%20payment%20gateways%2C%20themes%2C%20and%20order%20storage%20engines%20are%20supported%3F\"><h3>Which WooCommerce payment gateways, themes, and order storage engines are supported?<\/h3><\/dt>\n<dd><p>100% compatible with all standard gateways (bKash, Nagad, SSLCommerz, Stripe, PayPal, COD), all themes (Classic, Block\/FSE, Elementor, Divi, Bricks), and both High-Performance Order Storage (HPOS) and legacy posts-based order storage.<\/p><\/dd>\n<dt id=\"how%20is%20customer%20privacy%20and%20gdpr%2Fccpa%20consent%20handled%3F\"><h3>How is customer privacy and GDPR\/CCPA consent handled?<\/h3><\/dt>\n<dd><p>All PII is SHA-256 hashed before transmission. CapiFlow includes a built-in Consent Enforcement toggle that blocks both browser and server events until CMP consent is granted (compatible with CookieYes, Complianz, CookieBot, and custom filters). Privacy policy content is auto-added to your WordPress Privacy Policy page.<\/p><\/dd>\n<dt id=\"what%20is%20capiflow%20pro%3F\"><h3>What is CapiFlow Pro?<\/h3><\/dt>\n<dd><p>A separate addon that adds 8-platform multi-CAPI, courier automation, negative Purchase signals, cart recovery with auto-coupons, and AI fraud protection. <a href=\"https:\/\/capiflowpro.com\/\">Learn more<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.3 \u2014 2026-09-28<\/h4>\n\n<ul>\n<li>Fix: E.164 domestic trunk-zero stripping \u2014 <code>normalize_phone_e164()<\/code> now correctly strips domestic trunk zeros when the number already starts with the country dialing code (e.g. <code>+880017...<\/code> \u2192 <code>8801712345678<\/code> instead of retaining the leading <code>0<\/code>). Affects Meta Advanced Matching phone hashing accuracy.<\/li>\n<li>New: <code>hash_postcode()<\/code> method added to <code>Data_Normalizer<\/code> as an alias of <code>hash_zip()<\/code> for international postal code taxonomy compatibility.<\/li>\n<li>New: <code>get_universal_uid()<\/code> utility method added \u2014 reads first-party visitor UID from <code>cs_uid<\/code> or <code>cs_vid<\/code> cookies for cross-session identity stitching.<\/li>\n<\/ul>\n\n<h4>1.1.2 \u2014 2026-09-19<\/h4>\n\n<ul>\n<li>Fix: Universal Price Normalization \u2014 introduced dual-tier price parsing engine (<code>parsePrice<\/code>) to accurately handle European and international currency price formatting (e.g. comma as decimal separator like <code>\u20ac14,21<\/code>), preventing 100x price inflation in Meta Pixel Helper and CAPI.<\/li>\n<li>Fix: International Currency Safeguards \u2014 added automatic sanitization for Unicode whitespace (non-breaking spaces), apostrophes (Swiss Franc <code>CHF<\/code>), Eastern Arabic &amp; Persian numerals and punctuation (<code>\u066b<\/code> and <code>\u066c<\/code>), and zero-decimal currencies (<code>JPY<\/code>, <code>KRW<\/code>, <code>VND<\/code>).<\/li>\n<li>Fix: Currency Abbreviation Dot Collision Protection \u2014 strips non-digit periods to prevent regional currency abbreviations (e.g. <code>kr.<\/code>, <code>Rs.<\/code>, <code>\u0440\u0443\u0431.<\/code>, <code>\u0433\u0440\u043d.<\/code>, <code>\u062f.\u0625<\/code>, <code>S\/.<\/code>) from colliding with decimal separators.<\/li>\n<li>Fix: Dual-Tier Heuristic Fallback \u2014 added intelligent single-comma ambiguity analysis for cached pages to preserve correct decimal\/thousands separator distinctions even if client configuration is missing.<\/li>\n<li>Fix: AJAX &amp; Block Cart Resolution \u2014 upgraded Handler 2 (classic AJAX cart) and Handler 3 (WooCommerce Blocks) to dynamically scrape and transmit real product price, name, and quantity rather than fallback zeros.<\/li>\n<li>Fix: Precision &amp; Variation Guards \u2014 formatted multi-quantity AddToCart event values to eliminate IEEE-754 floating-point noise (e.g. <code>42.63000000000001<\/code>), and added variation selection guards to prevent false AddToCart events on unselected variable products.<\/li>\n<li>Fix: Server-Side Deferred Rounding \u2014 rounded deferred session AddToCart payloads according to WooCommerce store decimal settings.<\/li>\n<\/ul>\n\n<h4>1.1.1 \u2014 2026-08-21<\/h4>\n\n<ul>\n<li>Fix: <code>predicted_ltv<\/code> is now only sent in Purchase events when COGS (Cost of Goods Sold) data is actually populated. Previously, missing <code>_woo_capi_cogs<\/code> meta caused <code>predicted_ltv<\/code> to always equal the order total, which Meta flagged as an invalid value and could distort Value-Based Bidding optimization.<\/li>\n<\/ul>\n\n<h4>1.1.0 \u2014 2026-08-20<\/h4>\n\n<ul>\n<li>New: Marketplace Catalog Verified \u2014 Content ID Strategy setting (SKU \/ Parent SKU \/ WooCommerce Product ID) for pixel-to-catalog alignment.<\/li>\n<li>New: <code>Event_Builder::resolve_content_id()<\/code> static resolver \u2014 single source of truth for all event methods (Purchase, InitiateCheckout, AddToCart, ViewContent, AddPaymentInfo, Negative Events).<\/li>\n<li>New: <code>Event_Builder::resolve_content_type()<\/code> \u2014 automatically switches between <code>product<\/code> and <code>product_group<\/code> based on ID strategy and product type.<\/li>\n<li>New: <code>Event_Builder::resolve_item_price()<\/code> \u2014 tax-parity normalizer ensures item_price matches catalog feed pricing (incl.\/excl. tax).<\/li>\n<li>New: Search event now includes <code>content_ids<\/code> and <code>contents<\/code> arrays from search results (up to 10 products).<\/li>\n<li>New: Guard 5 \u2014 Order Source Filter blocks CAPI Purchase events for marketplace\/external channel orders (configurable via Settings &gt; Events).<\/li>\n<li>New: Guard 6 \u2014 <code>capiflow_should_track_purchase<\/code> filter provides a clean developer escape hatch to suppress individual Purchase events without setting a dedup lock.<\/li>\n<li>New: <code>capiflow_content_id<\/code> filter allows custom catalog integrations to override resolved content IDs.<\/li>\n<li>Fix: <code>content_category<\/code> now correctly uses the parent product ID for variable product variations (variations have no direct category assignment).<\/li>\n<li>Fix: <code>get_product_sku_map()<\/code> in Pixel Injector now uses <code>resolve_content_id()<\/code> so JS AddToCart content_ids always match server-side events.<\/li>\n<li>Fix: <code>store_deferred_addtocart()<\/code> now uses <code>resolve_content_type()<\/code> for the deferred AddToCart pixel event.<\/li>\n<li>Fix: Cart loop guards now check <code>instanceof WC_Product<\/code> before processing to prevent TypeError on malformed cart data.<\/li>\n<li>Fix: Order item loops now check <code>instanceof WC_Order_Item_Product<\/code> to skip shipping\/fee\/coupon line items silently.<\/li>\n<li>Deprecated: <code>Event_Builder::get_content_type()<\/code> and <code>get_content_id()<\/code> now proxy to new static resolvers for backward compatibility.<\/li>\n<\/ul>\n\n<h4>1.0.2 \u2014 2026-07-29<\/h4>\n\n<ul>\n<li>Fix: Prevent firing Purchase events for pre-existing orders created prior to CapiFlow installation or &gt;7 days ago when order status is changed in WP Admin\/background.<\/li>\n<li>Fix: Add self-healing installation timestamp and multi-layered pre-installation protection guard to prevent invalid server-side Purchase attribution.<\/li>\n<\/ul>\n\n<h4>1.0.1 \u2014 2026-05-22<\/h4>\n\n<ul>\n<li>Update WordPress compatibility header to Tested up to 7.0 for WordPress 7.0 \"Armstrong\" release.<\/li>\n<\/ul>\n\n<h4>1.0.0 \u2014 2026-05-01<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Server-side tracking for 7 Meta standard events via Conversions API<\/li>\n<li>Browser + server event deduplication with matching event_id<\/li>\n<li>First-party event endpoint, SHA-256 PII hashing, Advanced Matching<\/li>\n<li>COD Purchase gate, phone validation, analytics dashboard<\/li>\n<li>Debug console, system health, setup wizard<\/li>\n<li>HPOS compatible, Action Scheduler queue, CMP integration<\/li>\n<\/ul>","raw_excerpt":"Meta Pixel &amp; Server-Side Conversions API (CAPI) tracking for WooCommerce without GTM or Stape. 100% deduplication, Safari ITP bypass &amp; high EMQ score.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/308219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=308219"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/capiflow"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=308219"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=308219"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=308219"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=308219"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=308219"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=308219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}