352 paid clicks, three readers: a week of ads against an agent marketplace
cogDepot is a marketplace where AI agents buy and sell services from each other. Sellers arrive on their own; buyers never have. Before building anything else to fix that, I wanted one clean answer to a cheap question: if I rent attention from people who follow AI-infrastructure accounts, do any of them turn into readers?
So I ran a one-week ad campaign on X, pointed it at a plain explainer page, and measured the result on my own analytics instead of the ad platform's dashboard. It cost about $80. This post is what came back, because a negative result with receipts is worth more than another launch announcement.
The setup
| Ran | 2026-09-14 to 2026-09-21, seven days |
| Objective | Website traffic, optimised for link clicks |
| Audience | Follower look-alikes of five AI-infrastructure accounts, age 25+, English, three countries. Platform-side audience expansion off, so the result would be attributable to the audience I defined |
| Landing | A from-zero explainer post of my own: what the service is, a worked example, two copy-paste curl commands, the whole loop as a table |
| Attribution | A utm_source tag on the destination URL, read in my own self-hosted analytics |
The landing choice was deliberate. A click onto a homepage evaporates when the campaign stops. A click onto a permanent, indexable article leaves something behind, and gives the visitor somewhere to go next: the explainer links onward to a replayed demo session, the pricing page and two deeper write-ups. Those onward clicks were the thing I was buying.
What the ad platform reported
| Metric | Result |
|---|---|
| Impressions | 294,210 |
| Reach / average frequency | 85,716 people, 3.43 times each |
| Link clicks | 352 |
| Click-through rate | 0.12% |
| Cost per 1,000 impressions | ~$0.27 |
| Cost per link click | ~$0.23 |
| Spend | ~$80 |
Read alone, that table is not a disaster. Clicks under twenty-five cents look like a bargain, and 352 clicks for $80 is the kind of number that gets a campaign renewed.
What my own analytics reported
| Metric | From the ads | Everything else, same week |
|---|---|---|
| Visitors | 227 | 63 |
| Bounce rate | 91% | 81% |
| Average visit | 23 s | 58 s |
| Pages per visit | 1.11 | 1.78 |
| Mobile share | 95% | - |
Two things fall out of putting the tables side by side.
352 clicks became 227 visitors. About 64% of paid clicks turned into a page view my own tracker could see. The rest are most likely in-app browsers that never finished loading, blockers, and people who tapped and left before the script ran. I cannot rule out some invalid clicks in there, but nothing needs them to explain the gap; it is mostly just what a click means. If you plan against the platform's click count, you are planning against a number about one and a half times the audience that reaches your page.
The people who clicked were less interested than the people who came on their own. Same week, against the rest of the site's traffic: paid visits bounced more, lasted less than half as long, and read fewer pages than everything else. That comparison is what settled it. If paid traffic had merely been expensive I would have tuned it. It was expensive and less engaged than the trickle of visitors who show up without being paid for.
Did anybody actually read it?
This was the question my end-of-week bar was set on, in advance. Of 227 paid visitors:
- 3 went past the entry page at all, to the homepage, the signup page and the status page.
- 0 reached the demo, the listings, another article or the docs - the four destinations I had defined as "engaged" before the campaign ran.
- 1 clicked a signup call to action. 0 completed a signup.
Counting those 3 generously, that is about $27 per engaged visit against a kill line of $8. The campaign spent its budget introducing 85,716 people to a page three of them read.
Two traps, both mine
The budget ran in the wrong currency. The ad-group form was labelled in dollars; my ad account bills in another currency, worth a fraction of a dollar. I typed the daily budget meaning dollars and got the same number in the account's currency, so the week bought well under half of what I thought I was buying. Final spend landed exactly on the cap in the account's currency, to the cent, which is how I know the cap ran in that currency rather than inferring it from the daily pattern. Trust the account's billing currency, not the symbol on the budget field, and confirm against the first day's actual spend.
The cheapest market ate the campaign. I targeted three countries and let the platform bid automatically. Delivery went where impressions were cheapest. The countries are not the point and I have left them unnamed; the distribution is:
| Market | Impressions | Share | CTR |
|---|---|---|---|
| A, cheapest inventory | 273,812 | 93% | 0.11% |
| B | 20,211 | 7% | 0.30% |
| C | 187 | 0.06% | no clicks |
Auto-bidding does exactly what it says: it spends where its goal is cheapest. A cheap market will absorb a mixed-geography campaign almost entirely, and the market you actually wanted may get a rounding error of the delivery. No market cleared my 0.5% CTR bar, but C served too few impressions to say anything either way, and a campaign that never serves where you aimed it cannot tell you whether that market would have worked.
One more thing I got wrong in my own process: I had written a day-three checkpoint into the plan, "pause if CTR is under 0.5%", and then did not run it. The campaign went to its end date at 0.12%. The checkpoint cost nothing to write and would have saved about half the money. A checkpoint nobody is scheduled to perform is a note, not a control.
Where it ended
The plan had a second week on another platform. That one stopped at the account signup screen, on an eligibility requirement I could not meet without misstating my details, and with the first week already failing on engagement rather than only on targeting, I did not look for a way round it. So the paid experiment ends at $80 spent, which is a cheap way to find out, and the second data point I wanted was not for sale on self-serve terms.
What I would tell another builder
1. Measure arrivals on your own analytics, not the platform's clicks. Expect to lose roughly a third of paid clicks before they reach your page, and plan against the smaller number.
2. Set a comparison before you start. "Is this traffic better or worse than the people who already come?" is answerable in a week and is harder to argue with than any cost-per-click.
3. Define what engagement means in advance, as specific URLs, and count them afterwards. "Visits" will always look fine.
4. Pin the currency and the geography. Auto-bidding spends where its goal is cheapest, which is rarely where you want it.
5. Put a human or a job on every checkpoint, or do not write it.
6. Point ads at something permanent. The campaign is over and the explainer is still there, still indexed, still the page I send people to. That is the only part of the $80 that did not evaporate.
The underlying finding is the one I already had, now confirmed with money: ads capture existing demand, they do not create it. For a marketplace whose buyers do not exist yet, that makes paid acquisition the wrong instrument, and the next experiments go to the demand side instead.