Open any of the guides ranking for this question and you will get a list. Reach, impressions, engagement rate, click-through rate, conversion rate, cost per acquisition, earned media value. Then a formula, usually revenue over spend, and a suggestion to build a dashboard. The lists are fine. I have no argument with any individual metric on them.
The argument is that none of it fails at the metric layer. It fails one step earlier, at the question of which posts go into the report in the first place. Every guide on this topic quietly assumes your creator program is a known set of posts: the people you paid, the links you handed out, the campaign you named in a spreadsheet. So the setup they describe measures that set very carefully, and never asks what is outside it.
In our tracking index the set outside it is the majority of the program. This piece is the operating setup I would actually build, in the order I would build it. If you want the argument for why the resulting number still will not look like the industry average, that is the companion piece on ROI; this one is the plumbing.
Step 1: Make the post the unit, not the campaign
Campaign-level reporting is where measurement goes to die. A campaign is an accounting container that holds a dozen creators and forty posts, and averaging across it destroys exactly the information you needed.
Creator results are not clustered around a middle. One post in a round routinely does more than the rest combined, so a campaign average tells you nothing about whether to run the campaign again, and everything about how many mediocre posts were in it. The unit that survives this is the individual post.
Everything downstream should key on a post ID. Codes, links, spend, rights, revenue. If your reporting grain is the campaign or even the creator, you cannot answer the only question that changes next quarter's budget: which post worked, and can we buy more of that.
Step 2: Build the roster from the posts that exist
Here is the step every guide skips, and it is the one that decides whether the rest of your setup means anything.
There are two ways a post can enter your report. Either you already knew about the creator and went looking at their profile, or you found the post itself by watching for your product being talked about. The first route only ever returns the people on your list. The second returns everyone.
Found by listening
5,06867.8%
Surfaced by scanning keywords and hashtags. Nobody reported these.
2 of the 5,068 carried an @-mention
Found on a watched profile
2,41232.2%
Creators already on a list: contracted, gifted, or added by hand.
The only half a roster-built report can see
Two thirds of the posts in our index arrived through the second route, and of those 5,068 posts, two carried an @-mention. Not two percent. Two posts.
That number is the whole argument. If your measurement setup is fed by mentions, tagged notifications, or a roster of creators you have paid, then for that population you would have seen two posts out of five thousand. Everything else, all the views and all the orders behind them, would have been invisible to your report and would have quietly landed in the bucket labeled direct or organic.
The measurable universe is not the campaign, it is the category. In practice this means running keyword and hashtag scans for your product and brand names alongside whatever roster you keep, and treating anything they surface as a program post whether or not you commissioned it. Creator discovery and listening are not separate disciplines from measurement; they are the input stage of it.
There is a version of this argument that people accept on post count and then ignore on reach, so it is worth being explicit that it gets worse, not better, when you weight by views.
511M
views in the slice
2,123 posts by creators between 1k and 250k followers
10.2%
of posts tagged the brand
216 of 2,123 carried an @-mention in the caption
2.5%
of the reach was tagged
Tagged posts hold 12.7M of the 511M views
Tagged posts are 10.2% of the posts in that slice and 2.5% of the reach. The reason is simple once you see it: the biggest posts are usually the ones nobody arranged. A creator who genuinely likes something and posts about it unprompted has no reason to tag anyone, and no brief telling them to.
Step 3: Instrument at the post, and run three signals
Once you know which posts exist, the job is making each one able to carry a signal back. Three of them are worth running, and the reason to run all three is that they fail in different places.
Discount code
- One code per post, not per creator, or you cannot tell the posts apart
- Survives screenshots, reshares and a platform stripping the link
- Misses everyone who forgets to type it at checkout
Tracked link
- A unique destination per post, carrying its own click id
- Catches the buyer who never types anything at checkout
- Struggles with in-app browsers, long sessions and cross-device buying
Checkout question
- "How did you hear about us?" with creator names as options
- The only signal that catches word of mouth and screenshot buying
- Self-reported, so read it as directional rather than exact
The operating rules that matter here:
One code per post, not one per creator. A creator who posts four times over a quarter with one code gives you a creator-level number and nothing finer. Codes are cheap. Mint them per post.
Give the code a real discount. A code that saves nothing is a code nobody types, which turns your strongest signal into a rounding error. Ten to fifteen percent buys you measurement, and the discount is a measurement cost, so put it in the denominator with everything else.
Set the checkout question up before you need it. "How did you hear about us?" with a free-text or creator-name option is the only instrument that catches the buyer who saw a video, remembered nothing, and searched your brand three days later. It is self-reported and imperfect, and it is still the best read you will get on the untracked half.
For the posts you did not commission, none of this applies, and that is fine. You cannot hand a code to someone you have not met. What you can do is see the post, count its reach, and reach out with a code for the next one, which is how the untracked half becomes the tracked half over a couple of quarters.
Step 4: Keep attributed, manual and unmeasured apart
The most common reporting mistake after the roster problem is collapsing three different kinds of number into one column.
Last 30 days · by post
5 of 61 posts shown
- $3,180—
@maya.glow
MAYA15 · tracked link
- —$740
@sam.reviews
No code, no link
- $610—
@dana.cooks
DANA10
- $0—
@theo.fit
Tracked link only
- ——
@nia.styles
No code, no link
A post with a code and no orders is a zero and should read as a zero. A post with no code and no link is a blank, and a blank is not a zero, it is a hole in your instrumentation. Reporting them as the same thing makes your program look worse than it is and hides the specific fix.
So keep three columns:
| Column | What goes in it | How to use it |
|---|---|---|
| Attributed | Orders resolved to a post by code, link or checkout answer | This is the number you defend |
| Manual | Revenue you assigned by hand: a wholesale order, a call, a survey answer you trust | Useful, but never merge it into attributed |
| Unmeasured | Posts you can see but cannot connect to revenue | The size of your blind spot, reported openly |
Report the unmeasured column out loud. A creator report that shows 61 posts, 44 of them attributable, and says so, is far more credible in a budget conversation than one that shows 44 posts and implies that is all of them. It also converts the argument from "is influencer marketing worth it" into "how do we get more of the 17 instrumented," which is a question with an answer.
Alongside the revenue columns, carry three program-level numbers week to week: post rate (posts detected divided by creators engaged), cost per post (everything you spent divided by posts that ran) and revenue per post with the zeros left in. Those three catch problems the revenue total hides, like a round where the content was cheap and nobody posted.
Step 5: Choose a window, then leave it alone
Two decisions, and then stop fiddling with them.
Attribution window: 14 days for a code or link, 30 if your product has a considered purchase. Creator content does not convert like a paid ad. Somebody sees a video, thinks about it, buys the following weekend. A 7-day window borrowed from performance marketing systematically undercounts creator work, and a 90-day window credits creators for everything your email program did.
Reporting cadence: weekly for operations, quarterly for judgment. The weekly read is for spotting the post that is taking off while you can still put budget behind it, which is the highest-return move available to a creator program. The quarterly read is the one you use to decide whether the program works, because posts keep accumulating views for months and anything shorter is judging a race at the first corner.
Do not re-cut the window when a number disappoints. Every ROI figure I have ever been shown that looked implausibly good came from a window someone had adjusted after seeing the result.
Step 6: Run it as a loop, not a report
The setup only pays off if the output changes what you do next week. Three loops are worth wiring up on day one:
- Winner detected, budget follows. A post outperforming its creator's median by a wide margin is a buy signal. Ask for permission to boost it, and put spend behind proven creative rather than guessing. That is the cheapest reach available to most brands and it needs the weekly read to catch it in time.
- Untracked poster becomes a tracked one. Anyone who posted about you unprompted goes on the outreach list with a code attached. They already like the product, which puts them ahead of any cold list you could buy.
- Repeat poster gets a real relationship. Somebody posting about you three times without being asked is the closest thing to a free ambassador program, and most brands never notice because nobody was watching for it.
None of these are reporting steps. They are the reason to measure at all, and if your setup produces a deck that nobody acts on, the measurement is a cost rather than an investment.
Doing this without software
You do not need a platform to start, and I would rather you start with a spreadsheet than wait a quarter for a purchase order.
One sheet, one row per post. Columns: post URL, creator handle, date posted, views, code, link, attributed revenue, manual revenue, notes. Fill it in weekly. Pull views by hand for the first month. Search your brand and product name on each platform once a week and add anything you find that you did not commission.
The manual version breaks in a predictable place, which is the searching. Filling in numbers for posts you know about takes twenty minutes a week. Finding the posts you do not know about is unbounded, gets harder as the program grows, and is the exact step that decides whether the rest of the sheet is honest. That is the point at which software built around the post index earns its keep, because the finding runs daily and the orders attach themselves to the row instead of being typed in.
The short version
- Measure at the post. Campaign averages destroy the information you needed.
- Build the roster from posts that exist, not creators you paid. Two thirds of the posts in our index were found by scanning, and 2 of those 5,068 tagged the brand.
- Weight it by reach and the gap widens: 10.2% of posts in the 1k to 250k slice tagged the brand, holding 2.5% of the views.
- Instrument each post with a per-post code, a per-post link and a checkout question. They fail in different places, which is why you run all three.
- Keep attributed, manual and unmeasured in separate columns, and report the unmeasured one out loud.
- Pick a 14 to 30 day window and a weekly cadence, then stop adjusting them.
- Wire the output to three actions: boost the winner, recruit the untracked poster, formalize the repeat one.
Nora EllisUGCSignal
Nora writes about creator programs and the numbers behind them, drawing on the posts, views, and revenue UGCSignal tracks every day.
