Facebook Pixel and Conversions API

TrueMetriks sends all your events and data back to Facebook so it optimizes your ads and gets you more sales. Here is how to set it up.

Set this up with AI

Copy this prompt into ChatGPT, Claude or whichever AI you use. It carries this whole guide, the pages it depends on, and a link to every video, so it can walk you through it one step at a time.

Open as text

Prefer to watch instead of read? Every step on this page also has a short video. They are bundled together at Facebook video guides - watch top-to-bottom to set everything up without reading.

Connect Facebook

Connecting Facebook is a Meta OAuth flow with five screens after you click the button in TrueMetriks. The whole thing takes about 90 seconds.

Video guide

How to connect Facebook to TrueMetriks

Prefer to read along? The full step-by-step is below.

Step 1 - Click Connect Facebook in TrueMetriks

In the TrueMetriks dashboard, open Settings > Ad integrations, pick the Facebook tab, and click the highlighted Connect Facebook button.

Ad integrations

Connect the ad networks you want to attribute.

Connected

Ad integrations

Connect ad and analytics platforms to enable server-side tracking.

Facebook Ads Not connected

Connect Facebook to fire CAPI events server-side.

Don't revoke this app in your Facebook Business Settings.

If you do, your CAPI tracking will stop firing until you reconnect from this page.

Settings → Ad integrations → Facebook - click the highlighted Connect Facebook button to start the Meta OAuth flow.

A Meta OAuth popup opens. If your browser blocks popups, you will get an inline prompt to allow it - allow it and click Connect Facebook again.

Don't revoke this app in your Facebook Business Settings later. If you do, your Conversions API events stop firing until you re-run this flow. Use the Disconnect button in this card instead - it cleans up on both ends.

Step 2 - Confirm your Facebook account

Meta asks which Facebook user is granting access. If you are signed into the right Facebook account, click Continue.

tm.

Continue as Your Name?

TrueMetriks Analytics will receive your name and profile picture.

Not Your Name?

Step 2 - Meta opens its OAuth dialog. Confirm it's your account, then click the highlighted Continue button.

If the wrong account is shown (for example a personal account when you wanted a business one), click Log into another account and sign in. The Facebook user only needs profile-level access - this screen is just identity confirmation, no business permissions are granted here yet.

Step 3 - Choose which Businesses to share

Meta now asks how much of your Business Manager footprint to give TrueMetriks. You have two options.

tm.

Choose the Businesses you want TrueMetriks Analytics to access

Later you'll be able to review what TrueMetriks Analytics will be able to do with the Businesses you select.

  • Opt in to all current and future Businesses

    This will give TrueMetriks Analytics access to your current Businesses, in addition to any Businesses you create in the future.

  • Opt in to current Businesses only

    This will only give TrueMetriks Analytics access to the Businesses you select.

Step 3 - Pick the scope. "All current and future" is the lowest-friction choice. "Current only" lets you hand-pick which Business portfolios TrueMetriks sees.
  • Opt in to all current and future Businesses (recommended for most accounts) - TrueMetriks gets access to every Business portfolio on this Facebook account, including any you create later. Pick this if you run a single agency or own all the portfolios on this account.
  • Opt in to current Businesses only - You will hand-pick which portfolios on the next view. Pick this if your Facebook account is a member of someone else's Business that you do not want TrueMetriks to touch.

Step 4 - Pick the Business portfolios (only if you chose "current only")

If you chose current Businesses only, Meta shows a searchable list of every Business portfolio your account belongs to. Tick the ones you want TrueMetriks to access. Use Select all to grab them in one click.

tm.
  • Opt in to all current and future Businesses

    This will give TrueMetriks Analytics access to your current Businesses, in addition to any Businesses you create in the future.

  • Opt in to current Businesses only

    This will only give TrueMetriks Analytics access to the Businesses you select.

0 Assets Selected
  • Acme Holdings

    346740378173522

  • Northwind Co.

    165904530700341

  • Riverline Studio

    216135910729119

  • Client B - Lifestyle

    726022288418319

  • Demo Wellness

    754415809583780

  • Side Project LLC

    131040391987347

Step 4 (only if you picked "current only") - tick every Business portfolio that runs ads you want TrueMetriks to attribute. Scroll for more.

Each Business portfolio you select unlocks every ad account and every pixel inside it. You will pick the specific pixel for each TrueMetriks site in a later step (after the connect flow finishes).

Step 5 - Review the permission grant

Meta summarises what TrueMetriks is about to receive. There are three permissions and one summary line.

tm.

Review TrueMetriks Analytics's access request

  • Manage ads for ad accounts that you have access to

  • Access your Facebook ads and related stats

  • Manage your business

    2 Businesses selected

This integration enables TrueMetriks Analytics to establish a connection with your business portfolio(s), and manage everything in the portfolio except for sensitive actions, like deleting the portfolio. They may be able to use an API to manage the portfolio, including giving access to third parties. .

Step 5 - Last screen before commit. Read the three permissions, then click the highlighted Save button.
  • Manage ads for ad accounts that you have access to - lets TrueMetriks read your ad account list and post events to the right pixel.
  • Access your Facebook ads and related stats - lets TrueMetriks read campaign / ad-set / ad metadata so it can attribute clicks back to specific ads in the dashboard.
  • Manage your business - lets TrueMetriks list pixels and catalogs inside the Business portfolios you selected. The line below ("2 Businesses selected" or similar) shows the count from Step 4.

Click Save when the list matches what you expect. If you spot the wrong scope, hit Back and re-do Step 3 or 4.

Step 6 - Confirmation, then back to TrueMetriks

Meta confirms the connection. Click Got it and the popup closes.

tm.

Your Name has been connected to TrueMetriks Analytics

To manage this connection, .

Step 6 - Meta confirms. Click Got it. The popup closes and the dashboard card flips to "Connected".

When the popup closes, the TrueMetriks dashboard card flips to Connected and reveals the next sub-section: Select your pixel. That is the next step below.


Select your pixel

The connect step gave TrueMetriks access to your Business portfolios. Now you tell it which pixel inside those businesses this site should fire events into. Three clicks.

Video guide

How to select your pixel in TrueMetriks

Prefer to read along? The full step-by-step is below.

Step 1 - Click Add pixel

Under the Active pixels header, click the highlighted Add pixel button in the top-right.

Active pixels

5 pixels ready to add from your connected Business Manager.

Click Add pixel above to pick the one this site fires events into.

Step 1 - click the highlighted Add pixel button in the top-right of the Active pixels section.

The hint banner shows how many pixels TrueMetriks found across the Business portfolios you connected. If the count is 0, your Business Manager has no pixel yet - create one in Facebook Events Manager first, then come back.

Step 2 - Pick the pixel from the dropdown

Clicking Add pixel inserts an empty row with a Pick a pixel dropdown. Click it to see every pixel in your connected Business portfolios. Each row shows the pixel name on the left and the Business / Ad Account it belongs to on the right.

Active pixels

  • My Site Pixel (My Site | Ad Account)
  • Demo Brand Pixel (Demo Brand | Ad Account)
  • Client A Pixel (Client A Holdings)
  • Side Project Pixel (Side Project LLC)
  • Test Pixel (Test Business)
Step 2 - click the highlighted Pick a pixel dropdown to see every pixel inside the Business portfolios you connected. Pick the one this site fires events into.

Click the pixel you want. The dropdown closes and the row collapses to show your selection.

Step 3 - Review the Allowed events list

Click the row to expand it. Four sections appear: Pixel (the same selector, in case you want to swap), Test event code (covered in How to test), Allowed events (highlighted), and Custom events (covered later).

Active pixels

My Site Pixel

under: My Site | Ad Account

Pixel

Test event code

TEST12345

Codes expire after 24 hours; after expiry, events flow to your production Facebook feed.

Allowed events

Uncheck events you don't want fired to this pixel. Useful for restricted-category advertisers.

PageView
ViewContent
AddToCart
InitiateCheckout
Lead
Schedule
Purchase

Custom event mappings

Fire a custom event name alongside the standard one (e.g. Purchase + Purchase_NewCustomer for granular reporting). Restricted-category advertisers can uncheck restricted standards above so only the custom name fires.

Step 3 - click the row to expand. The Allowed events block (highlighted) is where you control which standard events go to this pixel. Test event code and Custom event mappings are covered separately.

How the Allowed events list works

All seven standard Facebook events (PageView, ViewContent, AddToCart, InitiateCheckout, Lead, Schedule, Purchase) are checked by default. A checked box does not make an event fire - it just means "if my site fires this event, send it to this pixel." Which ones actually fire depends on your site and platform.

Leave all seven checked unless you are in a restricted category (health, wellness, finance, and similar) where Meta blocks certain standard names. In that case, uncheck the restricted standard here and fire a custom event in its place (see Custom events below).

Click Save changes at the bottom of the integration card to persist your pixel selection and the allowed-events list.

Custom events

The Allowed events list above controls which standard event names go to your pixel. Custom events let you fire an additional, custom-named event alongside any standard event. Two reasons to use them:

  1. Granular reporting - mirror Purchase as Purchase_NewCustomer for new-vs-returning splits, or Lead as Lead_Webinar to break out a specific lead source. Both events fire; the standard one keeps your existing optimization audiences healthy and the custom one gives you a dedicated reporting column in Ads Manager.
  2. Restricted-category bypass - if your business is in a category Meta restricts (health, wellness, finance, supplements, gambling, dating, alcohol, and a few others), Meta will block or throttle ad delivery on certain standard event names like Purchase, Lead, InitiateCheckout, AddToCart, Schedule, and ViewContent. In practice you are stuck with PageView for optimization, which is too high in the funnel to be useful. The workaround is to uncheck the restricted standards in the Allowed events list above and instead fire a custom event with a meaningless name (e.g. ghyu) that Meta's pattern detector cannot map back to a restricted intent. For the full strategy - including how to keep your product names and URLs just as neutral as the event name - see the dedicated Restricted categories guide. A blog post on which categories are restricted and how Meta enforces it is coming too; we'll link it here when it ships.

Explainer video

How to create a custom event mapping in TrueMetriks

Walkthrough - restricted categories

If your business sits in a restricted category, the video below walks through the exact "uncheck the restricted standards, fire a custom event with a neutral name" pattern from point 2 above, end-to-end in TrueMetriks.

Explainer video

How to use custom event mappings to bypass Facebook's restricted-category limits

For the full playbook - including how to keep your product names and URLs just as neutral as the event name - see the dedicated Restricted categories guide.

Step 1 - Click Create

Inside the expanded pixel row (the same one where the Allowed events checkboxes live), scroll to the Custom events panel and click the highlighted Create button in the top-right.

Custom events

Fire a custom event name alongside the standard one (e.g. Purchase + Purchase_NewCustomer for granular reporting). Restricted-category advertisers can uncheck restricted standards above so only the custom name fires.

Important - restricted categories: if you advertise in a restricted category (health, finance, etc.), read this guide before you set up your custom events so events fire compliantly. Read the guide

After saving, wait 30-60 seconds for changes to propagate before firing test events. Removing a custom event stops it here, but the Custom Conversion entry remains in Facebook Ads Manager - delete it there if you no longer need it.

No custom events yet. Click Create to add one.

The Custom events panel - click the highlighted Create button to open the popup.

Step 2 - Fill in the Create custom event popup

Clicking Create opens the Create custom event popup. It has three fields, plus an optional fourth that appears only for Purchase:

  • Standard event (dropdown) - the standard event you want to mirror. Pick Purchase to fire every time a Purchase event would. Same for Lead, Schedule, etc.
  • Custom event name (input) - any name you want. It must start with a letter and can contain letters, numbers, spaces, _ or -, up to 40 characters. For restricted categories, use something arbitrary and meaningless like ghyu, kt8x2, or wellness_evt_a - anything that does NOT contain the words purchase, buy, cart, checkout, lead, signup, etc. For granular reporting, use something descriptive like Purchase_NewCustomer or Lead_Webinar.
  • Fire when (dropdown) - Always (the default) fires on every matching event. For Purchase, Lead, and Schedule you can also pick New customers only or Returning only to split your audience.
  • Product filter (Purchase only, optional) - fire only when a purchased product matches a name or ID. Leave it blank to fire on every Purchase. See the Product filter section below.

Then click the highlighted Create button.

Create custom event

custom_purchase
Product filter Optional

Only fire when a purchased product matches. Leave blank to fire on every Purchase.

Upsell Bottle
SKU-1042

Matches if any purchased product matches the name or the ID. Case-insensitive.

The Create custom event popup - pick the standard event, type a custom name, choose when to fire, then click Create. The optional product filter shows for Purchase only.

Step 3 - Save changes to create it in Facebook

Your new custom event appears as a card in the Custom events list with a coloured status dot. It starts amber ("unsaved - click Save changes") until you persist it.

Click the Save changes button at the bottom of the integration card. TrueMetriks calls the Meta API and creates the matching Custom Conversion in Facebook for you; the dot turns green and a synced check mark appears.

To change a saved custom event later, click the pencil to edit when it fires (or its product filter). The standard event and custom name lock once it is saved, so to rename one, delete it with the trash icon and create a new one.

Custom events

Purchase custom_purchase
A saved custom event - the green dot and check mean it is live in Facebook. Click the pencil to edit when it fires, or the trash to remove it.

Step 4 - Confirm the Custom Conversion appears in Facebook

The moment you save, TrueMetriks calls the Meta API and creates a Custom Conversion in Facebook on your behalf. You don't have to set it up manually.

To confirm it landed, go to Meta Ads Manager → Events Manager (left rail) → pick the pixel you mapped this to → Custom conversions tab. Your custom name shows up in the table, attached to the right pixel and Ad Account.

Custom Conversions

  • Connect data
  • Overview
  • Datasets
  • Custom conversions
  • Integrations

Measure and Optimize with Custom Conversions

Use custom conversions to measure outcomes that happen on your website or in-store, and optimize your ads for URL traffic and custom events.

Q Search by name or ID
Custom Conversions Status Data Source Total custom conversions
Course Page View
ID 924925796383746
Active
My Site Pixel
ID 1234567890123456
228
Last received 8 hours ago
custom_purchase
ID 1032038776154427
Inactive
My Site Pixel
ID 1234567890123456
0
Never received event
book_a_call
ID 1297191442601820
Inactive
My Site Pixel
ID 1234567890123456
0
Never received event
Facebook Events Manager → your pixel → Custom conversions. The custom_purchase conversion was auto-created the moment you saved the mapping in TrueMetriks. It starts Inactive until the first event lands.

It will be Inactive until the first event lands. Fire a test event (covered in How to test below) or wait for live traffic; the status flips to Active once Meta sees the first conversion.

Step 5 - Add the conversion as a column in Ads Manager

A Custom Conversion is only useful if you can see it in your campaign reporting. In Meta Ads Manager → Campaigns (or Ad sets / Ads) → click the Columns: Performance dropdown in the top-right → pick Customize columns at the bottom of the menu. Search for your custom name, tick Total, Value, and Cost on the matching row, then click Apply.

Customize columns

custom_purchase

1 result for "custom_purchase"

Conversions Total Value Cost
custom_purchase

19 columns selected

Drag and drop to arrange columns as they'll appear in the table.

  • Campaign
  • Delivery
  • Actions
  • Results
  • Cost per result
  • Budget
  • Amount spent
  • Impressions
  • Reach
  • custom_purchase
Ads Manager → Columns: PerformanceCustomize columns. Search the custom name (custom_purchase), tick Total, Value, Cost, then Apply. The conversion now appears in the right rail as a selected column.

Step 6 - Read the column on every campaign row

The Campaigns / Ad sets / Ads table now has a dedicated column for your custom conversion. Use it the same way you would use a standard Purchase column - sort by it, build saved reports off it, set up automated rules against it.

Campaigns Ad sets Ads
Columns: Custom Breakdown
Campaign custom_purchase custom_purchase Value Delivery Results Cost per result Amount spent Impressions
CBO Sales Cold 20 - Promo - Dupli... 17
custom_purchase
$0.00 Off $1.43
Per Messaging Conv...
$7.00
Daily
$24.34 18,737
CBO Sales Cold 20 - Promo - Dupli... 8
custom_purchase
$0.00 Off $3.08
Per Messaging Conv...
$7.00
Daily
$24.62 18,095
CBO Sales Cold 19 - Promo - 3 - - Off -
Conversion
$7.00
Daily
$3.41 2,587
CBO Sales Cold 18 - Pro - 5 - - Off -
Conversion
$10.00
Daily
$7.04 3,118
Once the column is added, every Campaign / Ad set / Ad row in Ads Manager shows the custom_purchase count and value alongside the standard metrics. You can now optimize and report on the custom conversion the same way you would on a standard event.

Important gotchas

  • Wait 30 to 60 seconds after Save before firing test events. Meta needs to finish creating the Custom Conversion before it will accept matching events. If you fire too fast, the first few events will land as plain custom events without the conversion attached.
  • Removing a custom event in TrueMetriks does NOT delete the Custom Conversion in Facebook. It stops TrueMetriks from firing the custom name, but the Custom Conversion entry stays in Events Manager. If you no longer need it, delete it from Facebook's Custom Conversions tab manually.
  • Custom Conversions have a 100-per-pixel limit (Meta's restriction, not ours). Each custom event you add counts as one. The Custom Conversions list in your pixel will show "You have N custom conversions remaining" at the bottom.

Product filter

The Product filter is an optional control on a Purchase custom event. It lets you fire the custom event only when a specific product was bought, instead of on every Purchase. It appears in the Create custom event popup whenever the standard event is Purchase.

Video guide

How the Purchase product filter works in TrueMetriks

You have two fields, and they are either/or - a purchase fires the event if it matches either one:

  • Product name (contains) - a case-insensitive contains match on the product name. Enter Masterclass and a product called "Ultimate Ads Masterclass" matches, because its name contains that word.
  • Product ID (exact) - a case-insensitive exact match on the product's ID or SKU.

Fill in one, the other, or both. If any purchased product in the order matches either field, the custom event fires. Leave both blank and the event fires on every Purchase, the same as not using the filter at all.

Product filter Optional

Only fire when a purchased product matches. Leave blank to fire on every Purchase.

Masterclass
SKU-1042

Matches if any purchased product matches the name or the ID. Case-insensitive.

The optional Product filter on a Purchase custom event - here it fires only when a purchased product name contains Masterclass, so "Ultimate Ads Masterclass" matches. Fill the name, the ID, or both.

Why this is useful

A product filter lets you optimize and report on a single product instead of "any purchase". For example, if your funnel has an upsell with a strong take rate, create a Purchase custom event filtered to that upsell product, add it as a column in Ads Manager, and optimize your campaigns toward that specific conversion - so Meta learns to find buyers of your best upsell, not just any buyer.

Catalog

A Facebook Catalog is the product database Meta uses to power Advantage+ catalog ads (dynamic product ads, retargeting carousels, Instagram shops). Connecting your catalog to TrueMetriks lets Meta match every Purchase, AddToCart, and ViewContent event we ship against a specific product in your catalog, so dynamic-product-ad audiences populate correctly.

This step is mostly useful if you sell physical products on Shopify or WooCommerce. If you only run lead-gen or info-product campaigns, you can skip the catalog entirely - the Purchase / Lead events will still attribute back to your ads through the pixel selection above.

What you need before connecting

Meta's catalog format requires a few fields on every product. Most ecommerce platforms generate this automatically when you install their Facebook integration (covered below per-platform):

  • id - a unique product identifier per item, usually your SKU.
  • title - product name.
  • description - product description.
  • availability - one of in stock, out of stock, preorder, available for order, discontinued.
  • condition - one of new, refurbished, used.
  • price - amount + ISO currency, e.g. 29.99 USD.
  • link - public URL of the product page.
  • image_link - public URL of the main product image. Minimum 500x500 pixels, 1024x1024 recommended, JPEG or PNG, under 8 MB.
  • brand - manufacturer or brand name.

If your catalog is missing fields, products with bad data are excluded from Advantage+ ads and your catalog match rate drops.

Video guide

How to connect a Facebook catalog in TrueMetriks (plus the automatic WooCommerce path)

Prefer to read along? The full step-by-step is below. The Shopify-specific catalog flow has its own walkthrough further down.

Step 1 - Click Connect Facebook Catalog

In TrueMetriks, scroll down to the Facebook Catalog panel inside the Facebook integration card and click the highlighted button.

Facebook Catalog

Catalog access not yet granted. Click below to authorize.

Settings → Ad integrations → Facebook → Facebook Catalog panel. Click the highlighted button to start the Meta OAuth grant for catalog access.

This triggers a second Meta OAuth grant, separate from the one that connects your pixel. Catalog access is a different permission scope, which is why Facebook asks again.

Step 2 - Authorize through Meta OAuth

A separate Meta popup opens for the catalog grant. It walks you through four screens.

Confirm your Facebook account. Click Continue.

tm.

Continue as Your Name?

TrueMetriks Analytics will receive your name and profile picture.

Not Your Name?

Step 2 - Meta opens its OAuth dialog. Confirm it's your account, then click the highlighted Continue button.

Choose which Businesses to share. Same scope choice as the pixel connect: opt in to all current and future, or pick specific Business portfolios. Pick whichever is appropriate and click Continue.

tm.

Choose the Businesses you want TrueMetriks Analytics to access

Later you'll be able to review what TrueMetriks Analytics will be able to do with the Businesses you select.

  • Opt in to all current and future Businesses

    This will give TrueMetriks Analytics access to your current Businesses, in addition to any Businesses you create in the future.

  • Opt in to current Businesses only

    This will only give TrueMetriks Analytics access to the Businesses you select.

Step 3 - Pick the scope. "All current and future" is the lowest-friction choice. "Current only" lets you hand-pick which Business portfolios TrueMetriks sees.

Review the permission grant. The catalog grant asks for two things the pixel grant did not: a new top-line permission Manage your product catalogs, plus a Review what terms you are agreeing to → Product Catalog Terms section. Read them, then click Save.

tm.

Review TrueMetriks Analytics's access request

  • Manage your product catalogs

  • Manage ads for ad accounts that you have access to

  • Access your Facebook ads and related stats

  • Manage your business

    2 Businesses selected

Review what terms you are agreeing to

This integration enables TrueMetriks Analytics to establish a connection with your business portfolio(s), and manage everything in the portfolio except for sensitive actions, like deleting the portfolio. They may be able to use an API to manage the portfolio, including giving access to third parties. .

Catalog OAuth review screen. Note the extra Manage your product catalogs permission at the top and the Product Catalog Terms link - both unique to the catalog grant (the pixel grant doesn't ask for either). Click Save.

Connection confirmed. Click Got it to close the popup. The TrueMetriks panel reloads.

tm.

Your Name has been connected to TrueMetriks Analytics

To manage this connection, .

Step 6 - Meta confirms. Click Got it. The popup closes and the dashboard card flips to "Connected".

Step 3 - Create a new catalog or connect an existing one

After OAuth closes, the panel in TrueMetriks switches to a catalog picker:

Facebook Catalog

Create new catalog (recommended)

We create a fresh catalog named "TrueMetriks - your-domain.com" so your products stay isolated from any other catalog you run.

Connect to existing catalog

  • Select a catalog...
  • TrueMetriks - your-domain.com - Main
  • Products from your-domain.com - Main
  • Demo Brand Catalog
Two paths: Create new (recommended) makes a clean catalog TrueMetriks owns end-to-end, or Connect to existing if you already have a Shopify / WooCommerce / Meta-Pixel-generated catalog you want to reuse.
  • Create new catalog (recommended) - TrueMetriks creates a fresh catalog named TrueMetriks - your-domain.com inside the Business portfolio you picked. Use this if you don't already have a catalog or if you want a clean separation between TrueMetriks-tracked products and any other catalog you run.
  • Connect to existing catalog - pick a catalog from the dropdown. Use this if Shopify, WooCommerce, or another partner already populates a catalog you want to keep.

Click Connect catalog. TrueMetriks saves the choice and the panel flips to "Catalog connected".

Step 4 - Find your catalog in Meta Commerce Manager

Catalogs live in Meta's Commerce Manager, not Ads Manager. Open Commerce Manager → pick the same Business portfolio you connected → Assets in the left rail → Catalogs. Your new catalog appears in the list.

Commerce Manager

  • Assets
  • All tools

Catalogs

Q Search by name or ID
  • TrueMetriks - your-domain.com

    Catalog ID: 1655588159057516

  • Demo Brand Catalog

    Catalog ID: 1680276399787484

Meta Commerce Manager → pick your Business portfolio in the top-left → the catalog TrueMetriks just created appears in this list. Click it to open the catalog dashboard.

Click into the catalog to open its dashboard. Catalog → Products in the left rail shows every item the catalog knows about; on a fresh catalog this list is empty until your platform (Shopify / WooCommerce / a feed URL) starts pushing products in.

Step 5 - Connect the pixel as the catalog's event source

A catalog is just product data until you wire it to a pixel. Meta uses the pixel to learn what your visitors viewed, added, and bought, and matches those events to catalog products via the content_ids field on each event.

On the catalog Overview screen, the Connect to tracking row will be red until you do this. Click Connect event source (highlighted), or use Catalog → Events in the left rail.

Commerce Manager

  • Overview
  • Catalog
  • Products
  • Sets
  • Data sources
  • Events
  • Offers
  • Shops
  • Settings

Overview

Finish your Advantage+ catalog ads setup

You're a few steps away from using this catalog for Advantage+ ads. Using a catalog lets you show your products to the right people.

  • Add basic Info
  • Connect to tracking

  • Set permissions

    You can manage catalog access for people and partners in Business Settings.

  • Upload products
Catalog Overview → Connect to tracking shows red until you wire a pixel into the catalog. Click Connect event source (highlighted) - or use the Catalog → Events nav item on the left.

A dataset picker opens. Flip the toggle on the same pixel you picked in Select your pixel above, then click Connect.

Make the most of your event tracking

Setting up your event tracking with the right dataset will enable you to automatically show relevant products from your catalog to people who have searched for, viewed or interacted with them on your website.

Connect a dataset to track the products people are interacting with on your website or app.

Available datasets

  • My Site - WP

    Meta SDK ID: 503905749106283

  • Demo Brand Pixel

    Dataset ID: 2820043304834500

  • My Site Pixel

    Dataset ID: 618120340405935

Catalog → Events tab. Flip the toggle on the pixel that fires Purchase for this site (the same one you picked in Select your pixel), then click Connect. Meta now uses the pixel's product IDs to populate dynamic-product-ad audiences from your catalog.

Meta now knows which pixel to listen to for catalog matching.

Step 6 - Watch the catalog match rate climb

The Events tab now shows your dataset with a Catalog match rate gauge.

Events

To improve ads targeting, keep your catalog match rate above 90%

We recommend at least 90% catalog match rate - item interactions on your website or app that match items in this catalog. Only these items can be used for ads targeting. Increase it by resolving issues.

Dataset Catalog match rate (last 28 days) Status
My Site Pixel
Dataset ID: 618120340405935
0% Low match rate
After connecting, this is your day-to-day view. Catalog match rate is the share of pixel events whose content_ids match an item in this catalog. Starts at 0% on first connect; aim for 90%+ within a day or two of live traffic.

The match rate is the share of Purchase / AddToCart / ViewContent events whose content_ids actually map to a product in this catalog. It starts at 0% the moment you connect (no events have arrived yet under the new wiring) and climbs as live traffic flows in. Aim for 90%+ within a day or two of normal traffic; anything below 90% means a chunk of your events are firing IDs that don't exist in the catalog, which usually points to:

  • The pixel events ship Shopify variant_id but the catalog stores product_id (or vice versa).
  • Some products are missing from the catalog feed entirely.
  • Newly added products haven't synced yet (Shopify / Woo feeds typically refresh every 1-24 hours).

The Catalog → Events screen has a per-dataset diagnostics view that lists the most-common unmatched IDs - work through those to lift the score.

Connect a catalog on Shopify

On Shopify, the TrueMetriks Catalog Sync app handles everything end-to-end - just like on WordPress, you do not need Meta's "Facebook & Instagram by Meta" sales channel. Install the TM app once, and every product create / update / delete in Shopify pushes to the catalog you connected in Step 3 above. Initial sync runs automatically the moment the install completes.

This connection is separate from the Facebook OAuth you did earlier - it grants TrueMetriks read access to your Shopify products, which lets us push them into the Facebook catalog.

Video guide

How to connect a Shopify catalog to TrueMetriks

Prefer to read along? The full step-by-step is below.

Step 1 - Open Shopify Admin Settings

Inside your Shopify Admin, click Settings in the bottom-left of the sidebar.

  • Home
  • Orders5
  • Products
  • Customers
  • Marketing
  • %Discounts
  • Content
  • $Markets
  • Finance
  • Analytics

Sales channels

  • Online Store

Apps

  • Add
Shopify Admin → click the highlighted Settings link in the bottom-left of the sidebar.

Step 2 - Click Domains

Inside Settings, scroll the store sub-menu and click Domains.

Your Business LLC

Organization

Search
  • Organization
  • Users

Your Store

your-store.com

  • General
  • Plan
  • $Billing
  • Payments
  • Checkout
  • Customer accounts
  • Shipping and delivery
  • %Taxes and duties
  • Locations
  • $Markets
  • Apps
  • Sales channels
  • Domains
  • Customer events
  • Notifications
  • Metafields and metaobjects
  • ALanguages
  • 🔒Customer privacy
  • Policies
Inside Settings, scroll down the store sub-menu and click the highlighted Domains entry.

Step 3 - Copy the .myshopify.com domain

You will see two rows: your custom storefront domain (marked Primary) and the original Shopify-issued domain that ends in .myshopify.com. Copy the .myshopify.com row, not the primary one.

Domains

Domain Status
your-store.com Primary Connected
your-store-abc123.myshopify.com Connected
Copy the your-store-abc123.myshopify.com row (highlighted) - this is the original Shopify-issued domain that TrueMetriks needs, NOT the custom your-store.com domain above it.

TrueMetriks identifies Shopify stores by their permanent .myshopify.com handle, so the primary domain will not work even if it points to the same store.

Step 4 - Paste it into TrueMetriks and click Connect Shopify

Switch back to the TrueMetriks dashboard, scroll to the Connect Shopify (for FB Catalog sync) panel inside the Facebook integration card, paste the .myshopify.com domain into the input, and click Connect Shopify. The button starts spinning and a small popup window opens.

Step 5 - Install the TrueMetriks Catalog Sync app

The popup is Shopify's standard install prompt. The app is TrueMetriks Catalog Sync and asks for only two scopes: View store data: Products (so we can read your product list) and View staff and contributor data: Store owner. Click Install.

Your Store - Install app - Shopify Plus

admin.shopify.com/store/your-store-abc123/app/grant?access_...
Q Search

Install app

TrueMetriks Catalog Sync

Game Dev Pro LLC

This app needs access to:

  • View staff and contributor data

    Store owner

  • View store data

    Products

A Shopify popup opens with the install prompt. The app is TrueMetriks Catalog Sync and only asks for View store data: Products (so we can read your product list) and View staff and contributor data: Store owner. Click Install.

Once you click Install, Shopify provisions the access token, the TrueMetriks backend receives it, and the popup closes itself. The TrueMetriks panel updates inline to Connected to your-store-abc123.myshopify.com. Shopify product catalog sync is active. without reloading the page.

Step 6 - Sync is automatic from this point

The moment the install completes, TrueMetriks pulls your entire Shopify product catalog and pushes it into the Facebook catalog you picked in Step 3 above. Every subsequent product create, update, or delete in Shopify is forwarded in real time through the same webhook pipeline - no scheduled cron, no manual re-imports.

You do not need to do anything else. The pixel events fired by the Shopify Custom Pixel (the one you set up in Select your pixel above) ship content_ids that match the Shopify product IDs in the catalog, so dynamic-product-ad audiences populate as soon as live traffic flows in.

Same automatic-sync model on WordPress: the TrueMetriks WP plugin handles all create / update / delete events through WooCommerce hooks. No manual sync is required on either platform.

Field mapping note: the TrueMetriks Catalog Sync app ships variant_id as the catalog id for variant-level products and product_id for simple products. The TrueMetriks Shopify Custom Pixel emits matching content_ids automatically. If you ever wire a non-TM pixel to the same catalog, double-check it ships the same ID shape or your match rate will drop.

Connect a catalog on WordPress / WooCommerce

On WordPress + WooCommerce, the TrueMetriks plugin handles the catalog sync end-to-end - you don't need Meta's "Facebook for WooCommerce" extension at all. The TrueMetriks plugin pushes products into the catalog you connected in Step 3 above, so there's nothing to wire up manually on Meta's side.

How it works

  1. You connect the Facebook Catalog in the TrueMetriks dashboard (Steps 1-3 above) - that's the only place the OAuth + catalog selection happens.
  2. The TrueMetriks WordPress plugin polls your TrueMetriks account, detects the connection, and starts pushing products into the connected catalog automatically.
  3. Every time you create, update, or delete a product in WooCommerce, the plugin syncs that change to the catalog in real time. No cron, no scheduled re-pushes.

That means you do not need to repeat the Facebook OAuth inside WordPress. The dashboard connection covers both the pixel events and the catalog feed.

Before connecting on the dashboard

Open WordPress Admin → TrueMetriks → Facebook Catalog. Before the dashboard connection is in place, the tab looks like this:

  • Products
  • Payments 1
  • TrueMetriks
  • Analytics
  • Marketing
  • FunnelKit
  • Appearance
  • Plugins 8
  • Users
  • Tools
  • Settings

Facebook Catalog

Push your WooCommerce products to Facebook Catalog for Advantage+ and Dynamic Product Ads. Products sync automatically whenever you create, update, or delete a product in WooCommerce.

Connect your Facebook Catalog in the first. The connection status shown below is fetched from your TrueMetriks account.

Re-checks the connection state from your TrueMetriks account.

Default brand

Your Brand

Facebook Catalog requires a brand on every product. This value is sent as the fallback brand when a product has no brand assigned in WooCommerce (via product_brand, pwb-brand, or yith_product_brand taxonomies). Leave blank to use your WordPress site name.


Status: Facebook Catalog is not connected to this site yet.

Set up the Facebook Catalog connection on the , then come back here and click Refresh to confirm. The Connect button below will take you straight to the right dashboard page.

WordPress Admin → TrueMetriksFacebook Catalog tab, before the dashboard connect. The status reads not connected until you connect the catalog in the TrueMetriks dashboard.

The Status line confirms the catalog isn't connected yet. The blue Connect Facebook Catalog button just deep-links you straight to the right page on the TrueMetriks dashboard - it doesn't run any OAuth on the WordPress side.

After connecting on the dashboard

Once you complete the connect flow in the dashboard (Steps 1-3 above), the WordPress plugin auto-detects the change on its next poll. If the WordPress tab was already open, click Refresh connection status to force a re-check immediately. The green banner appears and the tab switches to the connected layout:

Facebook Catalog

Push your WooCommerce products to Facebook Catalog for Advantage+ and Dynamic Product Ads. Products sync automatically whenever you create, update, or delete a product in WooCommerce.

Connect your Facebook Catalog in the first. The connection status shown below is fetched from your TrueMetriks account.

Re-checks the connection state from your TrueMetriks account.
Connection refreshed. Connected to TrueMetriks - your-domain.com.

Default brand

Your Brand

Facebook Catalog requires a brand on every product. This value is sent as the fallback brand when a product has no brand assigned in WooCommerce (via product_brand, pwb-brand, or yith_product_brand taxonomies). Leave blank to use your WordPress site name.


Connected to: TrueMetriks - your-domain.com 1655588159057516

Products sync automatically on every create, update, and delete. Use Resync all products only after a sync error or to force a full re-push of your catalog.

Same tab, once the catalog is connected in the TrueMetriks dashboard. The plugin auto-detects the connection and switches to Connected to with the catalog ID, plus Resync all products and Disconnect buttons.

You now have three actions on this tab:

  • Refresh connection status - re-fetches the connection state from your TrueMetriks account. Useful right after connecting in the dashboard, or if you ever suspect WordPress and the dashboard have drifted apart.
  • Default brand - Meta requires a brand field on every catalog product. The plugin reads brand from WooCommerce taxonomies (product_brand, pwb-brand, yith_product_brand) when available; this fallback value is used for any product that doesn't have one. Leave blank to use your WordPress site name as the fallback.
  • Resync all products - forces a full re-push of every product in your WooCommerce catalog into the Facebook catalog. Normal create / update / delete events sync automatically; only use Resync after a sync error or a Meta-side rebuild.
  • Disconnect - stops the WordPress plugin from pushing further updates and removes the catalog binding. The dashboard-side connection stays in place; reconnect the WordPress side later with Refresh connection status.

What you should NOT do

You do not need to install Facebook for WooCommerce alongside the TrueMetriks plugin. If you already have it, that's fine - it'll create its own duplicate catalog. Just make sure the catalog you pick in the TrueMetriks dashboard (Step 3) is the TrueMetriks-managed one, not the Facebook-for-WooCommerce-managed one. Pointing TrueMetriks at the wrong catalog will work, but you'll end up syncing the same products twice into different catalogs.

Field mapping note: the TrueMetriks plugin ships the WooCommerce product_id (or variation_id for variable products) as the catalog id, and the TrueMetriks tracker fires matching content_ids on Purchase / AddToCart / ViewContent events. Catalog matching works without any extra configuration.

Other platforms

If your store runs on BigCommerce, Squarespace Commerce, Wix, or a custom build, the path is:

  1. Use Meta's Data Sources flow in Commerce Manager (Catalog → Data sources) to point Meta at a product feed URL or CSV / XML upload.
  2. Or use a feed-management tool (DataFeedWatch, GoDataFeed, Channable) to generate and push a feed.
  3. Connect that catalog in TrueMetriks using the Connect to existing catalog path.
  4. Make sure whatever fires your Purchase / AddToCart / ViewContent events ships content_ids that match the id field in the feed.

Lead forms and DM ads

Connect your Facebook Page and TrueMetriks records every native lead form submission and every click-to-message conversation as a conversion, attributed to the exact ad, ad set and campaign, so cost per lead lands in the reports you already use.

Facebook and Instagram let you run two kinds of ad where the person never reaches your website: a lead form ad (a native Instant Form they fill in without leaving Facebook or Instagram) and a DM ad (a click-to-message ad that opens a Messenger or Instagram Direct conversation). There is no page to put a tracking script on, so TrueMetriks could not see either one. Connecting your Page is what makes them visible, and it is the only setup there is.

What gets recorded

Two conversions, with these exact names:

  • Lead - Facebook Form - one per native lead form submission. It carries the submitter's email, so the person is stitched to the rest of their journey the same way any identified visitor is.
  • DM Started - one per person per ad who opens a Messenger or Instagram Direct conversation from a click-to-message ad.

Both appear in Conversions Overview with no filter selected, and both can be filtered by name, so a lead taken on a Facebook form stays distinguishable from a lead taken on your website. Either name can also be mapped to a Facebook custom conversion in Custom events above.

Two more behaviours worth knowing about:

  • If someone types their email into the DM thread, or completes a lead form inside the chat, TrueMetriks links that conversation to the person. The ad that started the chat still gets the credit when they buy on your website days later. Both routes work on Messenger and on Instagram Direct, and neither happens by itself: see How the person's email reaches you below for what you have to build into the ad.
  • Comments on your ad posts are matched back to the ad that carried the post. That needs nothing beyond connecting the Page, and it is the foundation for comment-keyword automation.

Connect your Page

It is the same Meta OAuth popup you went through for the pixel, plus two screens of its own: one asking which Page to grant, then one asking which Instagram account. Seven steps, about 90 seconds. You choose the Page once, on Meta's screen - TrueMetriks connects what you granted and never asks you to pick it again.

Step 1 - Click Connect a Page in TrueMetriks

In the TrueMetriks dashboard, open Settings > Ad integrations, pick the Facebook tab, and scroll to the Connect your Page block at the bottom of the card, below Catalog. Click the highlighted Connect a Page button.

Connect your Page to track Facebook lead forms and DM adsNEW

Running native lead forms or DM ads on Facebook, Instagram or WhatsApp? Connect your Page to track them. Read the guide to understand what to do.

Settings → Ad integrations → Facebook → Connect your Page, the last block in the card, below Catalog. With no Page connected yet, click the highlighted Connect a Page button.

Facebook has to be connected first. If it is not, the button is greyed out and reads "Connect Facebook above first", so run Connect Facebook at the top of this page before this. The button is also disabled until your tracking domain is verified, because a Page connected on an unverified site would record nothing.

Step 2 - Confirm the Facebook account granting access

Meta asks which Facebook user is granting access. If you are signed into the right account, click Continue. This is the same first screen as the pixel connect.

tm.

Continue as Your Name?

TrueMetriks Analytics will receive your name and profile picture.

Not Your Name?

Step 2 - Meta opens its OAuth dialog. Confirm it's your account, then click the highlighted Continue button.

Step 3 - Choose which Businesses to share with TrueMetriks

Meta asks how much of your Business Manager footprint to share. Opt in to all current and future Businesses is the lowest-friction choice. Opt in to current Businesses only lets you hand-pick, and adds the portfolio list in the next step.

tm.

Choose the Businesses you want TrueMetriks Analytics to access

Later you'll be able to review what TrueMetriks Analytics will be able to do with the Businesses you select.

  • Opt in to all current and future Businesses

    This will give TrueMetriks Analytics access to your current Businesses, in addition to any Businesses you create in the future.

  • Opt in to current Businesses only

    This will only give TrueMetriks Analytics access to the Businesses you select.

Step 3 - Pick the scope. "All current and future" is the lowest-friction choice. "Current only" lets you hand-pick which Business portfolios TrueMetriks sees.

Step 4 - Pick the Business portfolios for the Page

Only if you chose "current only". Meta lists every Business portfolio your account belongs to. Tick the one that owns the Page running the ads, or use Select all.

tm.
  • Opt in to all current and future Businesses

    This will give TrueMetriks Analytics access to your current Businesses, in addition to any Businesses you create in the future.

  • Opt in to current Businesses only

    This will only give TrueMetriks Analytics access to the Businesses you select.

0 Assets Selected
  • Acme Holdings

    346740378173522

  • Northwind Co.

    165904530700341

  • Riverline Studio

    216135910729119

  • Client B - Lifestyle

    726022288418319

  • Demo Wellness

    754415809583780

  • Side Project LLC

    131040391987347

Step 4 (only if you picked "current only") - tick every Business portfolio that runs ads you want TrueMetriks to attribute. Scroll for more.

Step 5 - Choose the Page and the Instagram account to grant

This is the part the pixel connect never showed you, and the one that decides everything. It is two screens, one after the other.

Screen one lists your Pages. Tick the Page that runs the ads. A lead form ad and a click-to-message ad are attached to a Page, and if you grant a different one, nothing arrives and nothing errors to tell you. Then click Continue.

tm.

Choose the Pages you want TrueMetriks Analytics to access

Later you'll be able to review what TrueMetriks Analytics will be able to do with the Pages you select.

1 Asset Selected
  • Demo Brand

    102938475610293

  • Demo Brand Support

    118273645509182

  • Side Project LLC

    131040391987347

Screen one of two. Tick the Page that runs the ads - a lead form ad and a click-to-message ad are attached to a Page, and granting a different one means nothing arrives and nothing errors to tell you. Then click Continue: the next screen is Instagram, and it is a separate list.

Screen two lists your Instagram accounts, as handles rather than Page names, so nothing on it looks like the Page you just ticked. Tick the Instagram account that runs the ads if you want Instagram DM ads or Instagram comments tracked, then click Continue again.

tm.

Choose the Instagram accounts you want TrueMetriks Analytics to access

Later you'll be able to review what TrueMetriks Analytics will be able to do with the accounts you select.

1 Asset Selected
  • demo_brand_academy

    17841471524876855

  • demo_brand

    17841404712089388

  • sideproject_studio

    17841460249849010

Screen two of two, and the one people click straight past. The list is Instagram handles, not Pages, so nothing here looks like the Page you just ticked. Tick the Instagram account that runs the ads if you want Instagram DM ads or Instagram comments tracked, then click Continue. Leave it empty and Instagram records nothing, with no error anywhere.

Clicking through that second screen without ticking anything is the single most common way Instagram ends up recording nothing, and no screen anywhere will tell you it happened.

This is where you pick the Page. TrueMetriks connects what you granted here, so the old step of choosing it again inside the dashboard is gone. Grant the one Page that runs the ads and there is nothing left to decide. Instagram needs three settings of its own on top of this grant: see What you must set up on the Instagram side below.

Step 6 - Review the permissions

The review screen lists more than the pixel grant did, because reading a lead form and receiving a Messenger conversation are separate permissions from reading ad stats. In plain terms you are letting TrueMetriks see the Pages you manage, manage the settings on the Page you picked, read its lead form submissions, receive its Messenger conversations, and, if you ticked one, read the messages and comments on the Instagram account linked to it. Click Save.

tm.

Review TrueMetriks Analytics's access request

  • Show a list of the Pages you manage

  • Manage accounts, settings and webhooks for a Page

    1 Page selected

  • Access lead form submissions for your Pages

  • Manage and access Page conversations in Messenger

  • Manage ads for ad accounts that you have access to

  • Manage your business

    2 Businesses selected

This integration enables TrueMetriks Analytics to establish a connection with your business portfolio(s), and manage everything in the portfolio except for sensitive actions, like deleting the portfolio. They may be able to use an API to manage the portfolio, including giving access to third parties. .

The Page review screen. It lists more than the pixel grant did: reading a lead form and receiving a Messenger conversation are separate permissions from reading ad stats. Click the highlighted Save button.

Step 7 - Confirmation, then back to TrueMetriks

Meta confirms the grant. Click Got it, the popup closes, and the Page you granted is connected to this site on its own. There is nothing further to pick.

tm.

Your Name has been connected to TrueMetriks Analytics

To manage this connection, .

Step 6 - Meta confirms. Click Got it. The popup closes and the dashboard card flips to "Connected".

A Page can only belong to one site. If the Page you granted is already connected to another of your sites, TrueMetriks tells you so instead of connecting it, and nothing is moved.

What you see when it is done

The card lists your Page with a green Active chip, the capability chips light up, and the counters start at 0 leads / 0 DMs recorded. They climb on their own as leads and conversations arrive, with no further setup.

Connect your Page to track Facebook lead forms and DM adsNEW

Running native lead forms or DM ads on Facebook, Instagram or WhatsApp? Connect your Page to track them. Read the guide to understand what to do.

D

Demo BrandActive

Page ID 102938475610293 - connected Aug 20, 2026 - 2 leads / 12 DMs recorded

Lead forms Messenger ads Instagram DM ads WhatsApp
Settings → Ad integrations → Facebook → Connect your Page, the last block in the card, below Catalog. One connected Page with its capability chips: green with a tick when the capability is on, muted with a dash when it is not.

If the Active chip is replaced by Reconnect needed, the Page token has gone stale. That happens when the app is revoked in your Facebook Business Settings, or when the Facebook password changes. The capability chips turn amber and read "Lead forms paused" and "Messenger ads paused", and nothing new is recorded until you click Reconnect and run the dialog again. Conversions already recorded are kept.

What you must set up on the Instagram side

Instagram DM ads and Instagram comments ride the Instagram account linked to the Facebook Page you just connected, never Instagram on its own. Three things on your side decide whether anything arrives at all, and none of them produce an error message when they are wrong. They produce silence, which is far harder to spot.

1. The Instagram account has to be a professional account, linked to that Page. A personal Instagram account cannot be reached by any connected tool, so switch it first in the Instagram app (Settings and privacy > Account type and tools > Switch to professional account, either Business or Creator). Then link it to the Facebook Page that runs the ads.

Linked accounts

Manage the accounts linked to Demo Brand.

Instagram

@demo_brand - professional account

Connected

WhatsApp

No account linked

Connect account
On the Facebook Page that runs the ads: Settings → Linked accounts → Instagram. The Instagram account must be a professional account (Business or Creator) and it must be linked here, on the same Page you connect to TrueMetriks. This link is what makes Instagram DM ads reachable at all.

You can check the link from inside TrueMetriks rather than hunting for it: on the connected Page, the Instagram DM ads chip turns green and shows the handle (Instagram DM ads - @demo_brand) as soon as we can see a professional account linked to that Page. A muted chip with a dash means we found none, and that is the first thing to fix.

2. Allow access to messages has to be on. Instagram keeps its own switch for whether connected tools may read the account's messages, separate from anything you agreed to on Facebook. It is off on plenty of accounts.

Message controls

Settings and privacy › Messages and story replies › Message controls

Connected tools

Allow access to messages

Let the tools connected to your account read and manage your messages and story replies.

Who can message you

Others on Instagram

Message requests
In the Instagram app on the account that runs the ads: Settings and privacy › Messages and story replies › Message controls › Connected tools. Allow access to messages must be on. With it off, Instagram sends us nothing at all, and nothing anywhere reports an error.

3. The account has to be public, for comments. Meta only sends comment notifications for public content, so a private Instagram account means comments on your Instagram ads are never recorded. Direct messages still work.

Two more, both easy to miss. The Instagram account has to be ticked on the second grant screen when you connect, the one that lists Instagram handles after the Pages screen (Step 5 above) - granting the Page alone leaves Instagram out. And you need admin access to both the Facebook Page and the Instagram account: if somebody else owns the Instagram account, they have to make the changes above.

How the person's email reaches you

A conversion is only half the job. The email address is what ties a lead form or a conversation to the same person when they come back and buy on your website, and how you get one is different on every surface. This is the part most people miss.

Facebook and Instagram lead forms: use Meta's built-in Email field. An Instant Form asks for the email itself and Meta pre-fills it from the person's profile, so the address arrives with the lead. One thing decides whether it identifies the person: when you build the form, the email has to be Meta's own Email question, the one under Contact information in the form builder, and not a custom question you typed yourself. A custom question worded "What is your email address?" is still saved on the conversion, but it does not become the person's identity, so the lead never stitches to their later purchase. Same rule for the phone number: pick Meta's Phone number field. With the built-in fields in place, lead forms are the most reliable of the three.

Messenger DM ads: put a lead form inside the chat. A click-to-Messenger ad only produces an email if you built one into the ad's message template. In Ads Manager, open the ad's message template, pick the Generate leads chat template (Meta also labels it lead generation in chat, inside the automated chat templates), and add a question asking for the email address. Word the question so it contains the word "email", and Meta will only accept an email-shaped answer to it.

Create template

Automated chat
Content Advanced

Questions

What are you looking for?

Multiple choice

What is your email address?

Answers to contact questions are filled in from the person's Facebook profile, so they confirm rather than type.

Add question Save and finish
Ads Manager, at the ad level of a click-to-message ad: the message template that holds the chat lead form. Add a question that asks for the email address. Build it the same way for Messenger and for Instagram Direct wherever Ads Manager offers the template. Without it, a DM ad records the conversation and the ad but never the person, unless they type an address into the thread themselves.

The person has to finish the flow. When they do, the answers come to us with the conversation and the DM Started conversion carries their email. If they abandon it half way, or the template has no email question at all, the conversation is still recorded and still attributed to the ad, but the person stays anonymous until they type an address into the thread themselves.

Instagram DM ads: you have two ways, and you should use both. Instagram is the one surface where the email can arrive by either route, so do not rely on a single one.

Way one, a lead form inside the chat. If Ads Manager offers the Generate leads chat template for your Instagram click-to-message ad, build it exactly as you would for Messenger and put an email question in it. Meta does not offer that template for every ad type, objective or country, so open the ad's message template and look before you assume it is there. It is the same screen as the Messenger mockup above. When the person completes it, the answers reach us with the conversation and the DM Started conversion carries their email, identical to Messenger.

Way two, ask them to reply with it. This is the fallback whenever the chat template is not available, and it is worth doing even when it is, because plenty of people never finish a form. Ask for the address plainly in the ad's opening message or in your first reply, and we read it out of what they type back.

sam.rivera

Instagram Direct - from your ad

Hi! Saw your ad. How much is the starter kit?
Happy to send the full price list over. What is the best email to send it to?
The second way to get an email out of an Instagram conversation, and the one that always works: ask for it, and let the person type it. We read the address out of that reply and nothing else from the conversation. When Sam buys on your website two weeks later, the sale carries the ad that started this thread.

What counts as an email, when someone types one. We read an address out of a chat message only for people who arrived from one of your ads, and we read nothing else from the conversation. Four rules decide what we accept, and they are worth knowing because they explain the odd miss:

  • The first address wins, permanently. If someone types a colleague's address first and their own second, the first one is the one we keep.
  • Your own domain is ignored. "I already emailed [email protected]" is somebody quoting your address back at you, not giving us theirs.
  • An address inside a link is ignored. It is a tracking parameter, not a person.
  • Very long messages are not scanned. Nobody types their email inside an essay.

Learning who somebody is does not create a second conversion. The DM Started you already have simply stops being anonymous, and every later touch, including a purchase on your website weeks afterwards, lands on the same person and credits the ad that started the conversation.

Comments on your ads, and comment-to-DM ads

Anyone who comments on one of your ad posts is recorded against that exact ad, on Facebook and on Instagram, with nothing to set up beyond connecting the Page. Comments on organic posts are not recorded, because there is no ad to attribute them to.

That matters most if you run the engagement play: an ad that invites people to comment a keyword, and Meta's ad-level automation that answers each of them with a private message.

Automatically respond to keywords or phrases

Automatically message people privately when they comment on your ad with a keyword or phrase.

Keywords

GUIDE PRICE READY

Private message

Thanks for commenting! Reply here with your email address and I will send the guide straight over.

Ads Manager, at the ad level: Reply to keywords. Anyone who comments one of your keywords gets this private message automatically. Write it so it asks for the email address - the comment on its own tells us the ad and the person, never an address.

The thing to understand is what a comment does and does not tell us. It tells us the ad and the person. It never contains an email address, and Meta does not hand one over. So the private message is where the identity is won or lost: write it to ask for the email, exactly as you would in an Instagram DM ad, and the moment they reply with one, that commenter becomes a person you can follow to the sale.

Two limits on comments, both Meta's:

  • Catalog and dynamic ads carry no ad id on Instagram comments. A comment on one of those is not attributed and is not recorded.
  • A private Instagram account sends no comment notifications at all. See the Instagram setup above.

Disconnecting a Page

Disconnect removes the Page from TrueMetriks and unsubscribes it on the Facebook side, so new leads and DMs stop being recorded immediately. It is one click behind a confirmation, and conversions already recorded are not deleted. You can connect the same Page again later.

What to do on Facebook's side, in one list

There is no pixel to add to the ad, no parameter and no UTM, and lead form and click-to-message ads that are already live start reporting the moment the Page is connected. What does need your attention:

  • Connect the Page that runs the ads. Both ad types are attached to a Page. Connect a different Page and nothing arrives, and nothing errors to tell you.
  • Get an email out of every DM ad, both ways. Put an email question in the ad's Generate leads chat template where Ads Manager offers one, on Messenger and on Instagram alike, and ask for the address in the opening message as well, because plenty of people never finish a form.
  • On a lead form ad, use Meta's built-in Email field, the one under Contact information in the form builder. A custom email question you typed yourself is recorded but does not identify the person.
  • Ask for the email in the private message your keyword automation sends to commenters.
  • Set up Instagram once: tick the Instagram account on Meta's grant screen, and on Instagram's side a professional account, linked to that Page, with Allow access to messages on and the account public.
  • Keep the Page connected. If the app is revoked in your Facebook Business Settings, or the Facebook password changes, the Page shows Reconnect needed and records nothing until you run the dialog again.

Good to know

  • Instagram DM tracking also waits on Meta. Beyond the three Instagram settings above, the connect flow asks Facebook for two Instagram permissions that are still in review, so Instagram conversations start reporting once that lands. Do the Instagram setup now and there is nothing left to do when it does. Facebook lead forms and Messenger DM ads do not depend on it.
  • WhatsApp is not supported yet. Its chip is muted on purpose rather than broken.
  • These conversions are never sent back to Facebook. Facebook already counts its own lead forms and DM ads natively, so re-sending them through the Conversions API would double count them. The one exception is a name you explicitly map to a Facebook custom conversion.
  • Some leads arrive with no ad attached and show as unattributed. Meta's documented reasons: the lead came from an organic post rather than an ad, it came from an Ad Preview, or the Facebook account you connected does not have advertiser access on the ad account.
  • A DM tells us a person, not an email address. You get an identified lead out of a conversation only when they type an email into the thread or complete a chat lead form that asks for one, on either Messenger or Instagram, and then a later purchase on your website carries the ad credit. A lead form ad carries the email as long as you used Meta's built-in Email field. See How the person's email reaches you above.
  • One Page belongs to one site. If the Page you granted is already connected to another of your sites, TrueMetriks says so and connects nothing. Disconnect it there first, or grant a different Page.
  • Your tracking domain must be verified first. A site without a verified CNAME cannot connect a Page, and the button stays disabled with a hint, because a Page connected on such a site would silently record nothing.

How to test

Before you trust the pixel for real campaigns, you want to see your events arrive in Facebook with your own eyes. Meta's Test Events tab is the way - and TrueMetriks has a one-field workflow that wires it up. Six steps, about two minutes end-to-end.

The whole loop: copy a short-lived test code from Facebook, paste it into TrueMetriks, browse your site, watch events appear in real time on Facebook's Test Events table. After 24 hours the code expires and your events automatically flow back into the live Facebook feed - no flag to clear.

Video guide

How to test your Facebook events end-to-end with TrueMetriks

Prefer to read along? The full step-by-step is below.

Step 1 - Click Open in Facebook in TrueMetriks

Expand your pixel row in Settings > Ad integrations > Facebook. In the Test event code group, click the highlighted Open in Facebook link.

Active pixels

My Site Pixel

under: My Site | Ad Account

Pixel

Test event code

TEST12345

Codes expire after 24 hours; after expiry, events flow to your production Facebook feed.

Allowed events

Uncheck events you don't want fired to this pixel.

Step 1 - inside TrueMetriks, expand your pixel and click Open in Facebook next to the empty Test event code field. That jumps you straight to the right pixel in Facebook Events Manager.

This opens Facebook Events Manager in a new tab, scoped directly to the pixel you are working on. No hunting through the Meta UI to find the right dataset.

Step 2 - You land on Datasets, with your pixel selected and the Test events tab active

Facebook Events Manager opens straight to Datasets, with the pixel from TrueMetriks highlighted in the middle list and the Test events tab already selected in the right panel.

Datasets

  • My Site Pixel

    ID 618120340405935

  • Academy Pixel

    ID 2820043304834500

  • Side Project Pixel

    ID 771197136645079

  • Demo Brand Pixel

    ID 26884361097883851

My Site Pixel

Test your events

Use test events to confirm your website, app, CRM and server events are set up correctly.

Note that test behavior may differ from live environments, and your personal ad settings won't affect test data. Learn more

Select a marketing channel to receive its corresponding instructions:

Select channel
Step 2 - Facebook Events Manager opens directly on your pixel under Datasets, with the Test events tab already selected. The pixel you clicked from in TrueMetriks is highlighted in the middle list.

If you have multiple pixels, double-check the name in the right-panel header matches the pixel you clicked from in TrueMetriks. The first time you open this tab on a fresh pixel, the channel dropdown reads Select channel - that's the next click.

Step 3 - Pick Website in the Select channel dropdown

Click the Select channel dropdown and choose Website.

My Site Pixel

Test your events

Use test events to confirm your website, app, CRM and server events are set up correctly.

Note that test behavior may differ from live environments, and your personal ad settings won't affect test data. Learn more

Select a marketing channel to receive its corresponding instructions:

Select channel
Website
Offline
Step 3 - click the Select channel dropdown and pick Website. That's what TrueMetriks uses for every event we send.

Always Website, never Offline. TrueMetriks sends every event over the Conversions API as a website event - even server-fired Purchases. The Offline option is for CRM uploads and won't show your test traffic.

Step 4 - Copy your unique test code

Once you pick Website, Facebook reveals a Confirm your server's events are set up correctly card. The first step inside that card shows your unique test code as a test_event_code: TEST... chip with a Copy button next to it.

My Site Pixel

Test your events

Use test events to confirm your website, app, CRM and server events are set up correctly.

Select a marketing channel to receive its corresponding instructions:

Website

Confirm your server's events are set up correctly

You can perform a test to make sure your server is connecting and sharing event data. Make sure the Test Events page stays open in Events Manager during the test.

To run the test:

  1. Copy your unique test code. This code will be used to validate your data in the next step.

    test_event_code: TEST17763
  2. Open up Graph API Explorer. Make sure all the parameters entered above match what's shown in the payload, then submit and return to this page.

Confirm your website's events are set up correctly

Step 4 - copy the highlighted TEST... code from the Confirm your server's events are set up correctly card. (You don't need the Graph API Explorer step - TrueMetriks handles the server side for you.)

Click Copy. That's the only thing you need from this card - ignore the Graph API Explorer button and the "Confirm your website's events are set up correctly" card below it, those are for raw API testing and we already handle the server side for you.

Step 5 - Paste the code back into TrueMetriks and save

Switch back to TrueMetriks, paste the code into the Test event code field, and save. The pixel-row header flips to a green Test active - 24h left badge.

Active pixels

My Site Pixel

under: My Site | Ad Account

Pixel

Test event code

TEST17763

Codes expire after 24 hours; after expiry, events flow to your production Facebook feed.

Allowed events

Uncheck events you don't want fired to this pixel.

Step 5 - paste the code into the Test event code field in TrueMetriks. The row header flips to Test active - 24h left. Every event we send for this pixel now carries that code, so it shows up in the Facebook Test Events tab instead of the live feed.

From this moment on, every event TrueMetriks sends for this pixel carries the test code attached. Facebook routes those events into the Test Events tab instead of your live feed, so nothing you do in the next 24 hours will dirty your production reporting.

You only need to do this for the pixel you are actively testing. Other pixels with no test code keep sending real events to production - they are not affected.

Step 6 - Browse your site and watch events arrive

Go to your website and do something that should fire an event. Open a few pages (PageView), add a product to cart (AddToCart), start a checkout (InitiateCheckout), submit a lead form (Lead), or place a test order (Purchase).

Switch back to Facebook Events Manager. Within a few seconds the Receiving activity banner turns green and rows start appearing in the table, newest at the top.

My Site Pixel

Test your events

Use test events to confirm your website, app, CRM and server events are set up correctly.

Select a marketing channel to receive its corresponding instructions:

Website

Receiving activity

your-domain.com test_event_code: TEST17763

5 options selected
Events Received Received From Setup Method Event ID Time Received
PageView Custom event Processed Server Manual Setup 019e7826-1f68-76... Today at 11:10:24 AM
InitiateCheckout Processed Server Manual Setup 019e7826-1f69-77f... Today at 11:10:24 AM
PageView Custom event Processed Server Manual Setup 019e7826-1318-76... Today at 11:10:21 AM
PageView Custom event Processed Server Manual Setup 019e7826-04d2-7f... Today at 11:10:18 AM
PageView Custom event Processed Server Manual Setup 019e7825-fba6-76... Today at 11:10:15 AM
Step 6 - browse your site, fire a checkout, anything you want to test. Events land here within a few seconds. Every row says Server under Received From because TrueMetriks is server-side only - the browser never talks to Facebook directly.

Every row carries the event name, a green Processed pill, the Event ID, and the timestamp. Watch them stack up as you browse.

Every row says Server under Received From. That is correct and expected. TrueMetriks is server-side only - we do not fire the Facebook browser pixel at all. Every event you see in Test Events came from our server talking directly to Meta's Conversions API, with click IDs and hashed PII attached. The "Server" pill on every row is the proof.

If you don't see events within ~30 seconds, jump to Troubleshooting below.

After the test - the code expires automatically

Test codes are deliberately short-lived. 24 hours after you saved it, the code expires and TrueMetriks resumes sending events to your production Facebook feed without any action from you. The green badge in the pixel row disappears and the field empties out.

If you want to end the test sooner - say you confirmed everything in 5 minutes and don't want a 24-hour gap in production reporting - just clear the Test event code field in TrueMetriks and save. Events flow to production from the next event onward.

Troubleshooting

Events show up on Test Events but never appear in campaign reporting. Test events are scoped to the Test Events tab only - they are intentionally walled off from your live attribution. After the code expires (or you clear it), real events flow to production. Check campaign reporting the day after, not during the test.

Receiving activity stays empty for more than a minute. Three things to check, in order: 1. The pixel name in the Facebook Events Manager header matches the pixel you pasted the code into - mismatched pixels are the most common cause. 2. Your Channel dropdown says Website, not Offline. 3. The test code in TrueMetriks matches the one in Facebook character-for-character. If a code is older than 24 hours, Facebook silently ignores it - copy a fresh one from Step 4 and re-paste.

Events arrive but the Catalog match rate stays at 0%. Your event content_ids don't match the IDs in your catalog feed. See the Catalog section above - on Shopify the catalog ID is the variant id, on WooCommerce it is the product id. Cross-reference one event's content_ids against the catalog's product list in Commerce Manager.

The Test active - 24h left badge never appeared after saving. The code field didn't take. Hard-refresh the dashboard page, re-paste the code, and save again. If it still doesn't stick, the saved code is probably one that already expired in Facebook - get a fresh one.

Frequently asked questions

Which pixel should I select for my site?

Pick the pixel inside your connected Business portfolios that this site should fire events into. Each site maps to its own pixel via the Add pixel button, which lists every pixel in the businesses you connected.

Why does every test event show Server under Received From?

That is correct and expected. TrueMetriks is server-side only and does not fire the Facebook browser pixel. Every event comes from our server talking directly to Meta's Conversions API.

How long does the Facebook test code stay active?

Test codes expire 24 hours after you save one. After that TrueMetriks resumes sending events to your live feed automatically, or you can clear the field early to end the test sooner.

Do I need to change my lead form ad or DM ad to track it?

No. There is no pixel, parameter or UTM to add to the ad. A native lead form ad or a click-to-message ad starts reporting as soon as you connect the Facebook Page that runs it, including ads that are already live.

Why does a Facebook lead show no ad?

Meta does not always attach an ad to a lead. That happens when the lead came from an organic post rather than an ad, when it came from an Ad Preview, or when the Facebook account you connected does not have advertiser access on the ad account. Those leads are still recorded, just unattributed.

Does TrueMetriks send lead form and DM conversions back to Facebook?

No. Facebook already counts its own lead forms and click-to-message ads natively, so sending them back through the Conversions API would double count them. The only exception is if you explicitly map one of the two names to a Facebook custom conversion.

Why is nothing arriving from my Instagram DM ads?

First check you ticked the Instagram account when you connected the Page. Meta asks in two screens, Pages and then Instagram accounts, and the second one is easy to click straight through. Then three things on Instagram's side have to be right: the account must be a professional account linked to that Page, Allow access to messages must be on under Settings and privacy, Messages and story replies, Message controls, Connected tools, and the account must be public for comments to be recorded. None of the three report an error when they are wrong.

How do I capture an email from an Instagram DM ad?

Two ways, and it is worth using both. If Ads Manager offers the Generate leads chat template for your ad, put an email question in it and the completed answers reach us with the conversation. Meta does not offer that template for every ad, so also ask the person to reply with their address: we read it out of what they type, keep the first one they give, and ignore an address on your own domain or one sitting inside a link.

Do I need to change my Messenger DM ad to capture an email?

Yes. Open the ad's message template in Ads Manager, pick the Generate leads chat template and add a question asking for the email address, with the word email in the question. The person has to finish the flow for the answers to reach us. Without it, or if they abandon it, the conversation is still recorded and still attributed to the ad, but the person stays anonymous unless they type an address into the thread.

Does a comment on my ad give me the commenter's email?

No. A comment tells us the ad and the person, never an address. If you run Meta's Reply to keywords automation, write the private message it sends so it asks for the email, and the commenter becomes an identified lead the moment they reply with one.

Can I fire a Facebook custom event for only one product?

Yes. On a Purchase custom event, open the optional Product filter and enter a Product name (case-insensitive contains match) or a Product ID (case-insensitive exact match). The custom event fires only when a purchased product matches either field; leave both blank to fire on every Purchase.

Need help with this?

Reach us instantly on WhatsApp, or send us a message and we will get back to you. On workdays we usually respond in less than 24 hours.

or send us a message