This lesson is a real case: the first night of Ninja Scripts' own ChatGPT Ads campaign, in September 2026. It shows how to diagnose traffic that arrives but does not perform, and which levers exist when the platform lacks the ones you are used to in Google Ads.
What happened
The campaign started serving in the early hours. By morning, these were the numbers:
| Metric | Value |
|---|---|
| Impressions (according to OpenAI) | 3,988, most of them in the iPhone app |
| People who reached the site (our own measurement, bots removed) | 19 |
| On mobile | 16 of 19 |
| Arrived between 2:00 and 5:00 a.m. | 17 of 19 |
| Time on page (median) | 2 seconds |
| Left without reading anything | 37% |
| Sign-ups | 0 |
For comparison, people arriving from social media that month spent almost three minutes on the page on average, and only 10% left without reading.
💡 Ninja tip: before judging quality, remove the bots. That same night nearly 40 visits came from OpenAI's crawlers, which review ads and pages, plus another 25 from automated link checks. Without filtering them, the traffic looked bigger and even worse.
The diagnosis
It was not fraud: these were real people, on Spanish carriers and a mix of phones. The problem was fit:
- The ad shown most often offered a one-month trial of a script. That means creating an account and installing it in Google Ads — a desktop task.
- Whoever saw it was in the mobile app at 3 a.m., chatting with ChatGPT about something else. They tapped out of curiosity and left.
The Ninja Scripts audience is professional: they manage campaigns during working hours and at a computer. The hypothesis was simple: show the ads only when and where that audience works.
⚠️ Trap: one night is a very small sample. Here the decision was taken as an experiment, with a date to review it, not as a conclusion.
Lever 1: desktop only
The platform does let you choose where a campaign runs. It is a campaign setting, not an ad group one, with these options:
| Option | What it covers |
|---|---|
| Desktop web | ChatGPT in a computer browser |
| iOS app · Android app | The mobile apps |
| iOS web · Android web | ChatGPT in a mobile browser |
| Web | All three web platforms at once |
With nothing selected, the campaign runs everywhere. Here only desktop web was kept.
Lever 2: a schedule the platform does not have
ChatGPT Ads cannot schedule by hour or by day: a campaign only has a start and an end date. If you want office hours, the only lever is turning the campaign on when the working day starts and pausing it at the end. There are two ways to do it:
- By hand, every day, in the Ads Manager. It works, but one slip leaves the campaign on all night or off all morning.
- With a tool that does it for you, which is what this case used: someone has to switch it on and off on time, every day, holidays included.
🔧 The Ninja Scripts panel solves this: in the ChatGPT Ads tool, the "⏰ Schedule" screen lets you pick days and hours per campaign, with performance by day and hour shown above, and the panel turns campaigns on and off every 5 minutes in the account's time zone. In "📱 Devices", with performance by platform in view, you change each campaign's devices and duplicate a campaign for a single device.
Two details matter if you build it yourself:
- Read before you write. Check the campaign's real status and leave alone one that is already as it should be, or one that is archived.
- Watch out for manual pauses. If you pause a campaign by hand while it is still on the schedule, the next run during scheduled hours turns it back on. To stop it for good, take it off the schedule.
Lever 3: one campaign per device to measure it
The report does give performance by platform, one breakdown per query (lesson 5). What it does not allow is a different bid or budget per device. If the numbers differ a lot, the answer is to duplicate the campaign and leave each copy on a single device:
- The copy inherits budget, objective, countries, ad groups, hints and ads, and starts paused.
- Remove that device from the original campaign, or both will show to the same person and compete with each other.
- Budgets add up. If the original spent 25 a day, you now have two campaigns at 25.
How to measure the result
- Compare weekdays with weekdays and the same kind of ad, before and after.
- Look at the real cost per sign-up, not clicks: fewer, pricier clicks can still be cheaper per sign-up.
- Wait at least two weeks, or a few dozen sign-ups, before deciding. If desktop does not improve, reopen mobile with an ad built for it: a resource people can use on the phone itself, such as an ebook, rather than a trial that needs a computer.
Summary
- Traffic that arrives and does not read is usually a fit problem between ad, moment and device, not fraud.
- Devices are chosen per campaign in the platform itself.
- Scheduling does not exist in ChatGPT Ads: you get it by turning campaigns on and off, by hand or with a tool that does it for you.
- To bid differently per device, use one campaign per device.
- Decide with enough data and on cost per sign-up, not on one night.