{"id":317898,"date":"2026-05-31T10:34:40","date_gmt":"2026-05-31T10:34:40","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/datablow-server-side-tracker-for-meta-conversions-api\/"},"modified":"2026-05-31T10:30:33","modified_gmt":"2026-05-31T10:30:33","slug":"datablow-capi-tracker","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/datablow-capi-tracker\/","author":23505454,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Datablow Event Tracker for Meta Conversions API","header_author":"Datablow","header_description":"Self-contained Meta Conversions API (CAPI) and browser tracking plugin. Bypasses ad-blockers and extends cookie lifetimes.","assets_banners_color":"","last_updated":"2026-05-31 10:30:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/datablow.com\/meta-capi-tracker","header_author_uri":"https:\/\/datablow.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"pralayasimha","date":"2026-05-31 10:30:33"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3555668,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3555668,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[195844,7855,261173,219244],"plugin_category":[],"plugin_contributors":[265158],"plugin_business_model":[],"class_list":["post-317898","plugin","type-plugin","status-publish","hentry","plugin_tags-conversions-api","plugin_tags-facebook-pixel","plugin_tags-meta-capi","plugin_tags-server-side-tracking","plugin_contributors-pralayasimha","plugin_committers-pralayasimha"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/datablow-capi-tracker\/assets\/icon-128x128.png?rev=3555668","icon_2x":"https:\/\/ps.w.org\/datablow-capi-tracker\/assets\/icon-256x256.png?rev=3555668","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Datablow Event Tracker connects your WordPress site directly to Meta using the Conversions API (CAPI). It sends events from both the browser and the server side with matching deduplication keys, so your ad campaigns receive complete and accurate conversion data.<\/p>\n\n<p>Traditional browser-only tracking loses 20\u201330% of event data due to ad-blockers, iOS privacy protections, and Safari Intelligent Tracking Prevention (ITP). This plugin addresses those challenges by acting as a local proxy on your own domain and writing cookies server-side.<\/p>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li><strong>PageView Tracking<\/strong> \u2014 Fires PageView events from both the browser pixel and the server side.<\/li>\n<li><strong>Deduplication Engine<\/strong> \u2014 Generates matching <code>event_id<\/code> values for browser and server events so Meta merges them automatically.<\/li>\n<li><strong>Audit Logger<\/strong> \u2014 Stores the last 50 Conversions API payloads and HTTP response codes in your admin dashboard.<\/li>\n<li><strong>Test Simulator<\/strong> \u2014 Manually trigger test CAPI payloads from WordPress to verify your configuration.<\/li>\n<li><strong>Ad-Blocker Script Proxy<\/strong> \u2014 Serves the Meta Pixel JavaScript from your own domain endpoint, preventing ad-blockers from blocking the tracker.<\/li>\n<li><strong>Cookie Keeper<\/strong> \u2014 Writes <code>_fbp<\/code> and <code>_fbc<\/code> cookies from PHP (server side), extending their lifespan up to 2 years and bypassing Safari ITP limits.<\/li>\n<li><strong>User Registration<\/strong> \u2014 Sends <code>CompleteRegistration<\/code> events when new users register on your site.<\/li>\n<li><strong>URL-to-Event Mapping<\/strong> \u2014 Fire any standard Meta event on specific URL paths without writing code.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Meta (Facebook) external services to track web events and transmit conversion data. Specifically:<\/p>\n\n<ol>\n<li><p><strong>Meta Pixel JavaScript (connect.facebook.net)<\/strong><\/p>\n\n<ul>\n<li>The plugin loads the Meta Pixel JavaScript library from <code>https:\/\/connect.facebook.net\/en_US\/fbevents.js<\/code> in the visitor's browser to enable browser-side event tracking.<\/li>\n<li>When the Ad-Blocker Script Proxy feature is enabled, this script is fetched server-side and cached locally, then served from your own domain to the visitor's browser.<\/li>\n<li><strong>What data is sent:<\/strong> No user data is sent to this URL directly; it is a JavaScript file load only.<\/li>\n<li><strong>When:<\/strong> On every front-end page load when a Pixel ID is configured.<\/li>\n<\/ul><\/li>\n<li><p><strong>Meta Pixel Noscript Fallback (www.facebook.com\/tr)<\/strong><\/p>\n\n<ul>\n<li>The plugin outputs a 1\u00d71 pixel <code>&lt;img&gt;<\/code> tag inside a <code>&lt;noscript&gt;<\/code> block requesting <code>https:\/\/www.facebook.com\/tr<\/code>.<\/li>\n<li><strong>What data is sent:<\/strong> Pixel ID and a PageView event signal for visitors who have JavaScript disabled.<\/li>\n<li><strong>When:<\/strong> On every front-end page load when a Pixel ID is configured and JavaScript is disabled.<\/li>\n<\/ul><\/li>\n<li><p><strong>Meta Graph API \/ Conversions API (graph.facebook.com)<\/strong><\/p>\n\n<ul>\n<li>The plugin sends server-side event data to <code>https:\/\/graph.facebook.com\/v19.0\/{pixel_id}\/events<\/code>.<\/li>\n<li><strong>What data is sent:<\/strong> Event name, event time, deduplication event ID, action source, hashed user data (SHA-256 hashed email, phone, name, city, state, zip, country), client IP address, user agent, and Facebook browser\/click cookies (<code>_fbp<\/code>, <code>_fbc<\/code>). For purchase events, value and currency are also included.<\/li>\n<li><strong>When:<\/strong> On PageView (every front-end page load), custom URL-mapped events, and user registrations \u2014 depending on which features are enabled in settings.<\/li>\n<li><strong>Authentication:<\/strong> An Access Token stored in WordPress options is appended to each request.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<p>These connections to Meta services are required for the plugin's core conversion tracking functionality. The processing occurs on Meta's external servers.<\/p>\n\n<ul>\n<li><strong>Service Provider:<\/strong> Meta Platforms, Inc.<\/li>\n<li><strong>Meta Terms of Service:<\/strong> https:\/\/www.facebook.com\/legal\/terms<\/li>\n<li><strong>Meta Privacy Policy:<\/strong> https:\/\/www.facebook.com\/about\/privacy<\/li>\n<li><strong>Meta Conversions API Terms:<\/strong> https:\/\/www.facebook.com\/legal\/developer_terms<\/li>\n<li><strong>Meta Platform Terms:<\/strong> https:\/\/developers.facebook.com\/terms\/<\/li>\n<\/ul>\n\n<p>No data is transmitted until you configure a valid Meta Pixel ID and Conversions API Access Token in the plugin settings.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>datablow-capi-tracker<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install directly from the WordPress Plugin Directory.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 Meta CAPI Tracker<\/strong>.<\/li>\n<li>Enter your <strong>Meta Pixel ID<\/strong> and <strong>Conversions API Access Token<\/strong>.<\/li>\n<li>Enable the tracking events you want (user registration, pageview).<\/li>\n<li>Click <strong>Save Configuration<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20generate%20a%20conversions%20api%20access%20token%3F\"><h3>How do I generate a Conversions API Access Token?<\/h3><\/dt>\n<dd><p>Go to <strong>Meta Events Manager \u2192 Settings<\/strong> \u2192 scroll to the Conversions API section \u2192 click <strong>Generate access token<\/strong>.<\/p><\/dd>\n<dt id=\"why%20do%20i%20need%20to%20deduplicate%20events%3F\"><h3>Why do I need to deduplicate events?<\/h3><\/dt>\n<dd><p>When you send both browser (Pixel) and server (CAPI) events, Meta could count the same conversion twice. The plugin attaches a matching <code>eventID<\/code> to both the browser and server events. Meta detects the matching IDs and merges them into a single event.<\/p><\/dd>\n<dt id=\"how%20do%20i%20test%20the%20connection%3F\"><h3>How do I test the connection?<\/h3><\/dt>\n<dd><p>Go to <strong>Meta Events Manager \u2192 Test Events<\/strong>, copy the Test Event Code, paste it into the plugin's <strong>Configuration<\/strong> panel, then go to the <strong>Test Event Center<\/strong> tab and click <strong>Trigger Server-Side Event<\/strong>.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20store%20any%20personal%20data%3F\"><h3>Does the plugin store any personal data?<\/h3><\/dt>\n<dd><p>The plugin stores the last 50 CAPI request logs in the WordPress database (<code>wp_options<\/code>), which include HTTP response codes and Meta API response bodies. No raw user PII (email, phone, name) is stored \u2014 all fields are SHA-256 hashed before transmission and are not stored in logs.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20gdpr%20compliant%3F\"><h3>Is the plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin transmits hashed user data and cookies to Meta. You are responsible for obtaining appropriate user consent under GDPR or other applicable regulations before enabling tracking. Consider using a cookie consent plugin to gate tracking until consent is given.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Standardized codebase for initial public release.<\/li>\n<li>Renamed all function\/option\/constant prefixes from <code>meta_capi<\/code> to <code>dataevtr<\/code> to avoid conflicts with other plugins.<\/li>\n<li>Hooked Cookie Keeper, Script Proxy, and URL Event Scanner \u2014 these features now activate properly on every page load.<\/li>\n<li>Added CompleteRegistration tracking on user registration \u2014 no restrictions.<\/li>\n<li>Removed all license-gating and pro\/free mode UI from the admin settings page.<\/li>\n<li>Fixed all unescaped outputs in the admin settings page.<\/li>\n<li>Fixed <code>$_COOKIE<\/code>, <code>$_SERVER<\/code>, and <code>$_GET<\/code> inputs now all sanitized and validated before use.<\/li>\n<li>All inline JavaScript output now uses <code>wp_add_inline_script()<\/code> \u2014 no direct <code>echo '&lt;script&gt;'<\/code> calls.<\/li>\n<li>Used <code>esc_url()<\/code> (not <code>esc_url_raw<\/code>) for URL values in JavaScript string context.<\/li>\n<li>Admin JavaScript now loaded via <code>wp_add_inline_script()<\/code> attached to a registered script handle.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Updated slug to <code>datablow-capi-tracker<\/code>.<\/li>\n<li>Fixed readme contributor list.<\/li>\n<li>Improved output escaping.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"First-party Meta Conversions API and browser tracking plugin for WordPress. Bypasses ad-blockers and extends cookie lifetimes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317898","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=317898"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pralayasimha"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317898"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317898"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317898"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317898"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317898"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}