How Apple stole ad revenue from our company, and how it can happen to you

For several years now, the app development company I own has maintained GradePro, a grade reporting tool for K-12 students. Without going into specifics, the app generates a fair amount of revenue through Apple’s iAd program. We’d been serving these ads flawlessly for years, up until mid-September of 2015 when I discovered that ads had not be served for several days.

With the end of the six weeks grading period approaching (when usage is highest), I knew I needed to resolve this problem ASAP. Quickly I verified that nothing had changed in iTunes Connect — no new contracts appeared, no app update had been submitted recently, nothing. Thoroughly confused, I contacted Apple developer support by phone. They were friendly enough and passed my situation along to the iAd team. Here’s where things started going downhill.

Resubmitting the binary

After nearly two weeks of waiting for a response, I finally received a reply on October 1st:

Due to a technical error, you [need] to re-upload your app binary and submit it for review.

Immediately I found this response to be fishy. No update had been submitted to the app recently and the date the ads stopped didn’t coincide with the release of iOS 9. I asked for clarity:

How could a technical error cause this if it did not coincide with an update? I’m guessing then that the technical error is on Apple’s end.

To which I received:

Due to a technical error on our end, please re-upload your app binary and submit it for review in order to be eligible to receive ads from the iAd App Network.

While the reasoning still seemed suspicious, it appeared to be an easy fix. I resubmitted the binary with no changes and requested an expedited review since the error was on Apple’s end. Because I’d had little trouble getting expedited reviews in the past, I figured I’d receive one without difficulty. I was very wrong.

After having several requests denied, calling Apple numerous times, and expressing my frustration with losing revenue due to a problem exclusively “on [Apple’s] end,” I was finally able to reach a review team member by phone who understood my situation and expedited the review. The update released on October 13th.

Waiting for ads to show back up

Finally, after a month of no iAds in GradePro, the re-uploaded binary was approved. According to the iAd team member, iAds should work again, which was great news! Except not, because the problem remained.

At this point my frustration peaked; I had spent almost a month without iAd revenue, the end-of-grading-period usage spike had already passed, and I was back to square one: no ads, and no explanation for why.

Square one

Immediately, I called Apple’s support for the dozenth time and had them escalate the case within the iAd team. Over one week later on October 21st, I was finally told the real reason for why iAds had stopped showing up:

Upon further review, we noticed an unusual amount of unique taps on iAd banners in your GradePro app. As a result, we have disabled ad serving for this app.
As stated in the iAd App Network Contract, developers are not allowed to use any means to artificially increase the number of impressions or tap throughs available or encourage user click throughs on banners.

It’s important to note that the GradePro app has only one iAd banner at the bottom of the screen and has never done anything to artificially increase the number of impressions or taps. No messages, no movement trickery, no content that sits behind the ad before the ad suddenly appears, nada; in fact, we encourage users to remove the ads by way of an in-app purchase.

Here’s where this affects you

So what triggered this action? A usage spike. That’s it, a simple spike in usage which directly correlated to an increase in iAd taps. The day iAds were taken away was a Monday, a day that generates far more revenue than Sundays do, since nobody cares about their grades on the weekend. (If you did, then I admire your dedication.) On top of that, mid-September is when many school districts activate online grading, causing students to begin checking their grades for the first time since the last school year.

To illustrate this with data, the week iAds were disabled saw a 34% jump in sessions from the previous week and a 89% increase in sessions from the week before that. Compare that to a nominal 4% increase in sessions for the following week.

You should be very concerned by this. This means that any usage spike for your app can completely eliminate your iAd revenue. Launch a new advertising campaign? Usage spike. Get some lucky press coverage? Usage spike. Your app gets featured? Usage spike. Your app simply goes through cycles like ours does? Usage spike. Soon enough, the usage spike you were celebrating just turned off your primary revenue stream. No notification, just gone. That’s really, really bad.

All better?

After a firmly worded reply detailing my grievances, the iAd team reinstated iAds for GradePro. iAds finally starting appearing like normal on October 22nd.

But that wasn’t the end of it. I was just told today that we won’t ever receive the first half of September’s revenue. That’s two weeks of revenue that was earned before the usage spike triggered the iAd ban, revenue that Apple has sitting in their pockets now. Two weeks of ads being displayed in GradePro that advertisers were paying for, that we will never receive our cut of.

How Apple can better handle this situation in the future

There were a number of egregious mishandlings associated with this situation, each with relatively easy and needed remedies. I’ve laid out my thoughts on where improvements are most needed:

  1. Going forward, Apple should send a notification that iAds were deactivated, detailing why and what to do next.
  2. The iAd team should more carefully review why iAds aren’t showing up in an app. In this instance, they originally misstated it as a “technical error on [Apple’s] end,” which cost four weeks of lost revenue.
  3. Apple should investigate suspicious apps more closely, and/or work with the developer to see why there is an unusually high number of iAd taps.
  4. The iAd team should be reachable by phone in critical circumstances.
  5. The iAd team should not take an average of 1–2 weeks to reply to messages.
  6. Any revenue earned before an issue arises should still be paid out.

Final thoughts

As badly as I want to change how these situations are handled for other developers, I do not have that in my direct power. However, all iOS or future iOS developers should be concerned about this problem. Any usage spike in your app(s) can potentially permanently disable iAds. The only way any change can be affected is by making developers aware of this problem and the need for correction. For me, this mishap didn’t have huge financial ramifications, but another developer may be relying on iAd income to support a family or loved ones.

Thanks for taking the time to read this. If you have thoughts, let me know in the comments.

Show your support

Clapping shows how much you appreciated Wes Cossick’s story.