This is the module's living lesson: our campaign, with its real numbers and its dates. Everything below was measured in the Ninja Scripts account or in our own analytics. No industry averages, no client cases: just what happened, zeros included, with the date on which each number was true.
The setup
A deliberately simple campaign, so we could understand whatever happened:
| Setting | Value |
|---|---|
| Objective | Clicks |
| Budget | $25/day |
| Country | Spain |
| Context hints | 4, generated by the Ads Manager itself |
| Conversion event | 1 (sign-up in the panel) |
| Ads | 8 |
⚠️ The trap we fell into: 7 of the 8 ads pointed to pages with no measurement installed. You can build a campaign in an afternoon; measurement has to be in place BEFORE the first impression, or the first day of data is lost forever.
The days before · All approved, nothing live
The 8 ads were approved, with no low-bid warning, and the campaign was not serving. Not one impression. The cause was not in the ads but in the account brand review, approved on 16/09/2026 at around 11:30. A cheap lesson: when everything looks right and nothing delivers, check the account reviews (see "Brand, policies and reviews: how to stay out of trouble").
17/09/2026 · First day serving
| Metric | Value |
|---|---|
| Impressions | 4,024 |
| Clicks | 0 |
| Spend | €0 |
With a Clicks objective, no clicks means no spend: that day the campaign showed four thousand times and cost nothing. That is worse news than it sounds, not better: four thousand people saw the card and nobody tapped.
Where they were seen:
| Surface | Impressions |
|---|---|
| iOS app | 2,079 |
| Android app | 1,316 |
| Desktop web | 548 |
| iOS web | 49 |
| Android web | 37 |
In short: 3,481 on mobile against 548 on desktop. (The breakdown adds up to five impressions more than the day's total because that query also covers the following morning: each breakdown is requested separately and with its own period, so comparing them without checking the dates is the quickest way to believe in a mismatch that isn't there.)
Which ad took the shop window:
| Ad | Impressions |
|---|---|
| One-month demo | 2,112 |
| Ninja Academy | 592 |
| Ebook · The eternal ad | 513 |
| Weekly news | 188 |
| Guardian script (free) | 188 |
| Ebook · AI Max, the black box | 162 |
| AI Max Analyzer script (free) | 141 |
| Ebook · Quality Score | 133 |
Over half the impressions went to the ad that demands the most effort: trying a script for a month, which means creating an account and installing it in Google Ads. A desktop job, served mostly in the mobile app.
17/09/2026 · What we measured ourselves
What the platform counts is one thing; what reaches your site, another:
| Metric (our analytics, bots excluded) | Value |
|---|---|
| People | 19 |
| On mobile | 16 of 19 |
| Arrived between 2:00 and 5:00 | 17 of 19 |
| Time on page (median) | 2 seconds |
| Left without reading anything | 37% |
| Sign-ups | 0 |
As an internal benchmark from the same month: people arriving at our site from social media spent almost 3 minutes and only 10% left without reading. This is not a "bad traffic" problem: it is a fit problem.
💡 Ninja tip: that night also brought about 40 visits from OpenAI's crawlers and about 25 from automated link checks. Without filtering them, the traffic looked bigger and even worse. Filter bots before you pass judgement on quality.
One important caveat about the hours: the concentration between 2:00 and 5:00 is what the report gives in the account's time zone. We do not assume that is local time: it has to be confirmed before taking any scheduling decision.
17/09/2026, 19:09 · The decision
With those numbers, and knowing one day is not a conclusion, we limited the campaign to desktop and to office hours (Mon-Fri, 9:00-18:00). It is a hypothesis, not a verdict: our audience manages campaigns at work and at a computer. It is logged with its date so it can be judged in two weeks against comparable working days.
18/09/2026 · The first accepted conversion
Until that day, OpenAI's conversion setup screen still said pending, and the reason was not a misconfigured setting: no conversion had ever arrived. Our first send was being rejected because of how we declared the event: we sent it as a web event, and that requires stating the URL where it happened. That particular sign-up arrived with no known landing page.
The fix was to stop declaring it as a web event, rather than invent a URL. With that, the first conversion was accepted on 18/09/2026. Making the data up would have worked just as well — and would have dirtied the measurement forever.
What we still do not know
Told like everything else:
- Why 4,024 impressions produce 0 clicks. Creative, moment, device, offer? One day cannot separate those.
- What "the account's time" is in the hourly report.
- Whether desktop and office hours improve anything, or merely cut volume.
- What a sign-up costs here. With no clicks, that figure does not exist yet.
What we will look at next time
- Real cost per sign-up from our own measurement, not clicks.
- Working days against working days, before and after the change.
- The surface breakdown with the campaign already limited to desktop.
- Whether the highest-effort ad keeps taking the shop window.
- Whether conversions keep going through without rejections.
This lesson is updated whenever there is news, good or bad: zeros get told just like wins.