Kids' IT school (Kazakhstan): $49,353 → 9,812 leads at $5.03, 153% ROMI

Online EducationMeta Ads

Updated:

$49,353
Ad spend
9,812
Leads
$124,863
Revenue
153%
ROMI

The task

A network of children’s programming schools: offline branches in Kazakhstan’s cities plus an online format for the whole country. Name not disclosed (NDA).

The client came in late June 2024. They needed trial-lesson leads at up to $5–6 each, separately for every offline city and separately for online. Each lead had to land in the client’s amoCRM tagged with a city so the right branch could pick it up. Before us another media buyer ran a few city campaigns on old landing pages with no lead analytics.

What we did

  • Landing pages from scratch. The old pages were beyond fixing, so we rebuilt them on Tilda: a page for online, separate pages for cities and for the summer camp in Almaty. Every page passes the form into amoCRM.
  • One naming scheme and dynamic UTMs. Campaign = brand_city, ad set = number+geo_segment, ad = ad№. The link carries {{campaign.name}}, {{adset.name}}, {{ad.name}} — the client’s CRM sorts leads into city pipelines on its own.
  • Structure by geo. Online is one campaign for the whole country. Every offline city gets its own campaign and its own creative with the city name: Almaty, Astana, Karaganda, Aktau, Pavlodar, Ust-Kamenogorsk, Aktobe, Shymkent, Petropavlovsk. For Karaganda the headline said “Karaganda, city center” because leads were coming from the region.
  • Creatives in hypothesis packs. Interest audiences did not work — the Russian-speaking audience is small, so we ran broad and influenced results with creatives only. One hypothesis = three creatives with different design and angle: “your kid is glued to gadgets”, “plays Roblox and Minecraft — we’ll teach them to build their own games”, parent reviews, lesson price. In the first six weeks — 30 static visuals with 2–4 offers each and 22 video scripts. In weak cities we swapped photo-geo for video with the city name.
  • Daily lead reporting. Leads were pulled from the CRM into a sheet every day: how many, which city, qualified or not. When online hit 60% unqualified, we relaunched: “age 8+” and “computer required” on the creatives, and switched off cities where kids have no PC.
  • Scale. By mid-August — 13 campaigns across Kazakhstan; by December — 225.

Results

June–December 2024:

  • Spend: $49,353
  • Leads: 9,812
  • Cost per lead: $5.03 against the client’s $5–6 KPI
  • ROMI: 153% — $124,863 revenue on $49,353 ad spend
  • Account: 225 campaigns, 12.7M impressions, 2.86M reach, 63,967 clicks at $0.77

Ads Manager, June 1 – December 25, 2024: 225 campaigns, $49,353 spend, 12.7M impressions, $0.77 per click

Cost per lead and ROMI are taken from the core period, July–September: $21,069 spend, 4,188 leads at $5.03.

Ads Manager, July 1 – October 1, 2024: $21,069.40 spend, leads at $4.15–6.62

In the first weeks leads came in at $3.50 and the client’s sales team asked for more volume: “the online managers quietly ate up those leads.”

Insights

  • A city name in the creative headline plus a dedicated city landing page brings cheaper leads than one country-wide campaign. A parent sees “Astana” or “Karaganda, city center” and knows it is nearby.
  • For a Russian-speaking audience outside Russia, interests and narrowing do not work — the audience is too small. Run broad and test hypotheses with creatives: three variants per pain point, not one creative per ad set.
  • One naming scheme and dynamic UTMs are not bureaucracy but the condition for a lead to reach the right branch. Without them the client’s CRM dropped leads into the wrong pipeline.
  • A cheap lead is not a qualified lead. 60% unqualified online leads are fixed with a filter right on the creative: the child’s age and “computer required”. Cost per lead goes up, and so does the share of leads that buy.
Discuss your project