Idea Stream Meta Ads

    4 min read

    Meta Ads Meta Pixel vs. Conversions API: Run Both, Then Use This Checklist to Stop Double Counting

    Meta recommends running the Pixel and Conversions API together. Here’s a troubleshooting checklist with event_id examples for when the numbers look wrong.

    Direct answer: Run both. Meta calls the Pixel plus the Conversions API a redundant setup and recommends it. Send the same key events from the browser and the server, and give each pair the same event name and event ID so Meta counts it once. Most “my numbers doubled” or “my sales vanished” problems come from a mismatch in one of those two fields, which the checklist below walks through.

    What a matching pair looks like

    One purchase, order 1042, sent twice. Example values only.

    Browser (Pixel):

    fbq('track', 'Purchase',
      { value: 129.00, currency: 'USD' },
      { eventID: 'order-1042' }
    );

    Server (Conversions API event):

    {
      "event_name": "Purchase",
      "event_id": "order-1042",
      "event_time": 1793750400,
      "action_source": "website",
      "user_data": { "em": ["<sha256 of email>"] },
      "custom_data": { "value": 129.00, "currency": "USD" }
    }

    Same name, same ID, so Meta keeps one. Note the Pixel field is eventID and the server field is event_id. Different spelling, same value.

    Troubleshooting checklist

    Work top to bottom. Rows 1, 2 and 5 follow Meta’s deduplication docs; row 7 follows Meta’s best practices. Rows marked likely cause (our experience) are our checklist, not Meta statements.

    #CheckBad exampleWhat you’ll seeFix
    1Event names match exactlyPixel Purchase, server purchase or order_completeTwo separate events, double countingUse one exact name on both sides
    2IDs are the same valuePixel order-1042, server 1042Double countingBuild both from the same source (order ID)
    3Likely cause (our experience): ID isn’t empty or a placeholdereventID: '' or eventID: '{{order_id}}' (unfilled)Dedup fails or many events collapse into oneCheck the rendered page, not the template
    4Likely cause (our experience): ID is unique per eventEvery purchase sends eventID: 'purchase'Sales undercountUse order ID or a random ID per event
    5Pixel ID passed in the right spotID inside the data object instead of the options objectPixel event has no IDPut eventID in the 4th argument as above
    6Likely cause (our experience): Both sides actually fireServer fires, Pixel blocked on the thank-you pageFine for counting, but check the browser side is still liveTest in Events Manager
    7Server event has customer infouser_data only has IPLow match quality in Events ManagerAdd hashed email or phone where you have consent
    8Likely cause (our experience): Checked after the last site changeNew checkout theme went live last weekEvents quietly stoppedRe-test after every checkout or theme change

    How to test

    1. In Events Manager, open your data source and use Test Events.
    2. Place a test order and note the order ID.
    3. Look for the event from both browser and server, and confirm both carry the same event name and ID.
    4. If you see two separate Purchase events, go back to rows 1 to 5.

    Event match quality

    Meta’s Conversions API best practices point to event match quality in Events Manager and say better match quality can increase additional conversions reported. The usual fix is sending more customer information parameters with server events.

    Setting it up

    If your site runs on a common commerce or website platform, check for a ready-made connection first. Meta says it “partners with leading technology providers” to connect websites, apps, and offline systems to its business tools, and lists these as partner integrations in Events Manager. A custom build makes sense when you need control over which fields are sent.

    If tracking is right and sales are still low

    Look at the funnel: page speed, shipping costs that show up late, missing reviews or return policies, and ads that don’t match the landing page.

    FAQ

    Do I need both the Pixel and the Conversions API? Meta recommends both, as a redundant setup.

    Will running both double count sales? Not if each pair shares the same event name and event ID.

    What should I use as the event ID? Something unique to that event that both sides can read, such as the order ID.

    Why is it eventID in one place and event_id in the other? That’s how the Pixel and the API name the field. The value must match.

    Written by

    Aaron Rodgers

    Aaron Rodgers

    Founder, Digital Ingenuity

    Aaron leads Digital Ingenuity with a vision to transform how businesses grow through engineered, AI-powered marketing systems.

    Digital Ingenuity is a Texas-based digital marketing agency specializing in SEO, GEO, AEO and VEO, the four pillars of modern search visibility. We serve businesses across Texas, from Dallas and Fort Worth to Houston, Austin, San Antonio and 30+ cities statewide, plus nationwide clients seeking engineered growth systems. Ready to build your visibility engine? Call (214) 444 3385 or contact us.

    Next step

    Ready to Grow Your Business?

    Let’s discuss how Digital Ingenuity can help you achieve your marketing goals with AI-powered strategies. If implementing these strategies feels overwhelming, we’re here to help: request the free audit and we’ll schedule a free consultation to discuss your specific situation.

    The weekly read

    One email, Monday morning.

    What moved in DFW search this week, one idea to try, no fluff. New essays and guides arrive in your inbox, so you never have to come looking.

    One email a week. We do not share the list. Ever.