Using traffic source integrations
Integrations let FunnelFlux Pro talk directly to your ad platform's API.
Once an ad account is linked to a traffic source, we can do three things with it:
- Send conversions to the platform's conversion API (CAPI), so you no longer need to build postback URLs or custom scenarios by hand.
- Sync costs from the platform into your reports.
- Sync names, so campaign, ad group and ad IDs show up in reporting as the names you gave them in the platform.
Direct integrations are available for major ad platforms such as Google Ads and Meta. Each one has a step-by-step setup guide in the Direct Integrations section of Traffic Source Integrations. In the app, Settings > Integrations > Traffic Sources shows every platform you can connect.
Other platforms still use the classic postback setup or custom scenarios, described in their own articles.
How it fits together
It's best to think of this as three layers:
- Connections -- you log in to your ad platform account once, in Settings. This is account-wide.
- Traffic source link -- on each traffic source, you pick which connection and which ad account it belongs to.
- Event mapping -- on that same traffic source, you decide which FunnelFlux events (conversions, custom events) get sent to which platform event.
The reason for splitting it up like this is that one login usually gives you access to many ad accounts.
You authenticate once, then point each traffic source at the specific ad account it spends from.
Step 1: Connect your platform account
Go to Settings > Integrations > Traffic Sources.
You will see a card per platform.
Click Connect on the one you want and you'll be sent to that platform to log in and approve access.
When you come back, the account appears under Connections.

A few things to know about this page:
- If a platform is already connected, the button changes to Add account. Use it to connect another login for the same platform -- for example a second Google account that has access to different ad accounts.
- Each connection shows a status: Active, Expired, Auth error or Disconnected. Anything other than Active means we can't use that login, so conversions and syncs for linked traffic sources will stop.
- Reauth sends you through the platform login again. This is the fix for Expired and Auth error.
- Edit lets you rename a connection. Worth doing if you have several, as this name is what you'll pick from on the traffic source.
- Remove deletes the stored credentials. Any traffic source linked to that connection will stop sending platform events, so check what is using it first.
Note that only the platform account you log in with matters here -- you don't pick ad accounts yet. That happens per traffic source.
Step 2: Link the traffic source to an ad account
Open the traffic source (or create a new one) and go to the Integrations tab.
The Platform Integration section walks you through three steps, shown as chips in the top right: Platform > Connection > Ad account.
Each field only appears once the previous one is filled in.
- Traffic Source Integration Type -- the platform, e.g. Google Ads. If the traffic source already used one of our custom scenarios for that platform, or its name makes the platform obvious, we pre-select this for you. You can always change it.
- Connection -- the login you connected in Settings. Only active connections for the chosen platform are listed.
- Ad Account -- the specific ad account this traffic source spends from. Conversions are delivered to this account, so get it right!

For Meta and TikTok there is one more required step: the Meta Dataset / Pixel ID or TikTok Event Source ID that events should be sent to. You can also enter a test event code there while you're checking your setup.
The "Delayed" badge
Some platforms won't accept a conversion until a certain time after the click.
When that's the case, you'll see a badge like Delayed 6h under the ad account.
- Google Ads -- 6 hours
- Microsoft Ads -- 2 hours
- Meta and TikTok -- no delay, conversions are sent straight away
We hold delayed conversions in a queue and send them once they're due.
They still arrive in the platform with the correct conversion time, it's just that you won't see them in the platform's UI immediately.
Why the delay?
Google and Microsoft require it, mainly for user privacy.
If conversions showed up in their reports instantly, you could match the latest conversion to its breakdowns (city, device and so on) and work out details about a specific user that they don't want to expose.
Delaying the upload processing makes that kind of matching impractical at any real scale.
Once all the steps are done, you'll see a reminder that there's one step left -- mapping events.
Click Go to Conversion Tracking to jump there.
Step 3: Map your events
In the Conversion Tracking tab, switch the toggle at the top from Classic Options to Integrations.
This shows the Integration Event Mapping section, where you choose which FunnelFlux events get sent to the platform and what they should be called there.

To add a mapping:
- Pick a Triggering Event -- either Conversions or one of your custom events.
- Pick a Destination Event -- the event in the ad platform it should count as.
- Optionally set overrides and webhooks (more on these below).
The event then shows up under Configured events.
Repeat for every event you want to send, e.g. Conversions to "Purchase" and a custom event to "Lead".
Mapped events get a check mark in the Triggering Event dropdown, so you can see at a glance what's done.
What shows in Destination Event depends on the platform:
- Google Ads and Microsoft Ads -- we load the conversion goals that exist in your ad account. If the list is empty, create the conversion goal in the platform first, then come back.
- Meta and TikTok -- pick from the standard event names, or type your own custom event name.
Note that each destination event can only be used once per traffic source. If it's already mapped to another triggering event, it shows "(mapped to ...)" and can't be picked.
This stops one conversion in FunnelFlux from being counted twice in the platform.
Value Override -- leave this blank and we send the revenue tracked for that event, which is what you want in most setups.
Fill it in if you want the platform to receive a different value than what FunnelFlux tracked.
Currency Override -- a currency code like USD or EUR to send with the event, in case the ad account should record it in a specific currency.
For example, if the revenue you're tracking is in euros, you can set EUR here.
This only changes the currency code we send with the upload -- we don't convert the value.
Webhooks -- here you can also fire one or more webhooks on the same event, e.g. to notify a CRM or Slack.
Pick an existing webhook from the list or click Create to make a new one.
Classic options vs Integrations
The two modes are either/or for a given traffic source.
When you save a traffic source in Integrations mode, its classic postback URL settings are removed.
That's intentional -- if both stayed active, the platform would receive the same conversion twice, once from the old postback and once from the API. Webhooks are kept when you switch.
So if you are moving an existing traffic source over from a custom scenario or postback setup, the switch is one click, but take a note of your old settings first in case you want to go back.
You need at least one mapped event to save in Integrations mode.
Cost Sync
Back in the Integrations tab, the Cost Sync section lets us pull spend straight from the platform.
It appears once all the Platform Integration steps above are complete.
- Enable campaign-level cost sync -- imports campaign spend every hour.
- Reconcile finalized daily costs -- platforms often adjust the previous day's spend after the fact. With this on, we go back and recheck each finished day once the platform has finalized it, so your reported costs end up matching the platform's own numbers. Hover the info icon to see when this runs for your platform.
Once cost sync is on and the traffic source is saved, you'll also see a Sync status panel with the last and next run times, plus Sync hourly costs now and Reconcile daily costs now buttons if you don't want to wait.
Note that native cost sync is campaign-level ONLY.
The Campaign / Adset / Ad chips show which levels are covered.
If you need spend broken down per ad set or per ad, that's available using Argosync -- click Learn more in that section for details.
Dictionary Sync
Ad platforms pass IDs in your tracking links, not names.
So by default your reports show things like 1234567890 instead of "US - Broad - Video 3".
Enable ID to name sync fixes that.
We pull your campaign, ad group and ad names from the platform and swap them in when you view reports.
For this to work, the IDs need to be in your traffic source's tracking fields.
Once you enable it, you'll see a table listing each level, the URL value we expect, and whether a matching tracking field is present.
If a row says Add field, add a tracking field with that URL value to the traffic source.
These are the URL values per platform:
Level | Google Ads | Meta | Microsoft Ads | TikTok |
|---|---|---|---|---|
Campaign |
|
|
|
|
Ad group / Ad set |
|
|
|
|
Ad |
|
|
|
|
We match on the URL value, not the field name, so it doesn't matter what you called the field.
There is also a Show original IDs after synced names option, handy if you still need to see the raw ID next to the name, e.g. to search for it in the platform.
Checking that conversions are being sent
Go to Logs > Integration Logs.
There are two views at the top: Event Logs lists events sent through integrations and their outcome, and Queue shows conversions that haven't been sent yet.
Delayed Google Ads and Microsoft Ads conversions sit in the Queue until they're due, and anything that couldn't be sent shows up there as Held or Failed.

It's the first place to look if conversions aren't appearing in your ad platform.
Troubleshooting
My connection isn't in the Connection dropdown
Only active connections for the selected platform are listed. Check its status in Settings > Integrations > Traffic Sources and click Reauth if it shows Expired or Auth error.
The ad account list is empty or the account shows as unavailable
The login you connected must have access to that ad account in the platform itself. If the account was disabled or your access was removed on the platform side, we can't send to it.
"No conversion goals found" for Google Ads or Microsoft Ads
Create the conversion goal in your ad account first. The list is loaded live from the platform, so it will appear once it exists there.
Conversions are not showing in the platform
Check the Delayed badge first -- with Google Ads, nothing will appear for at least 6 hours after the click. After that, check Integration Logs for Held events.
For platform-specific setup, see the Direct Integrations section of Traffic Source Integrations. The older custom scenario articles are in the Custom Scenarios section of the same category.
Updated on: 15/10/2026
Thank you!
