Case Study · FMCG & Retail Brands, Nepal (Agency Engagement)
Paid Social for FMCG and Retail Brands: 111,577 Profile Visits at Two Cents Each
$0.02
cost per visit
5,684,111
people reached
111,577
profile visits
$0.18
cost per 1000 reached
2.18x
retention after hook spread
none in dataset
revenue or conversion figures
!The Challenge
I worked as a creative strategist at a Nepali marketing and production agency, on paid social for large domestic FMCG, retail and consumer brands. The panels that survive show the size of the media: one carries $114.60 against 1,659,478 people reached, another $30.00 against 569,875. With budgets that small the creative was the part I could actually change, and reading the delivery report correctly was the other part. Both turned out to be harder than they look, and the second is where most of the transferable lesson lives — Ads Manager prints a "Cost per result" box that does not carry the same denominator on every panel, and a comparison drawn from it without reconciling first is a fabrication with a decimal point in it.
⚙The Strategy
The work was creative strategy on brand campaigns: deciding what the video said, how it opened, how long it held, and then reading the delivery data back afterwards. The reporting discipline mattered as much as the creative one. Meta's Ads Manager prints a box labelled "Cost per result" that does not carry the same denominator across these six panels, and it does not print the denominator it used — so the first job on an account like this is to reconcile every panel by hand before drawing a conclusion from it. The second job is to stop treating hook rate as the headline number. Across the three video panels here, hook rate spread 1.22x between creatives while retention after the hook spread 2.18x. That is a direction from three cases rather than a law, but it points editing effort at the middle of a cut rather than at the first frame.
✓The Results
Six "Performance overview" panels survive from the account. Read one at a time, they are media-efficiency results at national scale on small budgets: one panel shows $2,157.09 buying 111,577 Instagram profile visits, roughly two cents each; another shows $1,043.54 buying 5,684,111 people reached at $0.18 per thousand; a third shows $114.60 buying 1,659,478 people reached and 2,478,119 video plays. Those figures come from different panels and are not additive — the larger panels are almost certainly account-level aggregates that already contain the smaller ones. Every number here is reach, traffic, video or cost. There is no revenue, ROAS, conversion or lead figure anywhere in this data, so none is claimed.
The role, stated plainly
I was a creative strategist at a marketing and production agency in Nepal, working on paid social for large domestic FMCG, retail and consumer brands. Brand campaigns, agency side. Not my clients — the agency's clients, and my job inside that was the creative: what the video said, how it opened, how it was cut, and what the delivery numbers said about all three afterwards.
What I keep from that period is six Meta Ads Manager "Performance overview" panels. No panel names a brand, so nothing below is attached to one. Categories only. No panel shows a per-campaign date range either, which rules out anything about pacing or cost per day.
This is the paid-media half of the same instinct the organic work runs on: get the thing in front of people cheaply, then find out what held them.
The six panels
| Panel | Objective metric | Value | "Cost per result" | Spent | Video plays | Avg play | Hook | Hold |
|---|---|---|---|---|---|---|---|---|
| A | Reach | 5,684,111 | $0.18 | $1,043.54 | — | — | — | — |
| B | Reach | 569,875 | $0.05 | $30.00 | — | — | — | — |
| C | IG profile visits | 111,577 | $0.02 | $2,157.09 | — | — | — | — |
| D | IG profile visits | 11,041 | $0.01 | $127.87 | 545,602 | 00:07 | 23% | 1.12% |
| E | IG profile visits | 13,880 | $0.02 | $213.82 | 1,001,830 | 00:10 | 28% | 2.97% |
| F | Reach | 1,659,478 | $0.07 | $114.60 | 2,478,119 | 00:05 | 24% | 1.62% |
These panels are very likely not additive. Every panel prints a delivery chart, and all six carry the same x-axis: Aug 2022 to Sep 2025. That axis is not a campaign date range and no panel prints a campaign start or end, so it dates nothing. What differs is the shape inside it. Panel C's chart shows many spikes spread across the axis; panels D and E each show a single narrow spike. Reading those shapes, C looks like an account-level aggregate that already contains D and E, and the same relationship probably holds between A, B and F. That is an inference from chart shape rather than a hierarchy Meta reports, and it is the only timing-adjacent thing in the panels: it yields no durations, no pacing and no cost per day. If it is right, adding the panels up would double-count, so I do not. Each panel is quotable standing alone; the set is not a total.
The campaigns had different objectives. Three optimised for reach, three for Instagram profile visits. Those two groups were bought against different results, and their cost boxes count different things — my own read of these panels, not a documented account of how the auction works — so any creative-versus-creative comparison that crosses the line is confounded: if the cost moved and the thing being bought also moved, the creative is not what I measured. I cannot tell you from these panels who each campaign was delivered to — no panel shows an audience or delivery breakdown.
The unit trap in "Cost per result"
Ads Manager prints one box labelled "Cost per result". Across these six panels it does not hold one unit. Reconciling every panel by hand is how I found out:
| Panel | Objective | Arithmetic | Displayed |
|---|---|---|---|
| A | Reach | $1,043.54 ÷ (5,684,111/1000) = $0.1836 | $0.18 |
| B | Reach | $30.00 ÷ (569,875/1000) = $0.0526 | $0.05 |
| F | Reach | $114.60 ÷ (1,659,478/1000) = $0.0691 | $0.07 |
| C | Profile visits | $2,157.09 ÷ 111,577 = $0.0193 | $0.02 |
| D | Profile visits | $127.87 ÷ 11,041 = $0.0116 | $0.01 |
| E | Profile visits | $213.82 ÷ 13,880 = $0.0154 | $0.02 |
All six reconcile, but only under one reading: the reach panels as cost per thousand people reached, the profile-visit panels as cost per single visit. The per-person reading of the three reach panels gives $0.000184, $0.000053 and $0.000069, and all three would print as $0.00, which is not what the panels show.
Here is the part to be careful about, because it is the load-bearing claim in this piece. That is a reconciliation, not documented platform behaviour. I am inferring the denominator from what the box printed, because it is the only divisor that closes the arithmetic on all six panels at once. I did not find a Meta help page documenting that cost per result switches denominator with the objective, and Meta publishes the per-thousand figure under a separately named metric of its own (Cost per 1,000 Meta Accounts reached). So take this as what it is: on these six panels, one label carried two denominators and did not say which. Whether that is documented somewhere I have not read, I cannot tell you — and if you can show me the page, I will correct this.
What follows either way is the same. Panel E's $0.02 and panel F's $0.07 are separated by a factor of a thousand in units. E is two cents for one person who visited a profile. F is seven cents for a thousand people reached. Same-shaped box, same-looking label, and putting the two side by side as if they were the same currency is the easiest mistake to make with this account.
I watched a well-designed deck build its headline on exactly that comparison. It computed 1 − (0.02 / 0.07) = 0.714 and called it a "71% discount": a ratio dressed as a subtraction, taken between two figures whose units differ by a factor of 1,000. Fluent, confident, wrong. That failure mode — output quality and output accuracy coming apart — is why the rubric I use for AI research output gives source traceability its joint-top weight, tied with handling contradictions, as the two failures that make a research output worse than no research — scored out in full here.
The habit worth stealing: before quoting a cost-per-result to anyone, divide spend by the result count yourself and check it against the box. Thirty seconds, and it is the difference between a finding and a fabrication.
Hook rate barely moves. What comes after it moves more.
Three panels carry video metrics, so this is n=3 — a direction, not a law. A small sample reads as more confident than it has earned, which is the same discipline problem I wrote about in marketing mix modeling on a small budget: every extra parameter is bought with data you do not have.
| Panel | Hook | Hold | Avg play | Video plays | Spend | Hold ÷ hook | $/1,000 plays |
|---|---|---|---|---|---|---|---|
| D | 23% | 1.12% | 00:07 | 545,602 | $127.87 | 4.87% | $0.234 |
| E | 28% | 2.97% | 00:10 | 1,001,830 | $213.82 | 10.61% | $0.213 |
| F | 24% | 1.62% | 00:05 | 2,478,119 | $114.60 | 6.75% | $0.046 |
Hook rate spans 23% to 28%. That is a spread of 1.22x, and 28% against 23% is 21.7% apart — more than a fifth, not inside one. Hold rate spans 1.12% to 2.97%, a spread of 2.65x.
That 2.65x is the number to handle carefully, and I got it wrong the first time I used it. In this account both rates are quoted against impressions, so hold rate already contains the hook stage: a creative that stops more thumbs starts the retention stage with more thumbs to keep. The two spreads multiply — 1.2174 × 2.1783 ≈ 2.6518 — so the hold spread is the hook spread times the spread in what happens after the hook. Splitting them:
| Panel | Hook rate | Hold rate | Retention given hook |
|---|---|---|---|
| D | 23% | 1.12% | 4.87% |
| E | 28% | 2.97% | 10.61% |
| F | 24% | 1.62% | 6.75% |
Stage one spreads 1.22x. Stage two, conditional on the hook having worked, spreads 2.18x (10.61 ÷ 4.87). That is the honest stage-to-stage comparison, and it still says the second stage discriminated about 1.8x more than the first. Quoting the 2.65x as "the hold stage moving" would double-count the hook stage sitting inside it.
What I take from that is an editing priority, inferred from three creatives in one account rather than reported as how the category works: the opening frame landed inside a narrow band, and what came after it did not. I have no data here on how editing effort was allocated, in this agency or anywhere else, so I will not claim the middle is under-edited. I will only claim it is where these three separated.
And here is the case that spoils the tidy version of that story. Panel D has a longer average play time than panel F — 00:07 against 00:05 — but a lower hold rate: 1.12% against 1.62%. Average play time is total watch time, replays included, divided by the number of video plays rather than by people (Meta Business Help Centre); hold rate is a share of everyone who saw an impression. A short video many people finish and a longer video a few people sit through can produce the opposite ordering. If I only had panels E and F, the story would be clean. Panel D is in the data, so the clean story does not get told.
On definitions, worth verifying against Meta rather than convention: a 3-second video play counts a play of at least three seconds, or nearly the full length for videos shorter than that (Meta Business Help Centre), and a ThruPlay counts a video played to completion or for at least 15 seconds, where completion means at least 97% of the runtime (About ThruPlay). Hook rate and hold rate are not Meta headline metrics; they are ratios computed on top of those two counts. In this account both were quoted against impressions — hook rate as 3-second plays ÷ impressions, hold rate as ThruPlays ÷ impressions — which is the only reason hold ÷ hook gives retention conditional on the hook. Check what your own reporting tool is dividing by before you compare one account to another. If the denominators differ, that last column does not mean the same thing.
What goes into a short cut, as opposed to what the delivery report says about it afterwards, is a separate argument: short-form video strategy for LinkedIn and YouTube Shorts.
Judge each campaign on its own objective
The deck I mentioned declared panel F the loser. It did that on panel E's metric, which is not what panel F was buying.
So judge F on its own objective — and be honest about where that lands it. Ranked on cost per thousand people reached, the three reach panels go B at $0.0526, F at $0.0691, A at $0.1836. F is the middle one of three: it cost 31% more per thousand reached than panel B, which did it on a $30.00 budget. F is not the standout of this set on its own objective, and I am not going to claim it is.
F does carry one striking number. $114.60 bought 2,478,119 video plays, which is $0.046 per thousand plays against panel E's $0.213 — a 4.6x gap. Two caveats that gap needs. Video plays are not F's objective metric; reach is, and no campaign is vindicated on its objective by a metric it was not optimised for. And E and F ran on different objectives, so the comparison crosses the confound flagged above. It is a plays-cost comparison, explicitly cross-objective, and nothing more.
E was buying profile visits and got them at two cents each. F was buying reach and got it at seven cents per thousand. Neither number scores the other. Scoring a reach campaign with a traffic campaign's yardstick is the units trap wearing different clothes.
What this data does not show
Worth being blunt about, because the gap between what these panels prove and what a deck can imply is large.
- —No revenue, no ROAS, no conversions, no leads, no sales. Reach, profile visits, video plays and cost. That is the entire measurement surface. Whatever these campaigns did commercially is not in this data, and I will not infer it.
- —No brand attached to any number. Not one panel identifies whose campaign it was.
- —No totals. The panels very likely overlap, so I do not sum them, and neither should anyone quoting them.
- —No retention curve. There is no second-by-second drop-off data in any panel. Average play time is one number, not a curve. Any "drop-off cliff" chart drawn from this dataset is invented, and no claim in this piece locates a moment at a specific second.
- —No campaign durations. No panel shows a per-campaign date range, so pacing and cost-per-day are unknowable here. The delivery charts all share one Aug 2022–Sep 2025 axis and their shapes differ, but a shape is not a date range.
- —No delivery or quality diagnostics. No audience breakdown, no quality ranking, no relevance score. Nothing here explains why a price was what it was.
- —No cross-objective creative comparison. Different objectives, different auctions, confounded.
- —No claim that these rates transfer. These are Nepali-market auction prices from an unstated period. Nothing here says what the same creative would cost in another auction.
Questions I get about this data
Can I use these costs as benchmarks? No. They are one account, one market, one unstated period. The auction that produced $0.05 per thousand reached is not the auction you are bidding into, and no panel dates a campaign — the delivery charts share one Aug 2022–Sep 2025 axis, and nothing says where inside it a given campaign sat.
Why not add the six panels together? Because they very likely overlap. Reading the delivery charts, panel C looks like an account-level aggregate already containing D and E — my inference from chart shape, not something Meta labels — and if it holds, a total would count the same spend and the same people twice. Six separately quotable panels is what this data is.
Which campaign performed best? The question has no answer across the whole set, because three were buying reach and three were buying profile visits. Within the reach panels, B was cheapest at $0.0526 per thousand reached. Within the profile-visit panels, D was cheapest at $0.0116 per visit. Across the two groups, nothing is comparable.
Do high hook rates cause high hold rates? On these three they ranked in the same order — D, then F, then E, on both. The raw hold spread double-counts the hook for a separate reason: in this account both rates are quoted against impressions, so hold already contains the hook stage whatever the ranking. The stage-conditional figures rank the same way. Three cases cannot separate "the hook feeds the hold" from "these creatives were simply good at both".
What actually transferred
Three things, and none of them are the cost figures.
Cheap national reach did not need a big budget. Panel B shows $30.00 against 569,875 people reached; panel F shows $114.60 against 1,659,478. What I cannot tell you is why. These panels carry no quality ranking, no relevance diagnostic and no audience data, so "the auction liked the asset" is a story I would like to tell and cannot support from this. What the data supports is narrower and still useful: the price existed.
Read the report before you read the result. Every dashboard label compresses something, and compressions lose units. Reconciling a metric by hand once is cheaper than being confidently wrong in front of a client. The same discipline runs the other way on my own business, where the failure is watching too many metrics rather than misreading one — the short list I actually track.
Edit for what comes after the hook. On these three creatives the separation showed up after the hook stage rather than at it — at the ThruPlay threshold, not the three-second one — with exactly one counterexample in three cases saying it is more complicated than that. Which is the appropriate amount of certainty for n=3.
External Resources
Research & Benchmarks Behind These Results
Content Marketing Institute
Annual content marketing ROI benchmarks and channel performance data
LinkedIn B2B Marketing
B2B audience data, content performance research, and buyer journey insights
HubSpot State of Marketing
Annual benchmark survey of 1,400+ marketers on channel ROI and AI adoption
Demand Gen Report
B2B buyer behavior and content-to-pipeline attribution research
Get the AI Marketing Prompt Pack
30+ tested prompts for images, captions, video scripts, keywords, and full content systems, delivered instantly.
Browse all free guides →Ready for similar results?
Let's talk about your situation — no pitch, just a conversation.
Loading calendar…