Chapter 7: Create your URL and connect paid acquisition tools
With the measurement plan defined, you're ready to put it into practice: getting the live campaign link, and connecting RevenueCat Funnels to Meta Ads. Defining identity, campaign fields, and sources of truth first (as covered above) is what prevents duplicate events and contradictory reporting here.
Measurement plan → a paid destination URL
After the parameter schema and source-of-truth plan are defined, apply them to the published funnel link. Meta can populate names and IDs dynamically using URL macros, so one reusable pattern can resolve into a unique URL for each ad. A starting pattern is:
https://signup.cat/LINK_ID/?utm_source={{site_source_name}}&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}&placement={{placement}}
To turn this pattern into a live link:
- Replace
LINK_IDwith the production funnel link or custom-domain equivalent - Declare
campaign_id,adset_id,ad_id, andplacementin funnel Settings - Preview the ad and inspect the resolved URL rather than assuming the macros work
- Click the preview on a real phone and complete a test session
- Confirm both readable names and immutable IDs were captured
Use the same principle for other channels: standard UTMs for readable reporting, platform IDs for durable joins, and a tested final URL for every live campaign.
Connect RevenueCat and Meta
The Meta connection can be confusing because RevenueCat can send two kinds of events, and they serve different purposes:
- Standard subscription events: including trial start, initial purchase, trial conversion, renewal, and non-renewing purchase. These are the events used for campaign measurement and optimization when Meta can match them.
- Funnel events: including step started, step completed, and funnel purchase. RevenueCat documents these as custom analytics events; Meta doesn't use them for attribution or campaign optimization. See our Meta Ads integration Docs page for more info.
Configure the integration like this:
- Open Project Settings → Integrations → Meta Ads
- Select the Conversions API integration, which RevenueCat recommends for reliability
- Add the production Dataset ID and Client Token. Add sandbox credentials if you'll validate sandbox events
- Configure the desired ATT behavior and revenue treatment
- Map trial start to StartTrial; map trial conversion, initial purchase, and renewal to Subscribe; map a non-renewing purchase to Purchase, unless the team has a documented alternative
- Enable Web Funnel Events only if those custom events are useful for diagnostics.
- Remove or deduplicate any other sender reporting the same purchase revenue to Meta
The app-side Meta SDK and permitted identifiers improve matching for subscription lifecycle events. RevenueCat may use values such as $fbAnonId, $idfa, $gpsAdId, $idfv, IP address, or customer contact attributes, depending on platform and consent. Meta — not RevenueCat — decides campaign credit and match quality.
Successful delivery only means Meta accepted the event; it doesn't prove successful attribution. Check both the RevenueCat integration-delivery record and Meta Events Manager diagnostics (though note that Meta reporting may take up to 24 hours).