Skip to content
DarkCore CRM

Profit per media buyer: spend, revenue and ROI

How to count profit and ROI per media buyer and per offer, why tracker and ad cabinet numbers disagree, and a worked example with example figures.

Published
8 min read
8 min read
Русский
Українська
Engraved balance scale with stacks of coins on both pans and gears at its base
On this page
  1. The formula: spend, revenue, profit, ROI
  2. Per buyer and per offer
  3. Why tracker and cabinet numbers disagree
  4. A worked example
  5. Profit per buyer in DarkCore CRM
  6. FAQ
  7. How do I calculate a media buyer’s profit?
  8. Why does my tracker show a different result from the ad account?
  9. Should ROI include salaries and tools?

A media buyer’s profit is the revenue booked on their campaigns minus what they spent to get it, and ROI is that profit divided by the spend. Revenue lives in the tracker or the advertiser’s statistics, spend lives in the ad cabinet, and neither system holds both. So the number only exists after you join the two on the same buyer, offer, day and time zone. Where cabinet and tracker disagree, trust the tracker for revenue and the cabinet for spend, then explain the gap instead of averaging it.

The formula: spend, revenue, profit, ROI

Four numbers, defined once for the whole team:

  • Spend. What the ad accounts charged for the campaigns of this buyer in the period. Add the costs you decide belong to the buyer, such as an agency fee on top of the ad spend.
  • Revenue. What the advertiser pays for the conversions of this buyer’s traffic. This is the payout times the conversions you count as paid, not the clicks or the leads.
  • Profit. Revenue minus spend.
  • ROI. Profit divided by spend, as a percentage. A buyer who spent 1,000 and made a profit of 200 has an ROI of 20 percent.

Pick one definition of ROI and keep it. Dividing by ad spend only and dividing by all costs give different percentages for the same campaign, and a team that mixes them argues about nothing. Likewise decide whether revenue counts approved conversions only, or also pending ones. Pending revenue makes yesterday look better than it will end.

Currency and time matter too. If spend is in one currency and payouts in another, convert both with one rate, written down. If the cabinet and the tracker use different time zones, a day in one is not a day in the other.

Two identical brass telescopes pointing at the same lantern from slightly different angles

Per buyer and per offer

The same rows can be cut two ways, and you want both.

Per buyer answers who earns and who loses. It needs a stable key that links a campaign to a person. The usual keys are a label in the campaign name, a tag in the tracker, or the owner of the ad account. Pick one, enforce it, and check weekly that no campaign is unlabelled. A campaign without a buyer is the main reason the sum of buyers does not match the team.

Per offer answers what is worth running. Here the key is the offer and the GEO, and the revenue side is straightforward because the payout is known: paid conversions times the payout in force on that date. Spend per offer comes from the campaigns that ran it, so the same campaign-to-offer link matters.

Shared accounts are the hard case. If two buyers use one ad account, the cabinet cannot split the spend. You need either a rule (split by campaign label) or separate accounts. Spend that matches no campaign should sit in its own visible bucket, not disappear: otherwise some buyers’ profit is overstated on money nobody booked.

Cut by buyer first, then open a buyer into offers, then into campaigns. If one buyer is in the red, the offer level tells you whether it is the buyer or the offer.

Why tracker and cabinet numbers disagree

Expect a gap between what the ad network reports and what the tracker records. The usual causes are well known:

  • Time zones. Each system may log events in a different time zone, so a day does not contain the same events.
  • Attribution. Meta counts with its own model, including view-through windows, while trackers usually credit the last click. One guide notes that Meta can take up to 72 hours to attribute a conversion, so recent cabinet data is incomplete.
  • Modeled conversions. After the iOS privacy changes, part of what Meta reports is estimated, not measured.
  • Revenue delay. Advertisers and networks can take 24 to 48 hours to confirm revenue, so the tracker’s recent days are incomplete too.
  • Duplicates and setup. One system may count several conversions from one click while another filters them, and a broken postback or a missing parameter drops conversions.

For a sense of scale, one tracking guide suggests a gap of up to 10 percent is acceptable, 10 to 15 percent deserves a close look, and above 15 percent means auditing the setup. That is one vendor’s rule of thumb, not a standard, but it is a useful trigger.

The practical rule: use the cabinet for spend, because the money was charged there, and the tracker or the advertiser’s statistics for revenue, because that is where payable conversions are. Do not rank a buyer by the cabinet’s conversion count.

Wooden coin sorting tray with three bins and blank discs falling from a funnel

A worked example

All figures below are an example, not real results. Two buyers ran one week on the same offer. Spend comes from the cabinets, revenue from the tracker.

Spend Revenue Profit ROI
Buyer A 4,000 5,200 1,200 30.0%
Buyer B 3,000 2,700 -300 -10.0%
Team 7,000 7,900 900 12.9%

Buyer A looks strong and Buyer B looks weak. Now add a cost that is real but sits outside the cabinet: suppose an agency fee of 10 percent of spend, which is 400 for A and 300 for B.

Profit before fee Fee Profit after fee ROI on spend
Buyer A 1,200 400 800 20.0%
Buyer B -300 300 -600 -20.0%
Team 900 700 200 2.9%

The team’s 12.9 percent ROI became 2.9 percent, and nothing about the traffic changed. This is the reason to decide what belongs in spend before the first report.

Two more checks on this example. First, if 500 of the spend matched no campaign and was left out, the team’s profit would read 500 higher than it really is, by omission, so unmatched spend must stay visible. Second, if Buyer B’s last two days are still waiting for the advertiser to confirm revenue, the loss may shrink. Mark the days that are not final and compare buyers on final days only.

Stack of ledger books topped by a brass adding machine with a lever

Profit per buyer in DarkCore CRM

DarkCore CRM puts the two sides in one place. Reports join tracker numbers (clicks, installs and deposits from Keitaro or DarkCore PWA) with spend from Meta and TikTok ad accounts, plus deposits the advertiser reports, and count profit and ROI on every row. Drag Buyer to the top of the grouping and the same report compares the team, with the buyers in the red easy to spot; open a row to see offers, GEOs and campaigns below it. Write a formula once and it becomes a column, a card and a condition for auto-rules, and a saved report can be shared as a read-only link.

For the key between campaign and person, the CRM maps the labels buyers use in Keitaro to CRM users, and a sub parameter carries the Meta campaign so spend finds its clicks. Meta spend is read every morning for the last 28 days and TikTok spend every hour. Spend that matches no campaign waits in Spend control by network until someone binds it, so profit is not counted on half the money. The finance P&L takes spend from the same synced numbers, so reports and P&L agree, and roles decide whether a buyer sees only their own profit or the team’s. The site shows no prices, and a demo is booked through Telegram.

FAQ

How do I calculate a media buyer’s profit?

Add up revenue from the buyer’s campaigns in the tracker or the advertiser’s statistics, subtract their spend from the ad cabinet and any costs you assign to them, and divide the result by spend to get ROI. Use the same period, time zone and currency for both sides.

Why does my tracker show a different result from the ad account?

Because the two systems measure different things: the cabinet knows spend and its own attributed conversions, while the tracker knows the clicks it recorded and the payouts. Time zones, attribution windows, modeled conversions and delayed revenue confirmation all widen the gap. Compare spend from the cabinet with revenue from the tracker, and investigate when the difference passes about 10 to 15 percent.

Should ROI include salaries and tools?

For judging a campaign, spend and direct costs such as agency fees are enough. For judging the business, add salaries, tools and accounts in a P&L. Keep the two views separate and say which one a number belongs to.

All articles