How to connect TikTok to Google Sheets and keep your own history
Connect TikTok to Google Sheets to build the history the platform does not keep, and track each video as its numbers keep moving for weeks.
On this page
- What we'll cover
- Key takeaways
- History you have to keep yourself
- A post is not finished for weeks
- Building it with CodeWords
- A sheet shaped for the question
- Reporting a skewed distribution honestly
- What the API will and will not give you
- Joining it to everything else
- Tagging your own content
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
- Related reading
To connect TikTok to Google Sheets, build an automation that appends one row per video per day to a sheet, using the TikTok API with an authorised account. Append rows instead of overwriting them. TikTok analytics history is limited, so history you do not capture is history you cannot get back. A video's numbers also keep moving after posting, so a single snapshot describes an unfinished story.
A sheet that accumulates, with each video sampled repeatedly, serves you better than a sheet that reports what the platform says today.
What we'll cover
- History you have to keep yourself
- A post is not finished for weeks
- Building it with CodeWords
- A sheet shaped for the question
- Reporting a skewed distribution honestly
- What the API will and will not give you
- Joining it to everything else
- Tagging your own content
- Making it survive
- Limits worth knowing about
- What to set up first
- Frequently asked questions
Key takeaways
- Capture TikTok analytics daily and append rows, because history you do not capture cannot be recovered later.
- Use one row per video per sample, so latest performance, growth curves and cohort comparisons all come from the same sheet.
- Report the median and the spread instead of the average, because a few videos account for most of the reach.
- Add your own columns for format, topic and hook type at publication, since the platform cannot supply them.
- Move the history to a warehouse when the sheet nears its cell limit, and keep the sheet as the readable view.
History you have to keep yourself
Analytics retention is limited, so a question about last year may have no answer available. Check TikTok's current documentation for the exact window.
The metrics available depend on account type, and that changes what your history can contain.
Definitions can change, so a metric captured last year may not mean what the same metric means now. Record which metric names you captured.
Start capturing before you need it. Starting late leaves a permanent gap.
Capture daily, even when nobody is reading the sheet, because the value is entirely in the accumulation.
Keep the raw snapshots as well as any summary, since a summary computed on one definition cannot be recomputed on another.
A post is not finished for weeks
A TikTok post is not finished for weeks, and that makes single-snapshot reporting misleading.
Distribution is not strictly front-loaded. A video can keep gaining views after the first day.
Judging at twenty-four hours judges a fraction of the outcome, and it produces confident conclusions that the eventual numbers contradict.
Sample repeatedly per video, at a day, a week and a month, and keep each sample as its own row.
That shape answers the interesting question: not "how did this video do" but "how does our content typically develop", which tells you when it is safe to judge.
Report the growth curve, and you discover your own answer to how long to wait, which is more useful than any general advice.
Building it with CodeWords
CodeWords connects to 3,000+ integrations (CodeWords, 2026), and each connection is made once and reused.
- Open CodeWords and start a new automation.
- Describe what should happen in plain language to Cody, the automation builder: which account, which metrics, how often, and which sheet.
- Authorize the connection to TikTok with an account holding the necessary permissions, plus access to the target spreadsheet.
- Describe the exceptions: a metric unavailable for the account type, a video deleted since the last run, an expired token.
- Run it for a few days against a test sheet and check the numbers against the app before relying on it.
You describe the outcome; Cody builds it, connects it, and deploys it. The Free plan ($0) covers light use, with Pro at $39 per month and Business at $100 per month as usage grows (CodeWords pricing page, 2026); details are on the pricing page.
A sheet shaped for the question
One row per video per sample, with the video identifier, the capture date, the days since posting, and the metrics.
That grain supports every other view. Latest performance is a filter, the growth curve is a group, and a cohort comparison is a pivot.
Do not overwrite. A sheet holding only current values throws away exactly the information that makes this worth doing.
Keep the video identifier as text, or the spreadsheet will reformat it.
Record the posting date once, on a separate tab of video metadata, rather than repeating every attribute on every sample row.
Add your own columns for format, topic, whether it was a trend and who made it. These columns turn numbers into decisions, and the platform does not know any of them.
Reporting a skewed distribution honestly
Report TikTok performance with the median and the spread, because social performance is heavily skewed and averages handle that badly.
A small number of videos account for most of the reach. An average describes a video that does not exist.
Report the median and the spread, plus the count above some threshold, rather than the mean.
Compare against your own recent history, not against published benchmarks, which are not measurements of your account.
Normalise by age. Comparing a video posted yesterday against one from last month compares different points on a curve.
Say how many videos the figure covers, since a rate over five videos is noise and nothing on the chart says so.
Resist explaining why. The honest report says what happened; the temptation to attribute it produces confident narratives the next video disproves.
What the API will and will not give you
The TikTok API gives less than much published advice assumes.
Your own account's videos and their metrics are available with the right permissions and account type.
Aggregate account metrics, such as followers and profile views, are available the same way.
Other accounts' analytics are not available, so anything offering competitor reporting is collecting it another way.
Access requires approval per product, with its own review. The review can take longer than the build.
Granularity and history are limited, which is the reason to keep your own history.
Joining it to everything else
Joining the sheet to other data is where a spreadsheet earns its place beyond storage.
One row per video per sample, alongside your other channels in the same shape, gives a cross-platform view nobody assembles by hand.
Join to outcomes. Traffic, signups, or sales attributable to a campaign turn reach into something commercial.
Join to production effort where you track it. This shows what the expensive videos returned against the cheap ones.
Join to the content calendar, so planned against published is visible and gaps are obvious.
Keep the joins in the warehouse if the volume grows, with the sheet as the readable layer rather than the store.
Tagging your own content
Tag your own content with the columns the platform cannot supply, because those columns make the sheet worth having and somebody has to enter them.
Format, topic and hook type are the first three columns to add.
Agree the vocabulary once, a short list, because free text produces twenty spellings of the same category and none of them group.
Tag at publication, not retrospectively, since nobody goes back and does it for two hundred videos.
Record who made it where several people do, to learn from style differences and not to rank anybody.
Note whether it was a trend, since trend-driven performance and evergreen performance behave differently and averaging them together hides both.
Keep it to five columns. A tagging scheme with fifteen fields is one nobody completes, and a half-completed scheme is worse than a small complete one.
Making it survive
Append, never overwrite, since the accumulation is the point.
Key on video identifier plus capture date, so a re-run does not duplicate a sample.
Handle the deleted video by keeping its history and marking it, rather than removing rows.
Refresh tokens properly, because token expiry is where these integrations break after a few weeks.
Report the outcome. Videos sampled, rows appended, and anything that could not be fetched.
Limits worth knowing about
Rate limits apply per application and per account.
Analytics availability depends on account type, and personal accounts get less than business ones.
History is time-limited, which is why your own capture matters.
Access is granted per product after review, so confirm what you have before planning around a metric.
Google Sheets has a cell limit, which a daily sample of a large catalogue will reach. At that point the warehouse is the store and the sheet is the view.
What to set up first
A daily append of one row per video per capture, with the video identifier, capture date, days since posting, and the metrics available to your account. Start it before you need the history, because history cannot be captured retroactively.
Two habits make the difference. Append rather than overwrite, since a sheet of current values discards exactly what makes this worth building. And add your own columns for format and topic from the beginning, because those are what turn a table of numbers into a decision about what to make next.
Frequently asked questions
Why keep my own analytics history?
Keep your own TikTok analytics history because the platform's retention is limited, so a question about last year may have no answer. History you did not capture cannot be recovered, so start capturing early.
How long should I wait before judging a video?
Wait longer than the first day, and let your own data set the length. Sample each video repeatedly and read the growth curve. The answer is specific to your account and more reliable than any general rule.
What grain should the sheet use?
Use one row per video per sample. Latest performance becomes a filter, the growth curve a group, and cohort comparison a pivot. A sheet of current values answers only one of those questions and discards the rest.
Should I report the average?
No, report the median and the spread. Social performance is heavily skewed, so a small number of videos account for most of the reach, and the mean describes a video that does not exist.
Can I get competitor analytics?
No, the API does not give competitor analytics. It covers only the authorised account. Any tool that offers competitor reporting collects the data another way, with risks of its own.
Why does the integration stop working?
The cause is almost always token refresh, the standard failure in social integrations. Test the refresh path during setup instead of discovering the failure several weeks into production.
When does the sheet stop being the right store?
The sheet stops being the right store when a daily sample of your catalogue approaches the cell limit. At that point the warehouse holds the history and the sheet becomes the readable view on top of it.
What columns should I add that the platform cannot provide?
Add format, topic, hook type, whether the video was trend-driven, and who made it. The platform cannot provide any of these, and none exists unless somebody enters it at publication.
How do I stop the tagging scheme rotting?
Keep the scheme to about five fields with an agreed short vocabulary, and tag at publication. Free text produces many spellings of one category, and nobody goes back to tag hundreds of old videos.
Should the sheet hold other channels too?
Yes, keep other channels in the same shape. One row per post per sample across every channel gives a cross-platform view that nobody assembles consistently by hand, and the comparison is usually the point of the reporting.
Is a spreadsheet good enough for this?
Yes, a spreadsheet is good enough for a modest catalogue sampled daily, and anybody can open it. Watch the cell count, because a large catalogue sampled daily grows quickly. Then the history belongs in a warehouse, with the sheet as the view.