| Decision | Campaign | Spend | LN0 | CAC | CPI | CPR | Notes |
|---|---|---|---|---|---|---|---|
| Keep | GH App Acquisition - Cold | $6,112 | 510 | $11.99 | $1.32 | $2.64 | Workhorse. "Problem and Solution" ($5.1k, CAC $11.53) drives 87% of LN0s |
| Keep | App GH - Personal Loans - LN0 | $3,505 | 354 | $9.90 | $1.34 | $2.65 | "Delay" (CAC $9.32) + "UGC Style" ($9.46) best. Reduce "Medical Emergencies" budget (CAC $11.74) |
| Kill | App GH - FidoBiz - LN0 | $2,088 | 230 | $9.08 | $1.01 | $2.00 | Product discontinued April 2026 |
| Keep | GH App Retargeting - Funnel | $1,469 | 64 | $22.96 | $1.39 | $2.71 | High CAC typical for retargeting. Kill "KYC 1 - Copy" ad (CAC $93). "Cash Ready" best at $15.52 |
| Keep | App GH - MoMo Agent - LN0 | $1,221 | 129 | $9.46 | $1.18 | $2.75 | "Stressed Agent" ad efficient. CTR 7% — high engagement |
| Learning | App GH - Personal Loans - LN0 - Copy | $1,209 | 48 | $25.18 | $2.61 | $5.55 | Post-audit restart. Learning phase — target CAC <$13.60. Keep parallel to original |
| Keep | App GH - Salaried Workers - LN0 | $1,178 | 104 | $11.33 | $1.53 | $3.29 | Kill "Ad Set V1" ad (CAC $41.97). Rest is solid |
| Scale | Web GH - Personal Loans - Reg | $882 | — | — | — | $0.07 | 11,789 web regs · LN0 not tracked via Meta purchase event (see open question) |
| Learning | GH App Acquisition - Cold - Copy | $564 | — | — | $1.81 | $3.59 | Post-audit restart. Keep running |
| Kill | App GH - FidoBiz - LN0 - Copy | $475 | 26 | $18.26 | $1.53 | $2.93 | Product discontinued. No reason to keep learning |
| Keep | Web GH - Finance - Reg | $423 | — | — | — | $0.08 | 7 ads all performing uniformly at $0.07–0.09 CPR |
| Kill | Web GH - Referral - Reg | $397 | 0 | — | — | $6.84 | CPR 100× worse than other web campaigns. 0 LN0s |
| Learning | App GH - MoMo Agent - LN0 - Copy | $372 | 17 | $21.91 | $2.55 | $5.82 | Post-audit restart. Keep running alongside original |
| Kill | GH - Existing Posts AdOps {SM IG} | $300 | 0 | — | — | — | 0 LN0s, 0 installs, 0 regs |
| Keep | App GH - Core Acquisition {App Purchase} | $236 | 13 | $18.19 | $1.58 | $3.94 | Early stage, small volume. Watch |
| Keep | App GH - EasySave & Credit A/B Testing | $216 | 20 | $10.79 | $1.42 | $3.37 | Good CAC, only 1 ad — add more creative variants |
| Kill | GH - Existing Posts AdOps {SM FB} | $130 | 0 | — | — | — | 0 LN0s, 0 conversions |
| Keep | App GH - iOS Quick Credit - Installs | $96 | 0* | — | $0.81 | — | Low CPI. *LN0 likely iOS attribution gap — don't kill based on this |
| Scale | App GH - Core Acquisition_Easysave | $63 | 5 | $12.58 | $0.49 | $1.01 | Best CPI in account at $0.49. Only $63 spend — scale to $500+ |
| Change | GH Web Acquisition Lander Test | $54 | — | — | — | $0.21 | Strong web CPR. Scale to $300 to validate |
| Keep | Web GH - EasySave - Reg | $135 | — | — | — | $0.09 | Efficient web channel |
| Learning | App GH - Salaried Workers - LN0 - Copy | $21 | 1 | $20.96 | $2.99 | $6.99 | Just started. Minimal data — keep running |
| TOTAL | $20,681 | 1,521 | $13.60 | ||||
| Campaign | Ad | Spend | LN0 | CAC | CPI | CTR% | Action |
|---|---|---|---|---|---|---|---|
| GH App Acquisition - Cold | Problem and Solution | $5,131 | 445 | $11.53 | $1.30 | 2.96% | Scale |
| GH App Acquisition - Cold | Speed Demo | $753 | 52 | $14.47 | $1.35 | 1.96% | Keep |
| App GH - Personal Loans | Delay | $1,155 | 124 | $9.32 | $1.13 | 2.30% | Scale |
| App GH - Personal Loans | UGC Style | $530 | 56 | $9.46 | $1.20 | 2.99% | Scale |
| App GH - Personal Loans | Medical Emergencies | $798 | 68 | $11.74 | $1.79 | 0.47% | Reduce budget |
| App GH - MoMo Agent | Stressed Agent | $1,148 | 124 | $9.26 | $1.17 | 7.03% | Keep |
| App GH - Salaried Workers | Growth | $481 | 67 | $7.17 | $1.38 | 0.65% | Scale |
| App GH - Salaried Workers | Ad Set V1 | $84 | 2 | $41.97 | $4.00 | 3.26% | Kill |
| GH Retargeting - Funnel | Cash Ready | $497 | 32 | $15.52 | $1.28 | 1.80% | Keep |
| GH Retargeting - Funnel | KYC 1 - Copy | $93 | 1 | $93.39 | — | 5.62% | Kill |
| GH Retargeting - Funnel | Finish Sign up | $290 | 6 | $48.28 | $1.14 | 4.28% | Watch |
| App GH - Core Acq_Easysave | Easysave App promotion | $63 | 5 | $12.58 | $0.49 | 2.35% | Scale urgently |
app_custom_event.fb_mobile_purchase. Web campaigns not included — purchase event not firing on web flow.| Decision | Campaign | Spend | LN0 | CAC | CPI | CPR | Notes |
|---|---|---|---|---|---|---|---|
| Keep | UG App Acquisition - Cold | $2,063 | 109 | $18.93 | $2.40 | $3.46 | Kill weak segments inside (Gov workers, Market Traders). Food Vendors best at CAC $9.23 |
| Learning | UG App Acquisition - Cold - Copy | $705 | 48 | $14.68 | $2.41 | $3.28 | ⚡ Copy already beating original (CAC $14.68 vs $18.93). Consider killing original when stable |
| Learning | UG App Retargeting - Funnel - Copy | $703 | 16 | $43.95 | $2.58 | $3.91 | Learning phase. "Finish KYC" ad at CAC $173 — kill that specific ad |
| Keep | UG App Retargeting - Funnel | $678 | 14 | $48.46 | $2.36 | $3.33 | Retargeting CAC naturally higher. Kill "Finish KYC" (CAC $100) and "Finish Sign up" (CAC $66) |
| Scale | App UG - Boda Boda Rider | $555 | 61 | $9.09 | $0.97 | $1.27 | Best campaign in either account. CAC $9.09, CPI $0.97. Double budget |
| Kill | UG - IG Existing Posts Marketing | $487 | 0 | — | — | $37.48 | 0 LN0s. "Testimonial 2" ad: CPR $105 |
| Scale | Web UG - Personal Loans - Reg | $447 | — | — | — | $0.18 | 2,477 web regs. LN0 not tracked via Meta — see open question |
| Keep ⚠️ | App UG - FidoBiz - LN0 | $391 | 29 | $13.47 | $1.48 | $1.82 | Strong performance — before pausing, verify offer being served. Repurpose creative to credit |
| Kill | GH - FB Existing Posts (in UG account) | $218 | 0 | — | — | $19.85 | Wrong account. 0 LN0s |
| Kill | UG Lander · Personal Credit · Traffic (×2) | $218 | 0 | — | — | — | 6 ads, $218 spend, 0 LN0s, 0 installs, 0 regs |
| Change | UG Retargeting · Bottom Funnel | $167 | 5 | $33.46 | $3.98 | $5.77 | Kill "Lapsed Borrowers" ad (CAC $73.68). Keep "Signed Up, No KYC" (CAC $23.79) |
| Keep | Web UG - Food Vendor Awareness | $126 | — | — | — | $0.67 | Good segment-specific web CPR |
| Kill | App UG - FidoBiz - LN0 - Copy | $90 | 4 | $22.49 | $1.70 | $2.09 | Product discontinued |
| Scale | App UG - Credit {App purchase} | $33 | 2 | $16.26 | $0.88 | $0.99 | CPR $0.99 — only $33 spend. Scale to $300 immediately |
| TOTAL | $7,009 | 288 | $24.34 | ||||
| Segment | Spend | LN0 | CAC | CPI | Action |
|---|---|---|---|---|---|
| Food Vendors | $129 | 14 | $9.23 | $1.23 | Scale |
| Nurses | $49 | 5 | $9.75 | $2.03 | Keep |
| Boda Boda Riders | $213 | 11 | $19.39 | $2.45 | Keep |
| Motorcycle | $377 | 22 | $17.16 | $2.84 | Watch |
| Broad Kampala + major towns | $562 | 28 | $20.05 | $2.60 | Watch |
| Teachers | $510 | 23 | $22.17 | $2.46 | Reduce |
| Transport workers | $31 | 2 | $15.64 | $3.91 | Reduce |
| Market Traders | $170 | 4 | $42.38 | $2.23 | Kill |
| Government workers & office staff | $19 | 0 | — | $6.34 | Kill |
VIEWS_DATA → CLICKS_DATA → GA4_EVENTS using click_id chain. The link severs at the App Store install boundary — the app's first_open and BE_LOAN_FIRST_DISBURSEMENT events fire without the original web click_id. This is not a query problem; it's a missing instrumentation problem.| Step | Volume | Source | Status |
|---|---|---|---|
| Web page views (landers) | 55,670 | VIEWS_DATA | Tracked |
| CTA clicks ("Download App" button) | 4,761 | CLICKS_DATA (8.5% CTR) | Tracked |
| Web form fills (phone number submission) | ~11,789 | Meta pixel — "complete_registration" | Meta only, not Snowflake |
| App installs attributed to web click | 47 | GA4 first_open via click_id referrer | 1% of CTA clicks — chain broken |
| LN0s attributed to web campaigns | 0 | BE_LOAN_FIRST_DISBURSEMENT via click_id | Unattributable |
| Finding | Detail |
|---|---|
GA4_EVENTS.CLICK_ID column |
Never populated — 0 of 16.9M April events have this field set |
GA4_EVENTS.REFERRER:"click_id" |
Only 561 events in April carry a click_id in referrer — 0.003% of all events |
| Root cause | User fills web form → taps "Download App" → goes to Play/App Store → installs. The store install severs the URL chain. App's GA4 events fire fresh, with no memory of the original web click_id |
| What Meta's $0.07 CPR actually measures | Web form fills (phone number submitted on lander) — NOT app registrations, NOT installs, NOT LN0s |