How it works
A transparent integration with the TikTok Marketing API
Freshlytics is a third-party tool. It only ever sees the advertising data an advertiser explicitly authorizes it to read, through TikTok's official API — never through scraping, browser automation, shared passwords or any unofficial access.
The data flow, end to end
Four steps, and you control the first and the last one.
You authorize Freshlytics
From your Freshlytics workspace you start the standard TikTok OAuth flow. TikTok shows you which permissions are being requested; you sign in with your own TikTok Business account and choose which ad accounts to grant. We never ask for or store your TikTok password, and we cannot access accounts you did not select.
We read reporting data
Our sync service calls the TikTok Marketing API on a schedule — every 15 minutes for active accounts — and requests campaign structure and performance reports. We honour TikTok's rate limits and pull only the date ranges and dimensions the product actually uses.
We store and normalize it
Metrics are stored in an encrypted database inside your workspace's isolated data set, converted to your reporting currency, and enriched with your targets. Access tokens are encrypted separately and used only to serve your workspace.
You get analysis and alerts
Fatigue, pacing and anomaly models run after each sync. Results appear in your dashboards and, where you asked for it, in Slack, Telegram or email.
Changes go back only with your consent
Write access is optional. Budget, bid and status changes are sent to TikTok only when you approve a recommendation or enable a rule — and every write is logged with the user, the rule and the metric values that caused it.
You can end it at any moment
Disconnect an account in Freshlytics or revoke the app in TikTok Business Center. Syncing stops immediately, and you can request full deletion of everything we hold.
Permissions
What we ask for, and why
We request the narrowest set of permissions that lets the product work. Anything marked optional is only requested if you decide to use the feature behind it.
| Access | Type | Why Freshlytics needs it |
|---|---|---|
| Business Center & ad account list | Read | To show you which ad accounts you can connect, and to label data with the right account, currency and time zone. |
| Campaign, ad group and ad structure | Read | To build the hierarchy behind every report: objectives, budgets, bid strategies, schedules, targeting summary and delivery status. |
| Performance reporting | Read | The core of the product: spend, impressions, clicks, conversions, video engagement and cost metrics by day and by hour. |
| Creative assets metadata | Read | Creative IDs, names, thumbnails and formats, so fatigue analysis can be shown per creative and you can recognize the asset. |
| Campaign & ad group management | Write · optional | Only if you enable automated rules or approve a recommendation: budget changes, bid changes, pause and resume. |
Not requested at all: organic TikTok account access, follower or audience member lists, direct messages, comments, TikTok users' personal information, or any permission that would let Freshlytics post, comment or interact on TikTok.
Reliability
How the sync behaves in practice
The sync service is designed around TikTok's API limits rather than against them. If TikTok throttles or returns an error, Freshlytics backs off, retries with a longer interval and shows the real state of the data in the interface instead of silently displaying stale numbers.
- Active accounts refresh every 15 minutes; paused accounts fall back to hourly
- Incremental pulls for recent days, with a nightly reconciliation of the last 7 days for attribution updates
- Exponential backoff and per-account queues, so one heavy account never starves the others
- Every screen shows the last successful sync time and any account currently failing
- Token refresh is automatic; if authorization is revoked, syncing stops and you are told
Onboarding in the closed beta
We schedule a 30-minute call, connect your accounts together, set your targets and alert routing, and let the first full sync run. Historical data for the last 90 days is backfilled, then extended in the background.
Support
Beta customers get a shared channel with the team building the product. Questions about data, roadmap and integrations go to the people writing the code, not a ticket queue.
Ready to connect your accounts?
Request beta access and we will walk you through authorization, targets and alerts on a call.