Ads troubleshooter
Many advertising problems are one of four symptoms, and each of them has a short list of causes worth ruling out before anything else. This tool is that list: pick what is happening, work down the checks in order, and tick them off as you go. Nothing is sent anywhere and nothing is stored — the ticks live in the tab for as long as it is open.
Delivery problems are usually a constraint somewhere in the campaign rather than a budget that is too small. Work outward from the things that stop delivery entirely.
A campaign, its ad set and its ad each carry their own status, and an active campaign containing a paused ad set delivers nothing. The same is true of a schedule that ended, a flight whose end date has passed, and a rule that turned something off overnight.
An ad in review, rejected, or limited for a policy reason will not deliver. The account-level notification is often the only place this appears; the campaign table usually shows the ad as active.
A declined card, a reached account spending limit or a failed payment stops the whole account at once, and the campaign view rarely says so. It is quick to rule out and easy to miss from inside a campaign.
A narrow audience with several layered exclusions can be too small for the money pointed at it. Widening one layer, or removing one exclusion, usually restores delivery immediately.
A bid cap or cost cap set under what the auction currently charges wins nothing. The symptom is a campaign that spends a little at the start of the day and then stops.
An automated bid strategy delivers conservatively until it has seen enough conversions, and every material edit restarts that. A campaign edited daily can stay in that state indefinitely.
6 of 6 checks left.
Why a list beats intuition
Under pressure, people debug in the order of what they find interesting rather than in the order of what is likely. A campaign stops spending and the first thing opened is the bid strategy, because that is the part of the account that feels like the job. The cause is more often a declined card, an ad in review or an ad set somebody paused on Friday.
The order here is deliberate: cheapest to rule out first. Everything near the top of each list takes under a minute to rule out, and plenty of incidents never get past the third check. The ones that do have been narrowed down to something worth spending an hour on, which is the second thing a list does — it turns a vague symptom into a specific finding you can act on or escalate.
A campaign that is not spending
Delivery stops for a reason, and the reason is usually a constraint rather than a budget that is too small. Statuses come first, because every level carries its own and an active campaign containing a paused ad set delivers nothing. Then review status, because a rejected or limited ad usually still shows as active in the campaign table and only announces itself in an account notification. Then billing, which stops everything at once and is among the least visible causes from inside a campaign view.
After that come the two real media constraints. An audience too narrow to serve the money pointed at it will deliver a trickle and stop; a bid or cost cap set below what the auction currently charges will win nothing at all, with the characteristic symptom of a campaign that spends a little early and then goes quiet. Last is the learning state, which delivers conservatively until an automated strategy has seen enough conversions — and which every material edit restarts, so a campaign edited daily can stay in it indefinitely.
Conversions missing from the report
The first question is not why the media stopped working. It is whether the conversions happened at all, and the answer is in your own system rather than the platform's.
If the orders are in the shop or the CRM and not in the platform, this is a measurement problem, and no bid or budget change will touch it. From there the causes are ordered by what it costs to check them: a tag that stopped firing after a site deployment or a consent change, an attribution window that moved — including as a platform default, without anybody in the account touching anything — a conversion event that was renamed or re-created and is therefore a different event to the platform, a deduplication mismatch between browser and server events, and a reporting date basis that credits conversions to the click date rather than the conversion date.
That last one is worth knowing about before it happens, because it makes a healthy campaign look like a collapse for a few days and then quietly corrects itself.
Two reports that disagree
Disagreement between an ad platform and an analytics tool is the normal state, not a fault, and the aim of this list is to identify which of the usual causes is producing this particular gap.
Attribution models come first because they explain most of it: a platform credits itself on its own model and window, an analytics tool usually credits the last non-direct source, and the two are answers to different questions. Then the mechanical causes: mismatched time zones, which produce gaps at both ends of every period and the largest gap on the most recent day, and untagged destination links, where a single untagged creative makes a campaign look inert in one report and healthy in the other. Then view-through conversions, which no click-based tool can ever see. Then cross-platform double counting, which is checked against the business's own total rather than against the other platform.
The last check is the one that resolves the situation rather than explaining it: decide which number decides what. The business total says whether advertising is working. The platform figures say which campaign to change. Trying to make the two agree is a project with no end.
Costs that jumped overnight
Four causes, and only one of them is inside the account.
Start by checking whether every campaign moved in the same week, because if they did the cause is outside — seasonal demand, a competitor's launch, a holiday period — and rebuilding a working campaign in response to the market is a common and expensive mistake. Then separate the price of the impression from the rate of the result: a rising cost driven by a rising cost per thousand is an auction story, while one driven by a falling click or conversion rate is a creative or landing page story, and the two have opposite fixes.
Then frequency and creative age, then the account's own change log with dates lined up against the cost curve. And before any spending decision, confirm the conversion tracking is intact, because a cost per result rises immediately when conversions stop being recorded — and that is the one cause where cutting spend is actively the wrong move.
Finally, check the mix rather than the average. An account-level cost moves whenever the share of spend shifts between a cheap campaign and an expensive one, even though neither of them changed at all.
Questions
More free tools
Campaign naming generator
Build campaign, ad group and ad names from one set of segments, in a consistent order your reports can split apart. No signup, nothing stored.
UTM builder
Build a tagged campaign URL: source, medium, campaign, term and content, appended cleanly to your own destination. No signup, nothing stored.
Put frontier AI to work on every ad account you run.
Tempio connects your ad accounts into one workspace and hands your own AI the numbers and the tools. Every change it writes is a draft until you approve it, or until a rule you wrote does.
Request early access- Read and draft by default. Approve is a separate permission you grant.