Dimitri Bukys Start the diagnosis

How I work · direct engagements

The part most people only find out later.

What I need from you on day one, what gets checked before anything goes live, what lands in your inbox every month, and what you keep if you end it. All of it written down before you hire me rather than discovered in week three.

5 daysTo first launch, from the last blocking item
2 daysTurnaround on a standard change
4 hoursIncident response, any day of the week
30 daysNotice to end it, either side

1. The first five days

The clock starts at the last blocking item, not the first, which is why the list below matters more than the calendar. If something is missing that is usually fine, it just changes what I can promise, and I say which promise changes rather than quietly dropping it.

Day 0

Access lands. Partner or delegated access to accounts you already own. I do not need ownership of anything and I will not ask for it.

Day 0 to 2

The commercial inputs. Margins, discounting, returns, the target and the budget envelope. This is the stage most handovers skip and it is the one that decides whether a target means anything.

Day 2 to 5

Account review, breakeven built from your real numbers, structure and tracking checked against the pre-launch list, then the first changes go live.

You get the breakeven calculation itself, not just the number that came out of it.

2. What I need from you, and what changes if you cannot give it

This is the whole list. Nothing on it is a surprise later.

WhatBlockingIf it is missing
Meta Business Manager: partner access to the ad account, page, pixel and catalogYesNothing runs. This is the one true blocker
Google Ads: standard access at minimum, admin preferredYesStandard access works. Without admin I cannot fix conversion or account-level settings myself, so every one of those becomes a request to you
Analytics and tag manager accessNoI work from platform data only and I say so in every report, rather than quietly reporting numbers I trust less
Shopify or backend read accessNoI lose the sales reconciliation and the report becomes platform-reported only
Margins, at least blended, per product group if you have itYes for a profit targetI can hit a ROAS number but I cannot tell you whether that number makes money. I will manage to a stated target and label it unvalidated
Average discount rate and return rateStrongly wantedYour breakeven comes out flattering and wrong. This is the single most common reason a profitable-looking account is not profitable
The commercial target: profit, revenue, volume or a specific cost per customerYesI will not guess it. Different targets produce genuinely different account structures
Monthly budget, and who authorises a change to itYesI hold spend decisions inside an envelope you set, so I need the envelope and the person
Stock or capacity visibilityNoI cannot steer spend away from what is about to run out or push what is sitting still. Stock stays your call, I only want to see it
Promo calendar, launches, seasonalityNoForecasts get wider and I flag them as such

3. When I am there, and how fast things move

Stated as they actually are rather than as they would read best.

 Commitment
Working hoursMonday to Friday until 16:00 in Almaty, which is the UK and European working morning
Messages inside those hoursUsually answered within the hour
Messages after 16:00 or at the weekendAnswered, but not quickly. Treat the next working morning as the reliable time
A reply is an acknowledgement, not a changeI tell you I have seen it and when it will be done. The work follows the turnaround below
Standard change requestDelivered within 2 working days
Account down, suspension or spend anomalyResponse within 4 hours, any day, and containment started where containment is possible from my side
CallsAny timezone, by appointment, evenings included. Book it and I am there, prepared
Launches, sales, Black FridayExtended cover on the day, agreed in advance rather than assumed
Planned unavailabilityTold at least 7 days ahead, with cover arrangements stated

What this rules out, said now rather than in week three.

Sitting in your daily standup, being live in a chat channel through your whole afternoon, and same-day turnaround promised against your afternoon rather than your morning. If the work needs any of those, I am the wrong choice and I would rather say so today.

What it does not rule out is most of the work. Optimisation, creative, feeds, tracking, reporting and QA do not need two people awake at once, and incidents are covered separately at 4 hours any day, which is the part that carries real risk.

4. What gets checked before anything goes live

One rule sits above the others: no structural change ships without the pre-launch block passing. Not when it is urgent, not when it is small. Urgency is exactly when a check gets skipped and exactly when it is needed.

Tracking

  • Conversions exist, fire, and are attributed to the right platform
  • Deduplication in place, so one purchase is one conversion
  • Tracking parameters set at account level, not pasted per ad where one omission hides for a month
  • The conversion being optimised toward is the one you are actually paid for, not add-to-cart standing in for a sale
  • Platform conversions checked against your backend for the same window, and the size of the gap written down

Commercial

  • Breakeven built from real margins, net of discounts and returns, with fees inside it
  • The target sits above the breakeven floor, and if it does not, that gets raised before launch rather than discovered in the first report
  • Daily budget multiplied by the days left in the month checked against the monthly number, which catches the most expensive routine mistake in paid media

Structure and settings

  • Naming convention applied
  • The settings that quietly buy junk traffic set deliberately: audience expansion, search partners, display on search, broad match without negatives, placement spread
  • Geo, language and schedule match the brief, exclusions included
  • Brand and non-brand separated, so brand is not flattering the non-brand numbers

Creative and feed

  • Every ad checked against the written win and lose rules before it runs, not after it has spent
  • Landing page loads on mobile, from the ad, with parameters intact
  • The offer on the page matches the offer in the ad, which is the most common mismatch there is
  • Feed reaching the platform with the expected item count, disapprovals recorded before launch so any increase is attributable

After it is live

WhenCheckWhy that one
24 hoursDelivery. Anything at zero spend, zero impressions, or pacing far off planA silently non-delivering ad set is more common than a bad one and it costs a day
72 hoursData integrity. Platform conversions against the backend for the same windowA gap that widened after launch means tracking, not performance
7 daysFirst read, with the sample size statedNo structural change on a sample too small to read. Waiting is a decision, not inaction

Then every week, and every month

Weekly: a kill and keep pass over the creative against the written rules, search terms reviewed and negatives added, budget pacing corrected while correction is still cheap, account health and disapprovals checked, and anything anomalous flagged the day it is seen rather than saved for the report.

Monthly: the report below, the breakeven re-checked because discounting and margins move, the wins and losses written up, and next month's plan stated in a way that can be marked right or wrong later.

Change control

5. The report you get every month

This is the real format. The figures in it are illustrative and come from no client account, because the numbers in a real report belong to the client they were made for.

Performance report, paid acquisition · Client A · July 2026

1. The one-line answer

July was profitable and scaled. Spend rose 21%, revenue rose 28%, and blended return improved from 2.74 to 2.89 against a breakeven floor of 2.35. The account absorbed more budget without losing efficiency, which is the thing being tested this month, and the answer is that headroom remains.

2. Performance against target

MetricJulyJuneChangeTarget
Spend£24,000£19,800+21%On plan
Revenue, reconciled to backend£69,400£54,300+28%Ahead
Blended ROAS, backend2.892.74+0.15Ahead
Breakeven ROAS floor2.352.35flatAbove floor
Cost per customer£21.43£22.20−3%Ahead

Read the floor, not just the ROAS. 2.89 against a 2.35 breakeven is roughly 23% of headroom. The floor is computed from your real margins, net of the month's discounting and the trailing return rate, with fees inside it. If margins or discounting move, the floor moves, and it is recomputed every month rather than set once.

3. Where the money went, and the honest part

Every channel gets its spend, its return, its share of budget and a line saying how to read it. Brand search is efficient by definition and held flat on purpose. Retargeting is capped on purpose, because scaling it inflates the blended number and buys customers you already had.

Then the two revenue numbers. Platform-reported revenue totals £78,310 and the backend records £69,400 from paid sources over the same window, a gap of 11.4%, mostly the same order being claimed by both Google and Meta. We manage to the backend number. The platform figures are shown because they are what the platforms optimise toward, not because they are the truth.

4. What changed, and what happened

ChangeExpectedResult
Split non-brand generic from category termsCleaner bidding, generic no longer subsidisedCategory ROAS 3.6, generic 2.7. The blend was hiding both
Raised non-brand budget 30% over two stepsVolume up, ROAS down no more than 0.3Volume +34%, ROAS −0.1. Headroom confirmed
Killed 19 of 84 live ads against the written rulesSpend redirected to the top decile£3,100 of monthly spend moved off ads below the floor
Rebuilt the top 3 product titles from search-term languageImpression share up on those SKUsToo early. Reading it next month, flagged rather than claimed

That last line is deliberately not reported as a win. Nine days is not a read, and reporting it as one would make every other line in the table worth less.

5. Risks, and next month

What could take the month with it, what is being done about each, and then the plan stated in advance: the spend, the revenue range and the blended return expected, written down so it can be marked right or wrong in the next report.

What is not in this report

  • No dashboard screenshots. They are decoration, and they carry data the report already states more precisely
  • No metric without a decision attached. Impressions, clicks and click-through rate appear only where they explain a change in spend or return
  • No claim on a sample that cannot carry it
  • An appendix defining every term used, because half of all reporting arguments are definitional

6. How your account will be named

A named structure is what lets a report be built by splitting a string instead of by hand, lets a second person read the account without a briefing, and lets it survive the day I am not there. That last one is the reason it belongs on this page.

If you already have a convention, yours wins. I adopt it on day one and mine becomes a reference. Two conventions in one account is worse than either.

Two separators and only two. The underscore separates fields and never appears inside one. The hyphen joins words inside a field. Lowercase throughout, dates as year then month so sorting alphabetically sorts chronologically.

brand_channel_funnel_objective_geo_descriptor nrdcs_gads_prospect_sales_uk_nonbrand-generic nrdcs_gads_brand_sales_uk_brand-exact nrdcs_meta_retarget_sales_uk_atc-7d nrdcs_pmax_prospect_sales_uk_core-range

Brand and non-brand are always separate campaigns and the name says which, because mixed brand traffic inside a non-brand campaign flatters every number downstream of it, including the ones in your report.

7. What you own, and what happens if you end it

Everything belongs to you. Nothing belongs to me.

AssetOwner
Ad accounts, Business Manager, pixels, catalogsYou. I work on delegated access, I never ask for ownership and never accept it
Analytics properties, tag containers, feedsYou
Campaigns, ad sets, creative, copy, structuresYou, on payment of the invoice covering the period the work was made in
Reports and audit documentsYou, to keep, forward and reuse
My own tooling: reporting and management scripts, the creative rule system, the audit methodMine. Used in your engagement, not transferred with it. This is the only line on the list

Ending it

Either side, 30 days written notice, no reason required and none asked for. Work delivered up to the end date is invoiced normally. Inside those 30 days you receive, without having to ask:

My access is removed on the last day, by you, and I will remind you to do it. Nothing is deleted, archived or restructured on the way out, so the account is left in a state someone else can pick up on day one.

The handover is written for the person replacing me.

An account that only works while I am in it is a hostage arrangement rather than a service, and it is the thing brands are most right to be afraid of when they hire anyone for this.

Two limits I will not pretend away

These apply to me, to you, and to every other provider you will speak to. They are here because someone who claims neither is either not looking or not telling you.

Platform totals will not agree with your store, and they will not agree with each other. The same order is commonly claimed by both Google and Meta. I report platform and backend figures side by side and use the backend for commercial decisions. I do not resolve the double count with a proprietary model, because I do not have one and neither does anyone selling you one cheaply.

Platform attribution is directional, not truth. Where an incrementality read matters enough to pay for, the honest instrument is a holdout test, and it costs real budget and real time. I will tell you when a question needs one instead of implying the dashboard already answered it.

Start with the diagnosis.

Five working days, $500 fixed, credited against your first invoice. It is allowed to conclude that ads are not your bottleneck.