BKE — BACH KHOA EDU
PERFORMANCE MARKETING · AUG 5, 2026 · DAY 21/90

Where the money goes, how much comes back, what to do next

Those three questions are the whole document. Every number is pulled straight from the ad account as of Aug 5 — from spend per ad set to the model's break-even point.

PREPARED BY
Ho Vuong Quoc Thai
DATA
Pulled straight from the account · to Aug 5, 2026
CROSS-CHECKED AGAINST
P&L, first 5 months of 2026
01

Three points before the details

Three numbers. Read these three and you know where things stand.
285MILLION VND

The problem

Since Jul 5 the account has spent VND 285M. The budget is still running steadily at about VND 9M a day.

29/32 DAYS

The consequence

Days with zero recorded revenue. Without numbers, deciding which ad sets to cut or keep is hard to do with confidence.

Aug 11FIX DEADLINE

The way forward

The deadline to fix measurement and lock in a new baseline. This week, cut about VND 28M/month, based on cost per result.

Fix measurement first, then cut and reallocate. Do it the other way round and you can easily cut an ad set that is actually working.

02

Why taking in 105 on 100 spent is still a loss

ROAS measures what customers pay, not what the company keeps. Those are two different things.

Selling a VND 2.5M course does not mean keeping VND 2.5M. Ad spend has to fit inside what is left over.

Every dong of revenue splits into two parts

Cost of goods — 46.9%
What the company keeps — 53.1%
Instructors, operations, materials, printing Ad spend has to fit inside this

Spend VND 100M on ads: what came back last month

Revenue paid by customersVND 105M
Minus cost of goods on that revenue− VND 49M
What the company actually keepsVND 56M
Amount spent on adsVND 100M
Result− VND 44M

Taking in 105 looks like a profit on 100 spent. But 105 is what customers paid, not what the company keeps. Applied to the most recent month we can still measure: VND 293M spent, VND 308.6M revenue, VND 163.9M kept — a loss of VND 129.1M in 30 days.

Three thresholds

1.05WE ARE HERE

Losing money

Put in 1 dong, get 0.56 back. A 44% loss.

1.88MARGINAL BREAK-EVEN

No loss, no profit

Bring in VND 188M and you keep exactly VND 100M, just enough to pay for the ads. This is the line for deciding whether to cut or keep each ad set.

3.15REAL PROFIT

The channel finally pays for itself

Add the 21.4% overhead. Only at VND 315M in revenue does this channel actually pay for itself.

One point to confirm before Aug 11

VND 308.6M is gross sales, before discounts and returns. Company-wide deductions are running at 17.6%. If that rate also applies to ad-driven orders, real revenue drops to VND 254.3M — real ROAS is 0.87 and the break-even line moves up to 2.28. This cannot be locked in yet because it is unclear whether the deductions fall on the online channel or only on books and offline events. If they do apply, every ROAS target in this document has to rise by about 21%, and the situation is worse than described above.

03

The break-even waterline

Each bar is one ad set. The wider the bar, the more it spent; the taller, the better it performed. The red line is break-even.

Only two bars rise above the red line. Those two ad sets take just 6.5% of the budget but bring in 58% of revenue. Figures are from the most recent month we can still measure.
BREAK-EVEN 1.88
11.3
2.5
Above break-even — 6.5% of budget (VND 18.9M)
Below break-even — 93.5% of budget (VND 274.1M)
The two green bars are two ad sets running the same Physiognomy (Nhân Tướng Học) creative set
04

Where the money flows

Split by optimization goal. Where the most money goes is not where the most orders come from.

Pixel Registration spent VND 84.9M and produced only 4 orders. This is the first thing to fix.
Optimization goalSpendResultsOrdersROAS
Lead form90.0M606342.00
Purchase8.9M13131.57
Messaging107.4M1,059891.04
Pixel Registration84.9M96940.04
Whole account293.0M2,6471401.05

This goal produces lots of leads but almost no orders. Either measurement is broken, or the leads have no intent to buy. By Aug 11 we will know which.

Company-wide income statement for the first 5 months of 2026
Business report for the first 5 months of 2026. The 53.1% gross margin is the basis for the 1.88 break-even line.
05

Three things to correct before acting

The numbers were broken down again by ad set and by ad. These three should be corrected first, before rolling anything out.

All three items below were re-measured directly in the account on Aug 5, not read from an export. Items 01 and 03 match; the quality ranking table does not — the old numbers no longer hold. Data runs through the end of Aug 4 (Aug 5 is still in progress): 65.2% of spend for Jul 15–Aug 4 sits in ad sets or campaigns that are now turned off, worse than the 62.5% read from the old file; only 34.8% of the budget still belongs to active ad sets.
Same Mass filter, Jul 15 to Aug 5, 2026: VND 71,510,403 spent, 3 purchases, VND 0 conversion value, no ROAS
Jul 15–Aug 5, captured the same day, same filter, same columns. Same ad sets: VND 71.5M spend · 3 purchases · VND 0 conversion value · the ROAS column is completely empty. The winning ad set “HN, HCM - Mass” spent VND 6.4M and recorded VND 0. Put the two screenshots side by side and it is clear: the ads did not get worse, Meta simply stopped recording any revenue at all.
Meta quality rankingSpendRevenueAdsROAS
Average133.7M26.7M280.20
Below average54.8M71.6M101.31
Above average23.5M168.6M37.17
Not ranked81.0M41.7M640.52

The three “Above average” ads take 8.0% of spend but bring in 54.6% of revenue. These figures were re-measured directly in the account on Aug 5 — far off from the version read from the Jul 15 file (which showed 178.8M / 73.6M / 32.7M / 7.9M). Meta recalculates quality rankings over time: ads that stop delivering drop back to “not ranked”. That is why this ranking must not be used as the basis for cuts — it changes depending on the day you open the report.

01

The winning ad set was named wrong

Highest risk
The account has three ad sets with nearly identical names. The strongest one is “HN, HCM - Mass”. The other two are much weaker. Scaling budget means naming the right one.
Get the name wrong and you pour money into an ad set 4x weaker
02

Do not cut based on Meta's quality score

Misses VND 133.7M
The plan proposed turning off ads Meta rated “Below average”. Re-measured on Aug 5: that group has ROAS 1.31 — 6.5x higher than the “Average” group, which is draining VND 133.7M at ROAS 0.20.
Cut by cost per result
03

Do not scale down the Engagement campaign evenly

Loses the branch that makes money
Breaking the VND 73.9M cluster (ROAS 1.36) down by each ad set's optimization goal: messaging 1.64 (52.6M → 86.3M) · purchase 1.52 (9.2M → 13.9M) · lead_grouped 0.00 (12.2M → VND 0). An even 50% cut would halve the branch bringing in VND 86.3M, while the VND 0 branch keeps running.
Handle each branch separately
06

What to cut · what to keep · where to put the money

To be done in the week of Aug 4–10. Figures re-checked in the account on Aug 5.

This cycle does not open TikTok or Google. The channel already running has not yet passed break-even, so now is not the time to add more.

Cut now

AUG 5 · REAL SAVINGS ~VND 26M/MONTH
  • Ho Chi Minh (40km) - 25.45 - Psychology1.3M · 1,334k/result
  • ck1_HCM_vietnn_camid - Copy3.9M · 229k/result
  • ck1_ HCM_vietnn_camid - Copy4.9M · 225k/result
  • ck1_ HN_vietnn_camid - Copy 32.9M · 223k/result
  • ck1_HCM_vietnn_camid - Copy 22.4M · 218k/result
  • ck1_TQ_vietnn_camid - Copy 33.7M · 206k/result

Measured Jul 15–Aug 4, ad sets still running, cost per result above VND 200,000. Total VND 18.2M over 21 days ≈ VND 26M/month. The first row is a newly launched ad set in the THNT_HN_05.08 campaign: VND 1.33M spent for exactly 1 result — 22x worse than the cheapest ad set, so it goes first. The old cut list (12 ad sets at VND 0, the Summer Camp cluster at VND 52.1M) was already turned off earlier — noted here, but it is not extra money freed up. Cuts are based on cost per result, not ROAS, because this period has no ROAS to cut by.

Keep until Aug 11

CHEAP CPL · MEASUREMENT BROKEN
  • Banner 3 - Seeing through the inner selfCPL VND 64,965
  • Caption C. Linh - Lost at 30CPL VND 44,294
  • Banner 1 - Decoding the inner selfCPL VND 65,755

These three creatives have the cheapest cost per lead in the account, so they stay a little longer. If they are still at VND 0 on Aug 11, cut them, no extensions.

Scale up

VND 15M → 45M/MONTH OVER 4 WEEKS
  • Physiognomy Banner 01ROAS 11.65
  • Physiognomy Banner 02ROAS 10.22
  • Video H2 - 01ROAS 5.10
  • Video 2024 - 01ROAS 2.75
  • Retargeting 3,019 peoplecurrently ≈ VND 0

Duplicate into new regions first, raise budget second. Increase 20% every 48 hours; stop as soon as performance drops.

Physiognomy Banner 01
The best creative in the account. Cream background, handwritten type, instructor portrait looking straight at the camera.
Physiognomy Banner 02
The second-best creative. These two are for duplicating, not for replacing.
A banner from the Summer Camp - Anh Thien An cluster
Placed alongside to show the gap: this cluster spent VND 52.1M and brought back VND 1.49M. Keep one creative to retest later.
07

Five actions, ranked by money returned

Ranked by money returned, not by how easy they are.

Fixing measurement comes first. Without it, even after the other four are done, nobody will know the result.
01

Fix measurement

CAPI · UTM · Messenger ref · source field in the CRM · Offline Conversions
For three weeks not a single dong of revenue has been attributed to the ads. Without fixing this, the four items below are all guesswork.
Prerequisite for everything else
02

Cut losses

6 active ad sets · cost per result above VND 200,000
Six active ad sets have a cost per result above VND 200,000, spending VND 20.3M in 22 days. One of them spent VND 2M for exactly 2 results.
+VND 26M/month
03

Put money into the proven cluster

Physiognomy × Mass · VND 15M → 45M/month
The only cluster above break-even, and also the one with the cheapest cost per result right now: VND 61,940.
Biggest source of revenue growth
04

Turn on retargeting

3,019 people messaged but have not bought
Three thousand people have messaged but not bought. The cost of acquiring them is already paid; reaching them again costs almost nothing extra.
Cheapest ROAS · signal in 7 days
05

Rebuild the structure and 7 automated rules

Standard naming · kill · scale · spend cap
Free-form naming led to three ad sets with nearly identical names, which makes mistakes very easy. A consistent naming convention prevents that.
Automatic loss-cutting 24/7

Ad work I handle myself

8–10 HRS/WEEK · WEEKS 1–2: 12–15 HRS
  • Account operationsCut losing ad sets, build 5 campaigns, duplicate by region, adjust budgets
  • 7 automated rulesEarly kill, CPL kill, ROAS kill, budget decrease, scale, spend cap, frequency
  • Measurement that needs no developerDynamic UTMs, Messenger ref, promo codes per ad set
  • 6 custom audiencesBuyers, LLA 1%, MsgNoBuy, LPView, Video75, Exclude
  • Creative briefs and deciding which creatives runCommitted to 2 new variants every week
  • Reporting and Meta ↔ CRM reconciliationDaily tracker, weekly review, Gate every two weeks

Access needed

I CAN DO THIS IF GRANTED
  • Set up the Conversions APINeeds 1 developer, 4–6 hours
  • Fix the pixel on the landing pageNeeds website edit access
  • A/B test the landing pageNeeds permission to duplicate pages
  • Admin on the ad account and Business ManagerDue Aug 5

Needs coordination

AFFECTS RESULTS · OUTSIDE AD SCOPE
  • Closing script for 3,019 conversations that have not boughtThe current close rate is the ceiling of the whole model
  • SLA: reply to messages within 5 minutesThe cheapest way to raise the close rate
  • Funnel product at VND 299–690kMost interested people are not yet at the VND 2.5M course price point
  • 17.6% revenue deductionsVND 2.88B in 5 months, more than the entire ad budget
  • Producing 2 creatives every weekBriefs are ready; someone needs to build them
  • Price and cost of goods for the Zoom courseWithout cost of goods, every ROAS target is only an estimate
09

KPI commitments, in two phases

The 1.05 baseline no longer exists. Meta's revenue tracking has been dead since Jul 5 and still has not come back as of today: from Jul 5 to Aug 5 the account spent VND 285.5M with VND 12.3M of recorded revenue — ROAS 0.04, with 29 of 32 days at VND 0. Aug 4 alone spent VND 12.8M and Aug 5 spent VND 2.6M, both at VND 0. I ask that the ROAS targets be locked in only after the new baseline is in on Aug 11.

The four grey rows are what can be delivered for certain. The three rows below are outcomes, to be locked in once the numbers are right.
Aug 8
Cut at least VND 120M/month of budget with ROAS below 0.5
Measured by the list of ad sets turned off and total spend
Aug 10
5 new campaigns live · 7 rules running
Measured by screenshots of the account structure
Aug 11
Over 85% of spend attributed to a revenue source
Reconcile Meta with the CRM · lock in the new ROAS baseline
Aug 24
CPL of the scaling cluster under VND 85,000 · no increase in total budget
Cap of VND 262M/month throughout Sprint 1
Sep 21
Account-wide ROAS reaches 2.0
To be locked in after the new baseline on Aug 11
Oct 14
ROAS reaches 2.5
Requires a close rate of 6.5% or higher
Oct 14
ROAS reaches 3.0
Accepted if the close rate reaches 8% and a VND 299–690k funnel product exists

At a 4.4% close rate, even the cheapest lead cost the account has ever hit only gets ROAS to 2.50. That is the ceiling of the math, not the ceiling of effort.

10

Spend less, earn more

Keep the VND 262M budget cap and reallocate toward clusters with proven ROAS. Only ~VND 26M/month can be cut right away; the rest is moving money between clusters already running.

The strongest cluster has only 19 orders so far, a small sample. The projection is scaled down to a conservative level.
CampaignBudgetAssumed ROASRevenue
01_LEAD — Physiognomy45M5.0225M
02_MSG — Psychology80M1.3104M
03_CONV — Online funnel60M1.060M
04_RMKT — Retargeting25M3.075M
05_TEST — New creative15M0.812M
Engagement, tapering to 037M1.763M
Total262M2.06539M
+58M VND/MONTH

Conservative scenario · ROAS 1.6

Revenue of VND 419M, up VND 110M. The number on the left is the extra gross profit per month.

+122M VND/MONTH

Target scenario · ROAS 2.06

Revenue of VND 539M, up VND 230M on the most recent month we can still measure.

Both scenarios are reached while spending VND 31M less per month than now — VND 262M instead of VND 293M. If the winning cluster cannot hold its performance at scale, the conservative scenario is what to expect.

11

Two things that need support

These two sit outside the scope of advertising, but they directly affect the final result.

A required “Ad source” field in the order-closing file

An order can only be saved once this field is filled in. Only with this field can we tell which ads are making money.

NEEDS AN OWNER · DUE AUG 6

An owner for the close rate, with committed milestones

Only once someone owns it can ROAS get past 2.5. However well the ads are optimized, it is hard to go beyond that without this piece.

NEEDS A DECISION · DUE AUG 11

FOUR QUESTIONS THAT NEED ANSWERS

  1. Who owns the close rate, and what milestone do they commit to?
  2. What are the real price and cost of goods of the 21-day Zoom course?
  3. Are we building a VND 299–690k funnel product or not?
  4. The VND 2.88B in revenue deductions — who is handling it?
VIEN