Ads suck… also for the publishers

illustration: a business woman who is stressed and frustrated

Nobody likes ads, obviously. But what came as a painful surprise for me is that they don't just annoy people who see them – but also those who try to monetise their projects. It's not just a matter of putting a few tags on your page and waiting for a big fat wire transfer.

The process is exhausting and I feel the need to rant about it, as well as maybe warn people who might be embarking on a similar journey… so here we go.

The system

In a perfect world, if I create a popular website, I could easily find someone who wants to use that advertising space, they give me money, I add their banner, everyone is happy. The ad is simply relevant to the page content, not the personal info about any particular user. In practice, though, unless you're a huge company with enough resources, finding advertisers and negotiating deals is a tedious task that a random programmer or creator just isn't equipped to do.

That's why ad networks exist – they facilitate the process, act as proxies between publishers and advertisers, and they take their cut. Cool concept, it really is. The problem, though, is the capitalist approach of squeezing the last bits of value from the process, at the cost of user experience, privacy and simplicity.

When I was researching ad networks last year, I only found one that was plain and simple: EthicalAds. It would've been perfect for my needs, if it wasn't for the fact that it's only applicable for websites that target software developers. I run a few of those, but they're too tiny to join the network, while the popular project that me and the rest of the collective wanted to use it for, Pronouns.Page, is for a totally different audience.

So it was more a choice of lesser evil than finding an ad network that we'd be totally comfortable with. Personally, I wanted to avoid dealing with Google, but it looks like most networks are strongly relying on AdSense anyway. We ended up trying three different networks so far, and today I've sent the third one a termination notice after having been in talks with the fourth network to switch to them. Let's hope that the fourth time will be the charm 😅

Hard to test for all users

I don't really wanna name and shame any specific companies, cause it seems like the issues are there all over the industry, plus some of our problems might be stemming from our own inexperience in the advertisement world (although that shows how inaccessible the process is to an average publisher).

One inherent problem with ad networks is that it's practically impossible to fully test how they will look on your website. I can put seven empty placeholders on the page, as instructed by an expert from the network, and then test it and see that three of them got filled out with ads – while you load the same page and see all seven. I might be shown ads of food delivery companies – while you get shown some disgusting foot fungus medication ad. Some networks let you pick the categories that will and will not be shown, and even review post-factum which specific ads have been shown to users and block those advertisers for the future – but others give you zero flexibility in that area. In general, algorithms, mathematical models, AI and real-time bidding have more say than humans.

Technical issues

But that's something that's, admittedly, hard to avoid in the existing ecosystem. Other issues were more avoidable. For example, when we first tried one network, it utterly broke our website. They offered a super simple setup – just give them access to your Cloudflare and they'll proxy everything, not only adding the necessary ad scripts, but also optimising the traffic and speeding up your page. Sounds cool, didn't work. Well, it probably does for most of their publishers, but in case of our PWA and some DNS entries their scripts were not expecting, we ended up with no ads and no ability to log in. Not fun.

You'd think that adding a script that's loaded after the rest of the page and should limit its impact for a bunch of clearly defined placeholder shouldn't really affect the performance of the page much. However, one network's scripts were somehow affecting us so much that we ended up switching to another mainly for that reason. Another broke an essential feature of the page in a way that was troublesome to debug.

Update: After installing Sentry we've found out just how much JS errors ad scripts produced, geeeez…

Volatile and unclear revenue

All the networks looked at our traffic numbers and predicted monthly revenue in the lower five digits area – the kind of money that we could set up a proper foundation with, run educational campaigns, spread our mission, employ people, make the project a full-time job, not just a side project of passion created in spare time. But in practice it was not just lower, but an order of magnitude lower. Still not bad, enough to cover the server, domains, cloud and other maintenance costs, do occasional offline stuff like printing our zine, creating pins, stickers and flyers and handing them out at Herts Pride and Toruń Pride, and distributing the rest among the contributors in a form of volunteer allowance. Basically, it's not some wild, life-changing money, but it keeps the project running while also rewarding contributors for our time and effort, and helping us pay our bills. So we're really grateful to be in that position.

What's really bugging us, though, is how volatile and unpredictable the whole thing is. Of course we're expecting ups and downs, but sometimes it can just randomly drop by half in the span of two months, with no explanation. One that we did get, I'm not kidding, is that after we've spent a lot of time optimising the setup with A/B testing, our ad units performed so well that the system counts the traffic as suspicious and just doesn't pay for it. Their proposed solutions (adding padding and labels to ads so that users are less likely to click on them accidentally) didn't help at all. And there's no one to complain about it, you just have to deal with it.

There are so many variables at play, it's super confusing and unclear. Our current ad network tripled (!) the number of ad impressions they were showing our users compared to the previous company, without it being proportionally reflected in the revenue or becoming more optimised for user experience with time.

Unclear reporting, inflexible setups

One network wouldn't show us any reporting for the first month, we were completely in the dark. And once we finally got access to the dashboard, it was way less useful than what other networks provided (eg. even trying to figure out which ad unit is which was not easy, because the dashboard simply didn't show their unique identifiers that are used in the code) – which we couldn't have known until we're a month in.

The flexibility of the setup varies a lot between the networks. For example, one has a simple button to switch their consent box from “Accept / More options” to “Accept / Decline / More options”, while another took two weeks to fulfil our simple request “we're not going live until declining is just as simple as accepting”. And none had an option to show the consent banner to everyone, not just people who are in jurisdictions where it's required by law, unless we implemented a big chunk ourselves.

Summing up, and the future

I'm sure we could make our setup better in one way or another. There might be a good balance somewhere, there's probably an ad network that's the best match for us that we haven't tried yet. But I don't want to be spending more time on making monetisation bearable than I spend working on the actual website. It's already a way more annoying and complicated project than I was expecting it to be…

We're currently onboarding with a fourth company, hopefully to be accomplished this week. They look very promising, so keep fingers crossed that they're actually what they seem to be and that this switch will be the last one 😉

We're also working on implementing an idea (which was also independently proposed by a user) to offer a subscription for a few bucks which would remove all ads for them and the visitors of their profile, add a “supporter” badge in their card, and support the project.

I really hope that works out, because dealing with the ads setup (even though personally I'm mainly helping with the technical side and am shielded from a lot of other bs) is really sucking the joy out of creating this passion project.

A photo of me

About the author

Hi! I'm Andrea (they/them). I tell computers what to do, both for a living and for fun, I'm also into blogging, writing and photography. I'm trying to make the world just a little bit better: more inclusive, more rational and more just.