Meta Ads conversion tracking on WordPress works differently from Google Ads, and the difference matters for how you optimize your campaigns. This guide covers the full setup: the Facebook pixel for website events, the Conversions API for server-side reliability, and the offline conversion approach that tells Meta which leads actually became paying clients — not just which ones filled out your form.
The pixel versus the Conversions API
Meta offers two ways to track conversions: the browser-based pixel and the Conversions API (CAPI). They are not alternatives — they are complements, and running both is the right approach for a WordPress business.
- The Facebook pixel is a JavaScript snippet that loads in the visitor’s browser and fires events as they navigate your site. It captures form submissions, thank-you page views, and button clicks. The limitation is that it depends on the browser: ad blockers suppress it, iOS 14+ privacy changes reduce its reach, and browser crashes or navigations that happen before the script fully executes cause missed events. On a well-implemented WordPress site with GTM, the pixel typically captures 60 to 80 percent of actual conversions.
- The Conversions API sends event data directly from your server to Meta’s servers, bypassing the browser entirely. It does not get blocked by ad blockers or affected by browser privacy settings. CAPI does not replace the pixel — it supplements it by capturing the conversions the pixel misses. The combination of pixel plus CAPI, with deduplication enabled, consistently outperforms pixel-only tracking on both match rate and event volume.
Running both with event deduplication (using a shared event ID) is the current Meta best practice and the setup that gives your campaigns the most accurate conversion signal.
Step 1: Install the pixel and configure standard events
The pixel installs via Google Tag Manager or a Meta-provided WordPress plugin. GTM gives you more control and is preferred for most setups:
- In Meta Events Manager, create a pixel and copy the base code.
- In GTM, create a Custom HTML tag with the pixel base code, firing on All Pages.
- Create a separate tag for the Lead event, firing on your thank-you page (the same trigger you use for Google Ads conversion tracking). The Lead event is the right standard event for contact form completions — it is more specific than PageView and is what Meta’s ad delivery algorithm optimizes toward when you run Lead Generation campaigns.
- Publish the GTM container and verify in Meta Events Manager’s Test Events tool by submitting a test form and confirming the Lead event fires.
If you are running contact forms on WordPress with WPForms, Gravity Forms, or Contact Form 7, the thank-you page redirect approach (the same one recommended for Google Ads) is the most reliable trigger for the Lead event. Form submission JavaScript triggers vary in reliability across plugins; the redirect does not.
Step 2: Add the Conversions API for server-side reliability
The Conversions API requires sending event data to Meta’s API endpoint from your server. On WordPress, there are a few implementation paths:
- The Meta Business Extension / WordPress plugin provides a built-in CAPI integration. It connects your WordPress site to Meta’s server and sends pixel events server-side automatically. This is the easiest path if you do not need deep customization — install, connect your Meta account, enable CAPI, and the plugin handles deduplication.
- Custom server-side implementation via a webhook or server function gives you more control over which events send, what customer data is included, and how deduplication is handled. This is the right approach if you are capturing lead source data (UTMs, gclids) and want to pass that data alongside the conversion event for richer attribution.
- GTM Server-Side container can route pixel events through a server-side GTM container before sending to Meta, providing some of the benefits of CAPI with a GTM-familiar interface. More infrastructure to maintain but good for organizations already using server-side GTM.
Whichever path you choose, enable event deduplication by passing a consistent event_id that matches between your pixel and CAPI implementations. Without deduplication, Meta counts the same conversion twice — once from the browser and once from the server — inflating your reported conversion numbers.
Step 3: Pass customer data for better match rates
Meta matches your conversion events to Meta user accounts using customer data: email address, phone number, name, and location. The more data you pass, the higher the match rate — and match rate directly affects how many of your conversions Meta can attribute to your ads.
On a contact form submission, you typically have the lead’s email address and phone number. Include these in your CAPI event payload, hashed with SHA-256 (Meta requires hashing for privacy compliance). The pixel can also pass this data client-side via the fbq('track', 'Lead', {em: hashedEmail}) call, though server-side via CAPI is more reliable because it does not depend on the user’s browser.
Passing hashed email and phone consistently is the single highest-leverage improvement most WordPress businesses can make to their Meta conversion tracking match rates. Match rates of 40 to 60 percent are common without customer data; 70 to 90 percent are achievable with it.
Step 4: Offline conversions — the step that actually optimizes toward revenue
Website and CAPI conversion tracking tells Meta who submitted a form. Offline conversion tracking tells Meta who became a paying client. The difference is the same as with Google Ads: if your business closes 1 in 8 leads, Meta’s “optimize for conversions” bidding will try to get you more form fills, not more clients, unless you tell it which form fills converted.
Meta’s offline conversions API accepts customer records from your closed deals — matched against the lead’s email, phone, or name — and attributes each won customer to the original ad click that generated the lead. Your campaigns can then optimize toward a Purchase or CustomEvent that represents a closed client, rather than a Lead event that represents a form submission.
The implementation requires:
- A way to track which leads become clients (a CRM, a spreadsheet with a “closed” field, or a lead management interface in your WordPress backend).
- A process for uploading closed deals to Meta periodically — weekly manual uploads via Meta Events Manager, or automated via the offline conversions API when a deal is marked won.
- Customer data from the original lead (email or phone) for Meta to match the offline event to the original ad interaction.
Businesses that implement offline conversion feedback to Meta consistently report that their campaigns shift toward higher-quality leads over time, even at the same budget. The algorithm is optimizing toward a stronger signal.
How this compares to Google Ads conversion tracking
The workflow is similar: capture UTM parameters and source data at the point of form submission, track the lead through to a closed sale, and feed the won outcome back to the ad platform. The technical implementation differs (gclid for Google, fbclid or customer data matching for Meta), but the attribution strategy is the same. If you have already implemented Google Ads offline conversion tracking on WordPress, most of the infrastructure you built — UTM capture, lead management, closed-deal tracking — applies directly to Meta with relatively minor additions.
For a detailed walkthrough of the Google Ads side of this, see Google Ads conversion tracking on WordPress. For the broader picture of how closed-loop attribution works across channels, closed-loop reporting on WordPress covers the full workflow.
How Sales Provenance fits
Sales Provenance handles the data infrastructure that both Google Ads and Meta Ads offline conversion tracking require: capturing source data (UTMs, fbclid, gclid) at form submission, storing it with each lead in your WordPress database, providing a lead management interface to track which leads close, and syncing the won outcomes back to both platforms as offline conversions. The pixel and CAPI setup is separate (Meta-side configuration), but the lead-to-client matching and offline conversion sync is what SP is built to handle.
If you are running both Google and Meta ads and want a single system that closes the attribution loop for both, revenue attribution on WordPress explains how the pieces fit together.