Most. Help

Keitaro Cost Import: Facebook Ad Spend Into Your Tracker

Published Sep 14, 20266 min readIntermediate
Hand-drawn coin stack labeled spend on the left, an orange arrow crossing a dotted border into a tracker box showing profit, and a small calendar marking the refresh day
What you'll learn
  • How the Facebook Costs integration differs from conversion sending
  • Which fields the Add account setup needs, token included
  • Why the {{adset.id}} parameter decides whether costs get recorded
  • How the update schedule and currency conversion work
Intermediate

Keitaro Cost Import: Facebook Ad Spend Into Your Tracker

The case for Keitaro cost import is simple: ad spend in the tracker turns it from a conversion counter into a profit calculator: with spend in the reports, every campaign row shows ROI instead of payouts alone. Keitaro ships this as a dedicated integration - Facebook Costs - that imports costs from an ad account on a schedule, converts them into the tracker's currency, and posts them into campaign reports. This guide walks the setup end to end: how the integration differs from conversion sending, the exact fields it needs, the one campaign parameter that silently decides success, and the troubleshooting list for when costs refuse to appear.

The money-frame around this setup - why tracker ROI and platform ROAS disagree - is in the tracker ROI vs ROAS guide; here the focus is the plumbing.

What the Facebook Costs Integration Is

Keitaro's documentation is explicit about the boundary: the integration "imports costs from a Facebook Ads ad account to Keitaro," and "the cost integration is separate from the conversion sending integration" (Facebook Costs documentation). Two integrations, two credentials, two jobs: Facebook Conversions sends your conversions out to Meta; Facebook Costs pulls spend in.

Spend lands in campaign reports, which is where it becomes useful: per-campaign and per-source profitability, honest per-offer comparisons, and the tracker ROI denominator from the money reconciliation guide. The cost parameter in the postback contract covers per-conversion cost models; the integration covers the ad-account spend that never travels through postbacks.

The Setup: Fields That Matter

The documented setup sequence:

  1. Open Integrations, select Facebook Cost, click Add account.
  2. Fill the fields: Name for the integration label; Choose campaigns - the Keitaro campaigns to update; Ad account ID copied from Facebook Ads Manager; Access Token for the API connection; the Facebook API version; Update every - the automatic refresh interval; and Use proxy for routing the requests.
  3. Save - and note that the integration list also offers Pause, Resume, Clone, Delete, and a manual Update costs button for an immediate refresh.

One field deserves its own minute - the token. Per the docs: in Facebook, create an app (Other, then Business type), enable Marketing API in the app settings, open Tools, tick the boxes, and generate the token to copy into Keitaro (Facebook Costs documentation).

The {{adset.id}} Requirement

Under the hood, the integration maps Facebook's spend data onto Keitaro campaigns through campaign parameters, and the ad set identifier is the load-bearing one: {{adset.id}}. The documentation states the failure mode verbatim: "If campaign parameters are empty or differ from the template, costs are not recorded."

In practice that means three places must agree:

  1. The Facebook campaign's URL parameters carry the template macros - at minimum the ad set identifier.
  2. The tracker campaign's parameter columns are set to receive them.
  3. For remote-hosted sites (KClient PHP, the tracking script, the WordPress plugin), the tags travel onward in the site URL, and through apps the parameters pass along the chain - the documentation shows sub1={{adset.id}} into the app, then sub1={sub1} into Keitaro.

When costs silently never appear, this parameter chain is the first suspect - before tokens, before API versions.

Schedule and Currency

Updates run per the interval in Update every, and coverage is documented: each update "updates costs for the last 5 days," while "the first update covers 30 days." Currency handling is automatic on the tracker side: Keitaro pulls the currency from the Facebook account and converts it into the tracker's currency, so your reports show the tracker's base currency either way.

One reporting consequence from the reconciliation guide applies directly: spend updates are periodic, so same-hour ROI comparisons can mix a fresh revenue row with yesterday's spend row. Compare on settled periods, never on the live edge.

Troubleshooting: When Costs Do Not Appear

For missing costs, the documented checklist runs:

  1. "Integration is not tied to a campaign" - no Keitaro campaign was selected in the integration; add one and save.
  2. Parameters empty or different from the template - costs are not recorded; restore the {{adset.id}} chain from the section above.
  3. Version mismatches - the Keitaro version and the Facebook API version in the integration both need to be current.
  4. Token problems - the Marketing API token must be live and copied fully.
  5. Region access - the proxy option exists for reaching specific regions and reducing block or captcha risk on frequent automated requests.

On the platform-side leg of the picture - what Meta actually counted - Pixel Activator and Test Events cover verification, while the postback checklist handles the conversion half of the books.

Importing Facebook Ad Spend: Frequently Asked Questions

Frequently asked questions

Sources

Sources

Spend meets revenue
  • Verify the revenue half: Pixel Activator fires free test events while you wire the spend side.
  • Both books, one system: Most keeps conversions flowing while your spend imports itself.
Was this guide helpful?
Author
Most Team
Справочная служба

Официальные руководства и глоссарий для платформы Most и Активатора пикселей.

Topic
Affiliate Conversion Tracking: The Complete Guide
Main article of the topic
Related articles

Related guides

Affiliate Conversion Tracking: The Complete Guide

The entry point to our affiliate tracking cluster: how a conversion that lands on someone else's offer travels through a postback, a tracker, and a Conversions API call, and where each specific failure has its own deep-dive guide.

16 min

Tracker Migration Without Losing Conversions

Changing trackers is easy; changing them mid-flight is not. Every click already sent to the old tracker expects its postback at the old address, and every platform window keeps running. This guide lays out the migration order that loses nothing: parallel running, postback continuity, cutover sequencing, and the checks that close each stage.

7 min

Voluum S2S Tracking: The Postback Contour From Click to Platform

Voluum's S2S contour is one loop: a token rides the click to the offer, and the affiliate network returns it in a postback whose cid parameter carries the value back home. This guide walks the loop - token propagation, the postback URL, platform integrations - and the verification that proves every conversion completes the circuit.

5 min

RedTrack Conversions API: One Conversion, Several Platforms

One click, several ad platforms that deserve to hear about its conversion. RedTrack's CAPI integrations make that a configuration job rather than a coding one: the clickid token matches conversions through S2S postbacks, and each platform integration maps those conversions into its own events. This guide walks the multi-platform setup with the documented fields, matching rules, and dedup pitfalls.

6 min