Skip to Content
TrackingMeta Ads

Meta Ads (Facebook / Instagram)

Track conversions with Meta Pixel (client-side) and Conversions API (server-side) for optimized ad delivery. This integration supports both modes simultaneously with automatic deduplication.

Setup

Navigate to Settings > Integrations > Meta Ads in your project.

Client-Side (Meta Pixel)

The Meta Pixel fires events in the visitor’s browser. It is the simplest way to start tracking conversions.

  1. Open Meta Events Manager  and copy your Pixel ID.
  2. In AppFunnel, enable Meta Pixel and paste your Pixel ID.
  3. Save the integration.

The pixel script is automatically loaded on all funnel pages. No code or tag manager needed.

Meta Ads Integration Setup Insert image: The Meta Ads integration settings page showing the Pixel ID field, Conversions API Access Token field, Dataset ID field, and event mapping toggles below

The Pixel is subject to ad blockers. For complete attribution coverage, also enable the Conversions API.

Server-Side (Conversions API / CAPI)

The Conversions API sends events server-to-server from AppFunnel’s backend to Meta. It is not affected by ad blockers and is required for tracking subscription renewals and LTV.

  1. In Meta Events Manager, generate a Conversions API Access Token.
  2. Copy your Dataset ID (same as your Pixel ID in most cases).
  3. In AppFunnel, enable Conversions API and paste both values.
  4. Optionally enter a Test Event Code to validate events in Meta Events Manager before going live.

The Conversions API is required for tracking subscription.renewal events, since those happen server-side when Stripe processes a recurring payment. Without CAPI, renewal revenue will not be attributed to your ads.

Event Mapping

AppFunnel events are mapped to Meta standard events. Each event can be individually enabled, disabled, or remapped to a different Meta event name.

AppFunnel EventDefault Meta EventWhen It Fires
page.viewPageViewEvery page navigation
user.registeredCompleteRegistrationEmail is captured
purchase.completePurchaseSuccessful payment
subscription.createdSubscribeSubscription is created
subscription.renewalPurchaseRecurring subscription payment

Remapping Events

You can change the Meta event name for any AppFunnel event. For example, if you want user.registered to fire as Lead instead of CompleteRegistration, set the custom event name in the event mapping configuration.

Setting an event to disabled prevents it from firing entirely. This applies independently for Pixel and CAPI — you can enable an event on one side and disable it on the other.

Deduplication

When both Pixel and CAPI are enabled, the same event is sent twice: once from the browser, once from the server. Meta would normally count this as two conversions.

AppFunnel handles this automatically. Every event includes an eventId that is shared between the Pixel and CAPI payloads. Meta uses this ID to deduplicate and count the event only once, while using both signals for better attribution.

No configuration is needed. Deduplication works out of the box.

User Data (PII Handling)

The Conversions API sends user data to Meta for matching events to ad viewers. All personally identifiable information (email, phone, name, DOB, gender, location) is SHA256-hashed before sending. Attribution identifiers (fbp, fbc, IP address, user agent) are sent in plain text as required by Meta.

For purchase and subscription events, AppFunnel also sends currency and value so Meta can track revenue attribution.

Last updated on