# Costs

> Record what you pay for your traffic, so profit and ROI in your reports are right.

This page shows you how Proferex knows what you paid for each visit, so the **Cost**, **Profit**, and **ROI** in your reports match what you spent.

Cost can come from four places:

| Where cost comes from | Use it when |
|---|---|
| **Cost sync** | Your traffic source is TrafficJunky, TrafficStars, or ExoClick. Proferex pulls your spend from your account. |
| **Cost in the campaign URL** | Your traffic source can send what it charged for each visit. |
| **Static cost** | You pay a fixed price per click or per conversion. You enter it on the campaign. |
| **Manual cost** | You enter a campaign's spend for a day yourself. See [Manual Costs](/docs/tracker/manual-costs/index.md). |

Cost sync is the most accurate, because it uses the spend your traffic source charged you. A manual cost is the way to fill a gap or fix a day by hand.

---

## Cost sync

Cost sync pulls your spend from your TrafficJunky, TrafficStars, or ExoClick account and spreads it over your visits. You set it up once on the traffic source:

1. Open the traffic source in **Tracker → Traffic Sources**.
2. Under **Traffic Source Adapter**, pick **Traffic Junky**, **TrafficStars**, or **ExoClick**.
3. Paste your **API Key**. See [TrafficJunky](/docs/integrations/trafficjunky/index.md), [TrafficStars](/docs/integrations/trafficstars/index.md), or [ExoClick](/docs/integrations/exoclick/index.md) for where to find it.
4. Check that **Campaign ID Token** points to the row that holds the traffic source's campaign ID. The traffic source templates set this for you.
5. Click **Update**.

See [Cost sync](/docs/tracker/traffic-sources/index.md#cost-sync) for the traffic source settings.

Your campaign URL then carries the traffic source's campaign ID on every visit, and Proferex uses it to match spend to visits.

> **Note:** Visits that arrive without the traffic source's campaign ID can't get synced costs. If you build your ads by hand, keep the campaign URL exactly as Proferex gives it to you.

### How often costs update

Proferex pulls today's spend every 15 minutes. Yesterday's spend is pulled one last time at 2 a.m. in the traffic source's timezone, once the traffic source has finished counting it. Today's cost can change through the day, so wait until the next morning before you compare a whole day with your traffic source.

TrafficJunky and ExoClick report in New York time, and TrafficStars in UTC. Proferex uses the same timezone, so each day's spend lands on that day's visits.

### How spend is shared between visits

Your traffic source reports spend per campaign per day. Proferex shares each day's spend among the visits that carried that campaign's ID that day. Each visit gets its share, so cost shows correctly whether you look at the campaign, a lander, an offer, a country, or a zone.

If two of your Proferex campaigns use the same campaign ID at the traffic source, they share its spend.

---

## Cost in the campaign URL

Some traffic sources can send what they charged for each visit. Put their cost macro in the **Cost (CPC)** row of the traffic source, such as `cost` with the value `{cost}`. The TrafficStars template fills this in for you.

Proferex then uses that amount unless cost sync gives a cost for the visit. On a **CPC** campaign it is the cost of the visit. On a **CPA** campaign it is the price of each conversion, charged on the day the conversion arrives. See [CPA cost lands on the conversion day](#cpa-cost-lands-on-the-conversion-day). See [External ID and Cost (CPC)](/docs/tracker/traffic-sources/index.md#external-id-and-cost-cpc).

---

## Cost model

Each campaign has a **Cost Model**. It decides which costs Proferex uses for that campaign.

To change it, open the campaign and click **Edit Campaign**, then **More**. The cost settings appear once the campaign has a traffic source.

On a campaign whose traffic source has cost sync, you can also click **API** at the top of the campaign's page and then **Edit Cost Settings**.

![Edit Cost Settings for a TrafficStars campaign, with Skip API cost fetching unticked, the Cost Model set to CPC, a Static CPC fallback of 0.05, and the Cost Calculation Priority list](/images/docs/costs-edit-cost-settings.jpg "The cost model and the order Proferex uses costs in")

| Cost Model | Which cost Proferex uses for each visit |
|---|---|
| **CPC - Cost Per Click** | 1. The synced cost. 2. The cost in the campaign URL. 3. The **Static CPC** you enter. |
| **CPA - Cost Per Acquisition** | 1. The synced cost. 2. The cost in the campaign URL, for each conversion. 3. The **Static CPA** you enter, for each conversion. Each conversion is charged on the day it arrives. |
| **CPM - Cost Per Mille** | The synced cost only. Visits it does not cover cost nothing. |

The **Cost Calculation Priority** box in the form spells out the order for the model you pick.

A new campaign uses **CPM** if its traffic source has cost sync, and **CPC** otherwise. **CPM** is the right choice when you buy by impressions on TrafficJunky, TrafficStars, or ExoClick, because only cost sync knows what those impressions cost.

**Skip API cost fetching** ignores the synced cost for this campaign and uses the static value instead. It is not available for **CPM**.

A change to the cost model or the static cost only applies to new visits. Visits already recorded keep their cost.

A manual cost for a day comes before all of these for that day's visits, unless cost sync pulls the day again afterwards. See [How manual costs and cost sync work together](/docs/tracker/manual-costs/index.md#how-manual-costs-and-cost-sync-work-together).

---

## CPA cost lands on the conversion day

On a CPA campaign, you pay when a visitor converts, so Proferex books the charge on the day the conversion arrives, not on the day of the visit. A visit on Monday that converts on Tuesday costs nothing on Monday and the CPA on Tuesday. That way each day's **Cost** matches what your traffic source billed you that day.

![Daily Performance of a CPA campaign with a $4.00 CPA: 28 October with 2 conversions and $8.00 cost, 29 October with 1 conversion and $4.00 cost](/images/docs/costs-cpa-conversion-day.jpg "Each day's cost follows that day's conversions")

Only first conversions are charged. Upsells and rebills add revenue but no CPA, because the traffic source charged you once for the customer. See [Upsells and Rebills](/docs/tracker/upsells-and-rebills/index.md).

The charge is fixed when the conversion arrives. Changing the campaign's **Static CPA** later doesn't change the cost of conversions already recorded.

When cost sync gives a visit its cost, its conversion adds no CPA on top, so nothing is counted twice.

---

## Pause and resume at the traffic source

For campaigns on TrafficJunky and TrafficStars, you can pause and resume the campaign at the traffic source without leaving Proferex. TrafficJunky campaigns also get **Sources** and **Ads**, which open the campaign's spots and ads in TrafficJunky. ExoClick campaigns get **Campaign Overview**, which opens the campaign in ExoClick. Click **API** at the top of the campaign's page.

![The Traffic Source API Integration window with Configure API and Edit Cost Settings, the traffic source TrafficStars and the CPM model, and under Quick Actions the traffic source campaign ID 4402118 with Campaign Overview, Pause, and Resume](/images/docs/costs-api-panel.jpg "Pause or resume the campaign at the traffic source")

1. Under **Quick Actions**, pick the **Traffic Source Campaign ID**. Proferex lists the IDs it has seen on this campaign's visits. The star makes one the default, and **+** adds one by hand.
2. Click **Pause** or **Resume**.

**Campaign Overview** opens the campaign in your traffic source account.

Pausing at the traffic source stops new visits. Your Proferex campaign link keeps working for anyone who still has it.

For every button and message in the window, see [The API window](/docs/reports/campaign-reports/index.md#the-api-window).

---

## Currency

TrafficJunky and TrafficStars report spend in US dollars. ExoClick reports in the currency of your ExoClick account, which Proferex reads when you save the traffic source. Proferex converts every cost to your display currency, so cost and the tracked revenue run through Proferex compare in the same currency. See [Currency](/docs/account/currency/index.md).

---

## Next step

Connect your traffic source's API, then check the next day's **Cost** on your campaign against the spend in your traffic source account. For a traffic source without cost sync, add each day's spend in [Manual Costs](/docs/tracker/manual-costs/index.md).
