> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.funnelflux.pro/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Tracking setup for Ads.com

Ads.com is a search arbitrage provider. Below are details on the ideal tracking setup.

## Adding as an offer source
To begin, add an offer source in FunnelFlux and pick the Ads.com template:

![](https://storage.crisp.chat/users/helpdesk/website/-/b/7/4/9/b749232d828ce800/827804af65df4cb9298dcdca449b52_1etyv9s.png)

Now, review the data passing tab, as URL data config is vital for search arbitrage:

![](https://storage.crisp.chat/users/helpdesk/website/-/b/7/4/9/b749232d828ce800/fbc710bd611ed40ba1a037a9bb206d_1wliozk.png)

Refer to the requirements listed in Ads.com documentation [here](https://refdocs.ads.com/cs/requirements).

You must pass a valid `ref_adnetwork`, `ref_keyword` and `ref_pubsite` in all links.

Above you can see we are passing traffic source name automatically -- so make sure your FunnelFlux traffic source names are sensible.

For `ref_keyword` and `ref_pubsite`, you will need to adapt this for your particular traffic sources and/or campaigns.

**You have two options:**
1.  Make a unique offer source to use for specific traffic sources, and set sensible data-xxx tokens here. For example, if your traffic source can pass placement IDs and headlines, you could use `{data-headline}` and `{data-site}` if those were the tracking fields that contained this info
2.  You can leave it as is then at the offer level set specific overrides, particularly for `ref_keyword`

You could also use a combination of this, e.g. setting `ref_pubsite` to `{data-placement_id}` and then overriding and `ref_keyword` at the offer level, and making individual offers for each keyword.

How you approach this will depend on your traffic source and campaigns overall.

Just be aware you must ensure you are always passing a valid `ref_keyword` and `ref_pubsite` for compliance.

## Conversion tracking
Ads.com's reference documents on this are available [here](https://refdocs.ads.com/cs/s2s-tracking).

Using our template, our hit ID will be passed using the `ffhitid` URL parameter and it's token on the Ads.com side will be `{ffhitid}`.

To make search arbitrage tracking ideal, you want to send real-time estimated data then follow-up with more accurate revenue later.

However, you do not want that more accurate revenue posted to the traffic source as it will likely inflate conversion counts.

**So, here's what you should do:**

1\. Set an initial postback to fire estimated revenue, which is available after 15 minutes -- initial clicks do not provide revenue. So choose the "Revenue Estimated" event. You can set whatever name for it, and for the postback URL use the one from our template e.g.
```
https://DOMAIN/pb/?hit={ffhitid}&tx={click_term}&rev={revenue_estimated}
```
2\. Create a second postback for the revenue finalized event, using a postback of:
```
https://DOMAIN/pb/?hit={ffhitid}&tx={click_term}&rev={revenue_finalized}&disable_postbacks=true
```
This will update revenue data in FunnelFlux 6 hours later and will not send the event to the traffic source (important!).

From what Ads.com [details](https://refdocs.ads.com/cs/revenue-tracking):
-   Estimated revenue is available every 15 min and currently it is within 98% accuracy for our client 95% of time. It is able to be sent via postback
-   Finalised revenue is updated every 6 hours after the estimated revenue is calculated. Accuracy is up to 99% for clients 98% of time.
-   Payment is made based on official revenue, not on finalised.
-   Official revenue is only available in the UI and via API and can not be sent via postback or attributed to click IDs