Facebook says you have conversions. Your ad manager says otherwise.
Your Facebook Pixel is installed and firing page views. But Meta's ad manager needs more than that. It needs Purchase events with a value, Lead events tied to your contact form, and custom events for the micro-conversions that matter to your funnel. Without those, the algorithm can't optimize, and your ROAS numbers are a guess.
The standard fix is to edit your theme templates or hand a developer a list of fbq() calls to drop into the right places. Both work until the theme updates, the developer is unavailable, or you need to change the event name for a new campaign.
What most people do instead
A better way: define the event from the navigator
TrueCommander injects a lightweight listener directly on the frontend. You specify the event name, the trigger target, and optionally a value. The pixel fires automatically. No theme files touched, no GTM container needed, no deploy required.
For standard Facebook events (Lead, Purchase, Contact, CompleteRegistration), use -event_type=track and pass a recognized Facebook name. For any other name, use -event_type=trackCustom and call it whatever your funnel needs.
The Pixel must be installed first. Run enable fb pixel as a startup command before creating events. That command loads window.fbq on every page. Without it, create fb event has no Pixel to fire into.
How it works
enable fb pixel Run it once as a startup command. It injects the base Pixel code on every page load and initialises window.fbq.create fb event Name the event, pick the target (form ID, CSS class, email link, phone link), set an optional value and currency. The command registers a listener on the frontend.fbq('track', ...) or fbq('trackCustom', ...) fires with your name, value, and currency.| Detail | Value |
|---|---|
| Command name | create fb event |
-name | Standard Facebook event names (Lead, Purchase, Contact, CompleteRegistration, etc.) or any custom string |
-target | email | phone | css_class | css_id | elementor_form | cf7_form |
-event_type | track for Facebook standard events, trackCustom for custom names (default) |
-form_id | Required when target is elementor_form or cf7_form |
-class / -id | Required when target is css_class or css_id |
-value_selector | CSS selector to read a live numeric value from the DOM (e.g. .price). Overrides -value when it resolves. |
-value | Static numeric value for ROAS reporting. Only sent when set. |
-currency | ISO 4217 currency code (e.g. USD, EUR). Only used when value is set. |
| Prerequisite | enable fb pixel must run first so window.fbq exists |
| Can be used in |
Real example
You're running a lead-gen campaign for a consulting firm. The contact form is built with Contact Form 7 (ID 42). Meta's ad manager shows impressions and clicks, but no conversions, because the Pixel only fires PageView and nothing else.
You open the navigator and run enable fb pixel as a startup command, then run tp create fb event -name="Lead" -target="cf7_form" -form_id=42 -event_type=track -value=80 -currency=USD. From that moment, every successful form submission fires fbq('track', 'Lead', {value: 80, currency: 'USD'}).
Within two days Meta has enough Lead signals to switch the campaign to conversion optimisation. Cost per lead drops 30 percent. No developer, no theme edit, no GTM container published.
Goes further with TrueCommander
enable fb pixel as a startup command so window.fbq is available on every page before your event listeners attach.create gtm event and create clarity event on the same target so the same conversion appears in GA4, Meta, and Clarity recordings simultaneously.