Another real example of media planning — this time a sushi delivery chain operating in two cities. Unlike the previous flower delivery case, there are two extra dimensions here right away: the potential has to be calculated separately for each city, and the client came with an ad account that was already running (or rather, broken).
Contents
1. Purpose of the document
Assess the market potential for sushi delivery in two cities based on search demand, build a media plan and a recommended campaign structure.
2. Methodology and key points
- The budget is calculated as search volume × average CTR × average CPC — this is a ceiling (maximum) amount above which spend stops being efficient, not a recommended budget as such.
- The forecast doesn't account for seasonality (the business is seasonal) or force majeure.
- This is a forecast, not a guarantee of results — it's based on publicly available data from Keyword Planner, market benchmarks and my experience running active projects in this niche and region.
- It doesn't account for the effect of brand awareness on future metrics (it will grow over time and will likely push conversion rates above the scenarios used here).
3. Search potential and budget
Method: Budget = Search volume × CTR (generic 10%, brand 40%) × CPC (average between the low and high bid range).
| City | Segment | Volume/mo | CPC | Clicks/mo | Budget/mo |
|---|---|---|---|---|---|
| Kyiv | Generic queries | 60 450 | 19.68 UAH ($0.44) | 6 045 | 118,955 UAH ($2,643) |
| Brand queries | 19 760 | 7.38 UAH ($0.16) | 7 904 | 58,362 UAH ($1,297) | |
| Dnipro | Generic queries | 51 050 | 13.92 UAH ($0.31) | 5 105 | 71,057 UAH ($1,579) |
| Brand queries | 5 700 | 6.64 UAH ($0.15) | 2 280 | 15,141 UAH ($336) | |
| Total budget ceiling | ~263,515 UAH ($5,856)/mo | ||||
The calculations were done separately for each city and separately by query type (generic/brand), since CPC and CR differ significantly.
4. Order conversion scenarios
Generic queries: 5% / 7% / 10%
The brand is well enough known, so the lower bound was raised to 5% (the 3% scenario was dropped).
| City | Budget/mo | 5% | 7% | 10% |
|---|---|---|---|---|
| Kyiv | 118,955 UAH ($2,643) | 302 orders / CPL 394 UAH ($8.8) | 423 orders / CPL 281 UAH ($6.2) | 604 orders / CPL 197 UAH ($4.4) |
| Dnipro | 71,057 UAH ($1,579) | 255 orders / CPL 278 UAH ($6.2) | 357 orders / CPL 199 UAH ($4.4) | 510 orders / CPL 139 UAH ($3.1) |
Brand queries: 20% / 25% / 30%
| City | Budget/mo | 20% | 25% | 30% |
|---|---|---|---|---|
| Kyiv | 58,362 UAH ($1,297) | 1,581 orders / CPL 37 UAH ($0.82) | 1,976 orders / CPL 30 UAH ($0.67) | 2,371 orders / CPL 25 UAH ($0.56) |
| Dnipro | 15,141 UAH ($336) | 456 orders / CPL 33 UAH ($0.73) | 570 orders / CPL 27 UAH ($0.60) | 684 orders / CPL 22 UAH ($0.49) |
Limitation of the brand segment: it's physically capped by the number of brand searches in Keyword Planner — this isn't “market potential” but “the potential of current awareness.” As the brand grows, brand search volume will grow too.
5. Problems in the current ad account
5.1. Broken conversion tracking
In the current ad account, the purchase conversion rate is 40–55% across non-brand and brand campaigns, with cost per conversion starting at 0.62 UAH ($0.01). With an average order of 1,500 UAH ($33), that gives a ROAS of ×837, which is technically and economically impossible (it would mean ~568 orders a day from a budget of ~30,000 UAH ($667) a month).
Conclusion: the purchase event is recorded incorrectly on the site — duplicated or tripled, or fired not on a real order but on an intermediate funnel step (probably related to the ChoiceQR architecture — checkout/payment via an iframe or a separate processing domain). The exact distortion factor is not yet known.
Next step: reconcile conversions with the client's real orders for a month (from the ChoiceQR/POS admin), establish the data distortion factor, and hand the result to the ChoiceQR developers / the client's tech team to fix the tracking.
5.2. Account blocked due to an incorrect payments profile
The current ad account is blocked. The reason is that the payments profile was set up incorrectly: the FOP (sole proprietor) was entered as the “Organization” type, even though a FOP is an individual, not a legal entity (not an LLC, not an organization). Google doesn't see a FOP as an organization in its verification system, so the account failed verification and, as a result, was blocked.
Google Ads Account Suspended over Verification: What to Do and How to Recover Fast
Next step: recreate the payments profile with the correct type (Individual instead of Organization) and go through verification again. Also eliminate the extra 20% VAT on advertising (the so-called “Google tax”). In the current setup, the client was paying this 20% on top for no reason.
6. Recommended campaign structure
Three formats that actually work in food delivery (based on 6 years of experience and dozens of projects in pizza, sushi and Asian food delivery):
6.1. Local campaigns (Performance Max / Maps)
The most effective tool — the closer the user is to the location, the higher the chance of an order.
- Split into 2 directions: with brand keywords / without brand keywords (generic only).
- Critical limitation: one local campaign = one location on the map. You can't combine several locations in one campaign.
- Why splitting by location matters: it lets you boost a specific location on its own (impossible in a single campaign covering all locations in a city).
6.2. Search campaigns
- Split: brand / generic (generic = without your own brand and without competitor brands).
- Campaigns on competitor brands: they'll be tested, but not at the first stage. The reason is consistently low conversion (the user is looking for a specific brand, and we “barge in” with our ad).
- Competitor testing comes at the scaling stage, once the potential of generic queries is exhausted (they convert better than competitor brand queries).
- Rule for choosing competitors to target: the same price segment, otherwise you're just burning budget. A mid-price chain has no reason to target a discounter in the same niche — it's a different audience.
- In my 6 years of practice, targeting a competitor works better if the competitor is less known than us, or has reputation problems while still having a loyal audience.
6.3. Performance Max
It can likewise be split into campaigns with / without brand keywords.
6.4. General structure principle
Campaign structure depends on the budget: first we define the budget, then build the structure around it. With a small budget, you can't make a separate campaign for every location.
Conclusion
This case shows a picture typical of food delivery: the client comes with an ad account that looks “working” (there are conversions, there's ROAS), but the numbers are technically impossible — and in reality the account is blocked and the tracking is broken. In a case like this, a media plan isn't just a forecast of potential but also a diagnosis of what's really happening in the account before talking about scaling.
Check search volumes and seasonality for your city and niche in the free keyword research tool.
Where to find me
Message me on Telegram or by email — I respond quickly. Telegram channel and YouTube are for those who want to see real cases before reaching out and understand my approach.