Cash Flow Inventory
Menu
Documentation

TikTok, Microsoft and other ad platforms

Connect TikTok, Microsoft Advertising, LinkedIn, Pinterest and Snapchat for spend, send paid orders to TikTok and Microsoft, and import spend from a file.

Where in the app
IntegrationsAttributionAd platforms
Last reviewed
Reading time
11 min

What it is

Besides Meta and Google, the app works with five more ad platforms: TikTok Ads, Microsoft Advertising, LinkedIn Ads, Pinterest Ads and Snapchat Ads. All five bring their daily spend. TikTok and Microsoft also receive your paid orders as conversions. Any other ad network can bring its spend through a file.

Why it matters: the ROAS report can only compare spend with profit when it knows the spend. And a platform that hears about paid orders learns to find more buyers who pay.

Example: a fashion shop in Pakistan spends PKR 60,000 a month on TikTok and PKR 15,000 on a local ad network. TikTok is connected, so its spend arrives each night. The local network sends a monthly sheet, which you import from a file. The report then shows both next to the orders and profit they brought.

Who it is for

  • Shops that advertise on TikTok, Bing (Microsoft Advertising), LinkedIn, Pinterest or Snapchat
  • Agencies that send spend sheets for other networks
  • Owners who want every channel's spend in one report

Which platform does what#

PlatformDaily spendPaid orders sent back (server conversions)
TikTok AdsYesYes: checkout and purchase, through TikTok's Events API
Microsoft AdvertisingYesYes: purchase, as an offline conversion (needs the Microsoft click id)
LinkedIn AdsYesNo
Pinterest AdsYesNo
Snapchat AdsYesNo
Any other networkFrom a CSV fileNo

Before you start#

  • You need access to Integrations; connecting, importing and changing settings needs the Integrations Edit right.
  • The CFI Order Attribution plugin on your WooCommerce store, so orders carry their click ids and campaign ids. See the store plugin.
  • For TikTok conversions: a TikTok pixel and its access token. For Microsoft conversions: an offline conversion goal, created at least 2 hours before the first upload.

Step by step#

  1. Open Integrations › Attribution and go to the Ad platforms tab.
  2. Choose Connect on a platform card: TikTok Ads, Microsoft Advertising, LinkedIn Ads, Pinterest Ads or Snapchat Ads.
  3. Choose Sign in with the platform, sign in on its own page and allow read-only reporting access. Nothing is changed in your ad account.
  4. If you have several ad accounts, tick them under Choose the ad accounts to connect and choose Connect selected.
  5. Copy the platform's line from UTM templates — tag every ad with its campaign id into your ads (see below).
  6. The next morning, check the account's line on the card: "Last run … · 120 day rows, 8 campaigns". The first year of history arrives over the first nights.

If the sheet says "CFI’s … app isn’t set up on this server yet — use the advanced form.", fill in the fields under Advanced: paste credentials from your own developer app:

  • TikTok Ads: Access Token, Advertiser ID
  • Microsoft Advertising: Client ID, Client Secret, Refresh Token, Developer Token, Customer ID, Account ID
  • LinkedIn Ads: Client ID, Client Secret, Refresh Token, Sponsored Account ID
  • Pinterest Ads: Client ID (App ID), Client Secret, Refresh Token, Ad Account ID
  • Snapchat Ads: Client ID, Client Secret, Refresh Token, Ad Account ID

How to send paid orders to TikTok#

  1. In TikTok Events Manager, open your web pixel, go to its Settings and generate an access token. Only an admin or operator of the ad account can do this (TikTok: get started with Events API (opens in a new tab)).
  2. Copy the pixel code (capital letters and digits) and the token.
  3. In TikTok Events Manager, open Test events for the pixel and copy the test code (TikTok: set up and verify pixel (opens in a new tab)).
  4. In the app, under Server conversions, choose Set up on the TikTok card.
  5. Enter the Pixel code, paste the token in Conversions API access token, and paste the test code in Test event code (optional).
  6. Keep both Events ticked: checkout started (the same event id as the browser) and purchase once paid. TikTok receives them as InitiateCheckout and CompletePayment.
  7. Choose Limited Data Use (US state privacy laws): Automatic (US buyers in covered states) is the default.
  8. Tick Send conversions to TikTok and choose Save.
  9. Place a test order and check it in TikTok's Test events. Then clear the test code and choose Save.

TikTok accepts events up to 7 days old. A cash-on-delivery order paid later is not sent ("Skipped: older than the platform accepts").

How to send paid orders to Microsoft Advertising#

  1. Connect the Microsoft Advertising account on its card first (above).
  2. In Microsoft Advertising, open Tools › Conversion goals (in the newer menu: Conversions › Conversion goals), choose Create, pick the offline conversions type and name the goal (Microsoft Advertising: tracking offline conversions (opens in a new tab)).
  3. Wait 2 hours. Microsoft may not apply conversions sent sooner (Microsoft: apply offline conversions (opens in a new tab)).
  4. Keep Microsoft click id auto-tagging on. Creating an offline goal switches it on.
  5. In the app, under Server conversions, choose Set up on the Microsoft Advertising card.
  6. Enter the Offline conversion goal name exactly as in Microsoft, and the Microsoft Advertising account id.
  7. Check that the sheet says "Uses the connected account …", tick Send conversions to Microsoft Advertising and choose Save.

Microsoft can take up to six hours to show uploaded conversions. There is no test mode for Microsoft in the app: the first upload is live.

How to import spend from a file#

  1. Export a daily spend report from the ad network as a CSV (comma, semicolon or tab separated), one row per campaign and day.
  2. On the Ad platforms tab, open Import spend from a file.
  3. Choose the Spend file (CSV) and Upload and preview.
  4. Check which column holds the date, the campaign (name and/or id), the spend, and optionally impressions, clicks, the platform's conversions and value. Columns not in the file are "— not in the file —".
  5. Choose the platform (or other), the Currency of the amounts, the Time zone of the days and the Date format if it is not read automatically.
  6. Choose Import.

Importing the same file again changes nothing: each campaign-day is replaced, not added. A day that a connected account already brought is never overwritten. A file can have up to 50,000 rows.

UTM lines per platform#

Copy each line from UTM templates in the app; it puts the campaign id in utm_id, so spend joins orders by id and survives renamed campaigns.

PlatformWhere to paste itLine
TikTokAds Manager › ad › Destination › URL parameters (or the URL builder)utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__&utm_id=__CAMPAIGN_ID__&utm_term=__AID__&utm_content=__CID__
Microsoft AdvertisingShared library › URL options › Final URL suffix (account level)utm_source=bing&utm_medium=cpc&utm_campaign={Campaign}&utm_id={CampaignId}&utm_content={AdGroupId}
LinkedInCampaign Manager › campaign › URL tracking parametersutm_source=linkedin&utm_medium=paid_social, then utm_campaign = dynamic "Campaign name" and utm_id = dynamic "Campaign ID"
PinterestAds Manager › ad › Destination URL, or the account tracking parametersutm_source=pinterest&utm_medium=paid_social&utm_campaign={campaign_name}&utm_id={campaignid}&utm_content={adgroupid}
SnapchatAds Manager › ad › Website URL › Build URL parametersutm_source=snapchat&utm_medium=paid_social&utm_campaign={{campaign.name}}&utm_id={{campaign.id}}&utm_content={{ad.id}}

Notes the app gives: TikTok macros are upper case with two underscores on each side; keep Microsoft auto-tagging (msclkid) on; Pinterest fills placeholders only once the ad runs, not in the preview. Each line has a link to the platform's own help page. For Google and Meta see Google Ads and Meta.

What each field means#

FieldMeaning
Pixel code (TikTok)The pixel's code from TikTok Events Manager, capital letters and digits.
Conversions API access token (TikTok)The Events API token for that pixel. Stored encrypted, never shown again.
Test event code (optional) (TikTok)While set, events go to TikTok's test view only.
Offline conversion goal name (Microsoft)The goal's name, exactly as in Microsoft (up to 100 characters).
Microsoft Advertising account idThe account the goal belongs to; it must be a connected account.
Value sentNet revenue (default), Cash collected, or Profit (needs the Gross profit report right and your confirmation).

Daily use#

A cash-on-delivery shop in Bangladesh

TikTok gets CompletePayment only when the courier's cash is settled; refused parcels are never sent. If your courier settles more than 7 days after the order, those orders are not sent. Watch Recent conversions for "Skipped: older than the platform accepts" if your courier pays out slowly.

Only orders with marketing consent are sent to TikTok or Microsoft. Microsoft also needs the click id, which the plugin keeps only after consent. Expect few Microsoft conversions where many shoppers decline.

A multi-location retailer

Spend from every platform is converted to your currency with your own exchange rates, and the ROAS report shows each platform's campaigns side by side. Counter sales are not sent to any platform.

What you see#

Each platform card lists its connected accounts: "synced 2026-11-12 04:16", "Last run … · 95 day rows, 6 campaigns", "History: back to 2025-11-01", or "paused (rate limit) — resumes tonight". Example Recent conversions:

WhenPlatformEventOrderValueStatus
2026-11-11 19:02tiktokInitiateCheckoutSO-3301PKR 4,500Sent
2026-11-12 11:15tiktokCompletePaymentSO-3301PKR 4,200Sent
2026-11-12 11:15microsoftPurchaseSO-3305—Skipped · No ad click on the order

After an import: "Ad spend imported." or "Imported again — the same days were replaced, nothing was added twice." and a count such as "40 written, 3 kept from a connected account".

Good practice#

  • Connect accounts rather than importing files when the platform allows it: connected spend is corrected for 30 days as the platform restates it.
  • Put the UTM line on every ad before the campaign starts.
  • Test TikTok with a test code every time you change the pixel or token.
  • Create the Microsoft goal first, wait 2 hours, then switch conversions on.

Troubleshooting#

What you seeWhyWhat to do
Enter the pixel code — capital letters and digits.The TikTok code has other characters.Copy the code from TikTok Events Manager.
Enter the offline conversion goal name (up to 100 characters).Empty or too long.Copy the goal's name from Microsoft.
Connect the Microsoft Advertising account above first — server conversions use its sign-in.No connected account with that id.Connect it on the card, then save.
Skipped · No ad click on the orderMicrosoft needs the msclkid; the order has none.Normal for orders not from a Bing ad, or without consent.
TikTok Ads validation failed: …The advanced form's token or advertiser id was refused.Check both in TikTok and paste them again.
Microsoft Advertising validation failed: …Developer token, customer id or account id refused.Check them in Microsoft and try again.
This … account is already connected.You tried to add the same account twice.Nothing to do.
Choose a CSV file (comma, semicolon or tab separated).Wrong file type.Export as CSV.
Map a column to the campaign (name or id).No campaign column chosen.Pick the campaign column in the preview.
No row could be read — check the mapping and the date format.Dates or numbers could not be read.Choose the Date format and check the columns.
The file has more than 50,000 rows — split it.The file is too large.Split it by month.
Sign-in expired — connect it againThe platform refused the saved sign-in; spend stops.Choose Add account and sign in again with the same account.

Limits and what is not there yet#

  • Built and contract-tested; the order path verified end to end in a WooCommerce sandbox; not yet proven on a real ad account.
  • TikTok: the event fields and batch size follow TikTok's published description but are not yet checked with a real TikTok test pixel. Use the test code first.
  • Microsoft: uses offline conversions, which need the msclkid and cannot be corrected or retracted. A refused order is never sent, but one already sent stays. Planned: Microsoft's newer Conversions API, which can restate and retract.
  • After the 2026-11 update, a refused token or permission pauses the destination and keeps events waiting instead of failing them; Microsoft is never sent without an explicit consent value; and a privacy erasure also stops waiting conversion events.
  • LinkedIn, Pinterest and Snapchat: spend only, no conversions. Planned: Pinterest and Snapchat conversions.
  • Removing an account revokes access with Google and LinkedIn. For TikTok, Microsoft, Pinterest and Snapchat, also remove the app's access in that platform's own settings.

Questions#

Can I use a platform that is not in the list?

Yes, for spend: export a CSV and use Import spend from a file with the platform other. Conversions are not sent to it.

Why are there so few Microsoft conversions?

Microsoft offline conversions need the Microsoft click id on the order. Orders from other channels, or from shoppers who declined cookies, have none.

Does TikTok get refused cash-on-delivery orders?

No. TikTok has no "undo" event, so refused orders are never sent; they are kept for an exclusion audience.

LinkedIn gave no refresh token. What now?

The sign-in says so when it happens. Use the advanced form with your own LinkedIn app meanwhile.

All guides

Type at least 2 letters.↑ ↓ to moveEnter to openEsc to close