Documentation

Meta Ads

A Meta Signal Campaign uses an AppSprint Signal link as the Website URL in Meta Ads Manager. AppSprint captures the Meta click, routes users to the store, forwards selected post-install events to Meta's Conversions API, and reports spend beside attributed installs and revenue.

Requirements

  • The AppSprint SDK installed and sending installs/events for this app.
  • Full/Admin access to the Meta business portfolio, ad account, dataset, and Meta app used for OAuth.
  • A Meta web dataset for this app in Events Manager.
  • A Conversions API access token generated for the same dataset.
  • A Meta Signal link in AppSprint, added as the Website URL in Meta ads.
  • The AppSprint tracking domain added to the dataset Traffic Permissions / allowed websites.
Available metrics and definitions
MetricDefinition
SpendAmount spent on the Meta campaign over the selected window.
InstallsInstalls attributed by AppSprint. Falls back to Meta's reported conversion actions when AppSprint has no match.
CPICost per install. Spend divided by attributed installs.
IPMInstalls per 1,000 impressions.
ImpressionsTimes the ad was shown, reported by Meta.
CPMCost per 1,000 impressions.
ClicksAd clicks, reported by Meta.
CPCCost per click.
CTRClick-through rate. Clicks divided by impressions.
CTIClick-to-install rate. Installs divided by clicks.
ROASReturn on ad spend. Attributed revenue divided by spend.
RevenueRevenue from in-app events attributed to this Signal Campaign. Falls back to Meta's reported value when AppSprint has no match.
Available in-app events and definitions
EventDefinition
Achieve levelUser reaches a level or milestone.
Add payment infoUser enters or saves payment details.
Add to cartUser adds an item to the cart.
Complete registrationUser finishes account creation.
Initiate checkoutUser starts checkout.
SessionApp open that creates a user session.
View contentUser views a key screen or content item.
Start trialUser starts a free trial.
SubscribeFirst paid subscription period begins.
PurchaseOne-time purchase or non-subscription revenue event.
Default event mapping

AppSprint sends AppStack-style custom events prefixed with appsprint_. Leave a row blank in the dashboard to disable forwarding for that event.

All mapped events are sent

The selected dataset receives mapped SDK, RevenueCat, and Superwall events. AppSprint sends these events to Meta; it does not receive event data back from Meta.
AppSprint eventMeta custom eventDashboard
installappsprint_installOptional row
purchaseappsprint_purchasePrimary row
subscribeappsprint_subscribePrimary row
start_trialappsprint_start_trialPrimary row
add_payment_infoappsprint_add_payment_infoPrimary row
add_to_cartappsprint_add_to_cartPrimary row
initiate_checkoutappsprint_initiate_checkoutPrimary row
view_content / view_itemappsprint_view_contentPrimary row
sign_up / registerappsprint_complete_registrationPrimary row
session_startappsprint_sessionOptional row
achieve_level / level_completeappsprint_achieve_levelOptional row

Connect Meta Ads

OAuth lets AppSprint load ad accounts, datasets, and Signal Campaign reporting. It is separate from the Conversions API token used for server-side event forwarding.

  1. In AppSprint, open your app and go to Integrations > Meta Ads.
  2. Click Connect Meta Ads and sign in with the Meta user that has business and ad account access.
  3. In Meta's access flow, select the correct business portfolio, ad account, and app access, then approve the requested permissions.
  4. Back in AppSprint, select the ad account that owns the dataset and campaigns for this app.

Configure the Dataset ID and Conversions API token

Use one dataset for the whole setup

The Dataset ID and Conversions API token must come from the same dataset. The dataset receives all mapped app events, not only AppSprint-attributed events, so choosing the wrong dataset sends your app's events to the wrong destination.
  1. Open Meta Events Manager from the sidebar.
  2. Click + Connect data, choose Web, then select an existing dataset or create a new dataset for this app.
  3. Choose Setup Conversions API, click See other ways to setup, then select manual setup.
  4. If Meta asks you to select events or parameters, continue as lightly as possible. AppSprint only sends events to Meta; it does not receive events from Meta, and required parameters are sent automatically by AppSprint.
  5. If Meta requires at least one event before continuing, select Purchase. This only unlocks Meta's setup flow; AppSprint still controls which events are sent.
  6. On the Using the Conversions API page, scroll to Generate an Access Token and copy the token. Meta's official token instructions are available here.
  7. Copy the Dataset ID, test event code, and Conversions API token into AppSprint, then save.

Create the Signal link and allow the domain

  1. In AppSprint, create or select the Meta Signal link, then copy the Website URL.
  2. In Meta Events Manager, open the same dataset, go to Settings, then scroll to Traffic Permissions / Websites.
  3. Click Create an allow list, add the AppSprint tracking domain from the Signal link, usually api.appsprint.app, then click Confirm. This is a dataset website allow-list, not DNS business-domain verification.
  4. Meta custom-event review may appear only after the first test or production events arrive.

Test the Conversions API

In Meta Events Manager, open the dataset's Test Events view and copy the test event code. Paste it in AppSprint and send a test event.

A visible test event proves the dataset path

If the event appears in Meta Test Events, the Dataset ID, token, and AppSprint backend route are working. Live campaign delivery still requires a real Meta click with fbclid, a matched install, and a mapped app/revenue event.

Meta may ask you to confirm custom events

If Events Manager shows Confirm custom event(s) that belong to you, click Review events, acknowledge Meta's Business Tools terms, select all incoming events that start with appsprint_, click Next, choose Confirm the custom event, then click Confirm. AppSprint event names are generic and must not contain health, financial, consumer-report, or other sensitive data.

Map events and confirm custom events

In Integrations > Meta Ads > Event mapping, choose the AppSprint events you want to forward. AppSprint sends them as custom appsprint_ events to the selected dataset.

Confirm custom events before optimizing

After test or production events arrive, Meta may ask you to review custom events that belong to you. Click Review events, acknowledge the prompt, select every incoming appsprint_ event, then confirm them before using them as campaign optimization goals.

Meta can take 30 to 90 minutes after receiving production event data before events appear in Events Manager and campaign setup. Test events are useful for debugging, but they do not unlock campaign optimization.

Create your first Meta Signal Campaign

  1. In Meta Ads Manager, click + Create.
  2. Select Sales as the recommended objective.
  3. At the ad set level, use Website as the conversion location, select the same dataset you saved in AppSprint, then choose the appsprint_ event you want to optimize for.
  4. At the ad set level, open Placements, choose manual placement controls or Further limit the reach of your ads if Meta shows the Advantage+ warning, then select mobile only. In the devices and operating system section, target only the advertised app's platform: iOS only or Android only. In Platforms, keep Facebook and Instagram selected, and turn off Audience Network for the first test.
  5. At the ad level, paste the AppSprint Signal link into Website URL. Do not paste the URL parameters again in Meta's Tracking section.
  6. Launch the campaign. First production events usually need 30 to 90 minutes before Meta surfaces them in Events Manager or campaign setup.

Pre-launch checklist

SDK

The app has shipped with AppSprint configured and install/event tracking verified.

Revenue source

RevenueCat or Superwall is connected if subscription and purchase revenue should be forwarded.

Meta setup

OAuth, ad account, Dataset ID, Conversions API token, test event, event mapping, and Signal link are saved.

Campaign setup

The Meta ad uses the AppSprint Signal link as Website URL, the dataset matches AppSprint, and mobile OS targeting is correct.

Troubleshooting

ProblemWhat to try
OAuth connection expired or missing permissionsReconnect Meta Ads with a user that has access to the business portfolio, ad account, dataset, and Meta app. Approve the ads and business permissions again.
Ad accounts or campaigns do not loadReconnect Meta Ads and confirm the selected Meta user can see the ad account in Business Settings. The Conversions API token does not grant reporting access.
Datasets do not loadSelect the correct ad account, then click the reload icon next to Dataset ID. If Meta still does not return it, paste the Dataset ID manually.
Conversions API token rejectedGenerate a new token from the same dataset in Events Manager, paste it in AppSprint, and save again.
Test event does not appearConfirm the test_event_code, Dataset ID, and Conversions API token all belong to the same dataset. Then send the test again and keep the Meta Test Events tab open.
Events are not appearing in Events ManagerWait 30 to 90 minutes after the first production event, then confirm the Signal link is used as the ad Website URL and the tracking domain, usually api.appsprint.app, is in the dataset Traffic Permissions website allow-list.
Custom events are not selectable for optimizationMeta may need incoming events before they appear. In Events Manager, click Review events, acknowledge Meta's prompt, select all appsprint_ custom events, choose Confirm the custom event, then retry campaign setup.
No deliveries after launching adsVerify the ad uses the AppSprint Signal link as Website URL, the click URL includes fbclid, the SDK records the install, and the mapped SDK/RevenueCat/Superwall event fired after install.
Reporting numbers do not match Meta Ads ManagerAppSprint reports use AppSprint attribution. Meta reports use Meta's dataset and reporting model. Users without a matching Meta click can create differences.