Skip to content

Importing conversions

Import is for conversions that did not arrive by postback: the network did not set one up, the postback did not get through, or you need to load history. Conversions come from the network’s account and are loaded from a file or entered by hand.

Open “Conversion import” (/dashboard/conversions/import). There are two tabs: “CSV Import” and “Manual Entry”.

Conversion import page with the CSV Import and Manual Entry tabs and the file picker area
  1. The tabs: CSV Import and Manual Entry.
  2. The file upload area on the CSV tab.

The first row is required and holds the headers. Column order does not matter. Unknown columns are ignored. Header names are not case-sensitive, and punctuation is ignored.

What Accepted headers Required
Click id subid, sub_id, click_id, clickid, click_token, “Click ID” Yes
Status status — lead, sale, rejected, rebill or upsell No (default lead)
Payout payout, revenue, amount No
Currency currency, payout_currency No
Transaction ID tid, external_id, conversion_id Recommended
Date date, converted_at, event_date No

Example:

subid,status,payout,currency,tid,date
3f6c2a10-8e1b-4d2f-9a51-0b7c2e9d4f11,sale,25.5,USD,ORD-1001,2026-10-10 14:32
7a1d9e44-2c0b-4f8e-b3a6-5e2d1c9f0a22,rejected,0,USD,ORD-1002,2026-10-10 15:05

A row with a status outside the list is rejected. The import report gives the reason.

The import report gives a result for every row:

Result Meaning
accepted The conversion was recorded.
updated A conversion with the same tid was found, and its status or payout was updated.
duplicate An exact repeat. Nothing changed.
rejected The row failed validation, for example an unknown status or a click id that is not a UUID.

Deduplication works the same way as for postbacks: the key is the pair (goal, tid). The conversion goes to the default goal unless the import names another. You can import only clicks from your own workspace.

On the “Manual Entry” tab, fill in one conversion: click id, status (lead by default), payout, currency, transaction ID, date and goal. The “Goal” field defaults to the first active goal.

“Record Conversion” saves the row. “Import CSV” loads the whole file.

  • The request body is about 100 KB. Split a large file into parts.
  • Import runs the same logic as a postback. That means outgoing postbacks to sources and CAPI sends are triggered too.
  • A click id that is not a UUID. Telegfy accepts only its own click id. An ID from the network’s account will not match, unless it equals our subid.
  • Decimal separator in the amount. Both a dot and a comma work: 10,5 and 10.5 are 10.5. If the amount has both (1,000.50), the comma is treated as a thousands separator.
  • An unknown status. Only our five statuses are accepted. Translate the network’s statuses beforehand, for example approved to sale.

The same import is available through the API (POST /api/v1/conversions/import) with the conversions:write scope. For regular loads, use the API rather than a manual file.