Enable Meta Ads (New)

Prev Next

Overview

Meta Ads (formerly Facebook Ads) lets you run advertising campaigns across Facebook, Instagram, Audience Network, and Messenger from a single platform. Branch's Meta Ads integration tracks attribution for installs and post-install events, imports cost data, and supports the iOS privacy frameworks used in Meta campaigns: Apple's SKAdNetwork (SKAN) and Meta's Aggregated Event Measurement (AEM).

Meta is a self-attributing network (SAN), which means Meta runs its own attribution and reports results back to Branch via API rather than receiving traditional postbacks from Branch.

For more information about integrating ad partners in general, visit our Ad Partner Integration Guide.

Note: this guide is for new Branch

Please note that this guide is about integrating Meta Ads in the new Branch experience. For information on Meta Ads in legacy Branch, visit our legacy guide.

Partner capabilities

Capability

Details

Company type

Self-attributing network (SAN)

Deep linking

Supported (SAN API-Driven Deferred Deep Linking)

Attribution

Click-through attribution, View-through attribution (with SKAN and AEM on iOS)

Ad campaign types

Awareness, Consideration, Conversion (web and app)

Supported platforms

iOS, Android, Web

Cost ingestion support

Supported (via API)

Pricing models

CPC, CPM, CPA

Engagement Builder Ad Partner Integration

Available

Note: limited tracking link support

Meta has confirmed that impression tracking links are not supported in any ad placement, and click tracking links are only supported in a subset of placements. For most campaigns, attribution flows through Meta's APIs (SAN, SKAN, AEM) rather than tracking link redirects.

Before you begin

To set up the Meta Ads integration, you need:

  • A Branch account with access to Configuration > Ad Partners and admin permissions to enable and configure integrations.

  • A Meta Ads account with admin access through Meta Business Manager.

  • Branch's Performance product enabled for your Branch account. Contact your Branch account manager or visit https://branch.io/pricing.

Enable Meta Ads

To begin, navigate to Configuration > Ad Partners > Meta.

Meta is an OAuth partner. Follow Connect with OAuth in the general Ad Partner Integration Guide to sign in and connect your Meta Ads accounts.

Warning: Meta Account ID

Do not reuse a Meta Account ID across multiple apps. If you have more than one app using the same Meta Account ID, SKAN data may appear in only one of those apps. Use a distinct Meta Account ID per app to avoid visualization issues.

Configure attribution

To configure attribution windows, select the Attribution windows tab on the Meta page.

Attribution type

Default

Meta's recommendation

Click to conversion event

28 days

Click to install

7 days

7 days

Click to start session

1 day

Household measurement window

2 days

Impression to conversion event

7 days

Impression to install

1 day

1 day

Impression to start session

1 day

Tip: attribution window alignment

Meta's iOS attribution defaults to a 7-day click and 1-day view window. If you want Branch's Meta attribution to match Meta's own reporting as closely as possible, use those values for Click to install and Impression to install.

Configure events

To configure event mappings, select the Event config tab on the Meta page.

Meta uses event mappings to optimize campaigns and to feed the AEM and SKAN frameworks. Follow Configure events in the general Ad Partner Integration Guide for the event mapping flow. The full Branch-to-Meta event name reference is in Data mappings below.

Verify your data

After your integration is connected and events are flowing, you can verify data is reaching Meta and Branch:

  • In Branch Liveview: confirm that events from your app appear in real time. This is the fastest way to confirm SDK events are firing.

  • In Branch Analysis dashboards: review attributed installs, events, and cost data where Ad Partner Name = Facebook.

  • In Meta Events Manager: check the Activity tab to confirm mapped events are being received. Look for any errors or warnings about event eligibility.

  • In Meta Ads Manager: when creating a campaign, your mapped events should appear as available optimization events. If an event doesn't appear, it may not be eligible for AEM or SKAN.

Meta privacy frameworks

Meta supports two privacy-preserving measurement frameworks for iOS 14.5+: SKAN (Apple's framework) and AEM (Meta's framework). The two work in parallel and can run on the same campaign.

SKAdNetwork

Meta handles SKAN differently from most ad partners. Meta does not forward individual SKAN postbacks to Branch. Instead, Meta collects and validates postbacks internally and shares aggregate data with Branch through Meta's Ads Insights API.

Supported campaign types for SKAN data:

Meta campaign type

SKAN data shared with Branch

Mobile App Install (MAI)

App Event Optimization (AEO)

Value Optimization (VO)

All other campaign types

Data dimensions available via the Ads Insights API:

Parameter

Shared by Meta

Download/Install

Reinstall

❌ (counted as Install)

Conversion Value

Campaign Name

Campaign ID

Sync Branch's conversion value schema with Meta

If you use a Branch SDK for SKAN support, paste Branch's conversion value schema URL into Meta Events Manager so Meta can optimize campaigns using your Branch conversion values.

Caution: skip this step if you use the Facebook SDK for SKAN

If you use the Facebook SDK for SKAN, you do not need to sync Branch’s conversion value schema with Meta. Meta pulls its own conversion value schema automatically. If you call SKAN methods natively in your app, Meta recommends configuring conversion values in Meta Events Manager directly rather than using Branch's endpoint.

  1. In Branch, navigate to Configuration > Ad Partners > Meta and find the Conversion value URL field. The URL follows this format, with your app's iTunes ID auto-filled: https://api2.branch.io/v3/partners/a_facebook/conversion-value-mappings?app_id={itunes_id}

  2. Select the copy icon to copy the URL with your iTunes ID populated.

  3. In Meta Ads Manager, open Events Manager and select your app.

  4. Open Settings, then under Configure App Events for SKAdNetwork, select Set Up Events.

  5. Select Import from Partner App.

  6. Paste the URL from step 2 and select Connect.

    1. Important: Meta will return a connection error if your app isn't enabled for SKAN in Branch, or if you haven't mapped at least one conversion value. Configure both before pasting the URL.

Aggregated Event Measurement (AEM)

Meta's Aggregated Event Measurement (AEM) is a privacy-preserving protocol that measures iOS 14.5+ app installs and post-install events without relying on the IDFA. AEM runs alongside SKAN and provides faster, campaign-level attribution.

Supported campaign types for AEM:

Campaign type

Description

Mobile App Install (MAI)

App promotion campaigns. Work automatically once AEM is enabled.

Mobile App Engagement (MAE)

Sales (with or without catalog), Lead, and Engagement campaigns destined to a mobile app. Requires deep linking to be configured.

Caution: AEM data takes priority

When both AEM and Branch Link data appear for the same traffic, Branch defers to AEM data for last-touch attribution. This is intentional and aligns with Meta's preferred attribution method.

Enable AEM

Note: SDK version requirement

AEM requires the Branch iOS SDK version 2.1.2 or later. If your app uses an older version, work with your development team to update before enabling AEM.

  1. Contact your Meta Account Manager and request that AEM be enabled for your account. Meta must enable AEM on their side before you can activate it in Branch.

  2. (Optional) In Meta Events Manager, set MMP as your preferred connection method for your app. Ensure install and post-install events use the same connection method. See Meta's documentation for steps.

  3. In Branch, navigate to Configuration > Ad Partners > Meta > Event config.

  4. Below your event mappings, toggle Enable Aggregated Event Measurement (AEM) to on.

Warning: re-toggle AEM after SDK updates

If your development team updates the Branch iOS SDK, re-toggle the AEM switch in Branch to make sure data continues flowing.

AEM data in Branch

AEM provides the following campaign-level fields:

  • campaign_id — Meta campaign identifier

  • ad_id — ad identifier

  • creative_id — creative identifier

  • ad_set_id — ad set identifier

  • secondary_publisher — placement (Instagram, Facebook, Audience Network, etc.)

Note: use campaign_id instead of campaign_name

Meta doesn't provide campaign_group_name for AEM, so the campaign_name field in Branch reports and exports shows as Unpopulated. Use campaign_id to identify campaigns instead. This is a Meta limitation that affects all MMPs using AEM.

AEM-attributed events appear in Branch within minutes to hours and are included in standard last-touch attribution. Allow up to 24 hours for full propagation through Meta's systems, and 24–48 hours after launching your first AEM campaign to see meaningful data.

Limited Data Use (LDU)

On July 1st 2020, Facebook introduced a new Limited Data Use (LDU) feature to support customer compliance with the California Consumer Privacy Act (CCPA). This feature enables you to limit how Facebook uses the data of users in states where Limited Data Use is available. This data could be collected by you or by third parties on your behalf.

If the Limited Data Use feature is enabled, Facebook will process data in accordance with its role as a service provider or processor with respect to flagged personal information from people in states where Limited Data Use is available. This means Facebook will limit use of that data subject to their State-Specific Terms.

To invoke Meta Limited Data Use for your users, please use any Consumer Protection Preference other than FULL.

Data mappings

Event names

Branch maps standard Meta event names to Branch event names automatically. When tracking a Meta event that maps to the Branch Custom event, use the Meta event name with branch.logevent('AdClick') syntax. See the Branch event tracking guide for implementation details.

Branch event name

Meta event name

INSTALL

MOBILE_APP_INSTALL

OPEN

fb_mobile_activate_app

REINSTALL

fb_mobile_activate_app

ADD_TO_CART

fb_mobile_add_to_cart

PURCHASE

fb_mobile_purchase

VIEW_ITEM

fb_mobile_content_view

ACHIEVE_LEVEL

fb_mobile_level_achieved

ADD_PAYMENT_INFO

fb_mobile_add_payment_info

ADD_TO_WISHLIST

fb_mobile_add_to_wishlist

COMPLETE_TUTORIAL

fb_mobile_tutorial_completion

INITIATE_PURCHASE

fb_mobile_initiated_checkout

RATE

fb_mobile_rate

SEARCH

fb_mobile_search

SPEND_CREDITS

fb_mobile_spent_credits

UNLOCK_ACHIEVEMENT

fb_mobile_achievement_unlocked

SUBSCRIBE

Subscribe

START_TRIAL

StartTrial

VIEW_AD

AdImpression

CLICK_AD

AdClick

Campaign and ad data

Note: advertising partner name value

The ~advertising_partner_name field populates as Facebook for Meta Ads traffic, not "Meta". Use Ad Partner Name = Facebook when filtering in Branch dashboards or exports.

Branch field

Meta field

~advertising_partner_name

Facebook (static value)

~ad_set_name

campaign_name

~ad_set_id

campaign_id

~secondary_publisher

publisher_platform

~creative_name

creative_name

~creative_id

creative_id

~ad_name

adgroup_name

~ad_id

adgroup_id

~campaign

campaign_group_name

~campaign_id

campaign_group_id

Caution: server-side creative fields

The creative_id and creative_name fields are populated server-side by Meta on cost, clicks, and impressions sent to Branch. These are not configured in Branch.

Metadata

The table below shows how Branch SDK fields map to Meta MMP fields, and which Meta events each mapping is supported on.

Meta content events in the supported events column refers to this set: fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, and fb_mobile_search.

Branch SDK field

Meta MMP field

Meta event(s) supported

event_data.revenue

_valueToSum

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_spent_credits, fb_mobile_content_view

event_data.currency

fb_currency

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_content_view

content_items[i].$quantity

fb_num_items

fb_mobile_initiated_checkout, fb_mobile_purchase

content_items (array)

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$sku

fb_content_id

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$product_category

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$product_brand

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$product_name

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$price

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$og_title

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$keywords

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

content_items[i].$custom_fields

fb_content (array)

fb_mobile_add_to_cart, fb_mobile_add_to_wishlist, fb_mobile_content_view, fb_mobile_initiated_checkout, fb_mobile_purchase, fb_mobile_search

event_data.search_query

fb_search_string

fb_mobile_search

custom_data.fb_payment_info_available

fb_payment_info_available

fb_mobile_initiated_checkout

custom_data.level

fb_level

fb_mobile_level_achieved

custom_data.fb_success

fb_success

fb_mobile_add_payment_info, fb_mobile_tutorial_completion, fb_mobile_search

custom_data.fb_registration_method

fb_registration_method

fb_mobile_complete_registration

Branch sends all content items tracked for an event when supported. If the advertiser tracks ContentMetadata through the Branch SDK, Branch automatically maps "fb_content_type":"product" for in-app events. Otherwise, fb_content_type is not added.

Data limitations

Please note the following Meta-specific data behaviors in Branch:

  • Redacted data: Meta may redact specific metrics or events when aggregation levels aren't high enough to prevent de-anonymization, or for non-aggregated view-through and click-through data. Redacted values appear as "undisclosed" in Branch and null in Aggregate Exports.

  • Android event detail: For Android events specifically, you can retrieve event detail (rather than "undisclosed") by enabling Meta Install Referrer.

  • Device-level data to third parties: Branch cannot send device-level Meta attribution data to third parties unless attribution flowed through Meta Install Referrer or AEM.

  • Deep link session callback: Meta attribution data is not returned in the deep link session initialization callback inside the app.

  • 60-day purge: Branch purges last-attributed Meta data after 60 days.

Feature support for Meta data

Branch feature

Meta data included

Dashboard visualizations

Pre-aggregated analytics

Query API

Pre-aggregated analytics

Liveview

Pre-aggregated analytics

CSV Exports

Pre-aggregated analytics

Webhooks

Pre-aggregated analytics

Daily Export API

Not supported

Data Integrations

Not supported

Troubleshooting

My AEM events show as "Ineligible"

This usually means AEM was toggled on in Branch before AEM was enabled in Meta. Set up AEM in Meta first, then enable it in Branch. If you've already hit this, toggle the AEM switch off and back on in Branch to recover.

I get a connection error when pasting the SKAN conversion value URL in Meta

Meta returns a connection error if Branch can't supply a conversion value response. Confirm that:

  • Your app is enabled for SKAN in Branch. See Enable SKAdNetwork.

  • You've mapped at least one conversion value in the Branch dashboard. Without a mapping, Meta gets an empty response.

SKAN data in Branch looks delayed

Meta's SKAN dashboard data is reflected by the Meta conversion date rather than the Branch ingestion date. This produces a delay similar to cost data on traditional SAN install campaigns. Allow 24–48 hours after implementation before troubleshooting further.

Branch and Meta numbers don't match

Meta and Branch can show different totals for the same campaign because of attribution window differences, late conversions, redaction thresholds, and aggregation rules. See Common Sources of SAN Reporting Discrepancies for the full list of expected differences.

Where do I see Meta SKAN data in Branch?

To see Meta SKAN data in the new Branch experience, use the SKAN or Unified + SKAN data source for Analysis dashboards and set Ad Partner Name = Facebook.

Additional resources

For additional questions, see the Meta Ads FAQ and Meta Advanced Mobile Measurement guides.