Apple

As some of you may know, getting Yoink for iOS through Apple’s App Review was, to say it lightly, a bit of a pain.
In the end, I was able to release it, but a month late. Had this been my first app as an indie developer, there’s a good chance I would have had to declare bankruptcy now.
I am fortunate enough to have a couple of apps out already that create a steady income, but still, I spent about two months exclusively on this app, so it’s still scary thinking about how I got rejected over and over.

Long story short, here’s a couple of thoughts I’ve had during all of this.

TestFlight App Review

From the very beginning, I’ve had Yoink available to a couple of (awesome) testers via TestFlight.
Now, when you add a new app or a new version of the app to TestFlight, it has to go through a review before testers can download and test it.

My question, then, is: Why not reject the app right there if it doesn’t comply with the rules in the App Reviewer’s eyes?
If this is not checked, why have a review for TestFlight apps in the first place?

Or if that’s unrealistic for some reason, perhaps TestFlight App Review could give sort of a “likelihood of getting through the ‘real’ App Review”. Maybe on the levels of “yea, good luck with that” to “possibly, tentatively not going to be rejected”.

It would have saved me (and the App Review person) a *lot* of time and nerves had, for example, the File Provider extension been rejected right then and there for not being cloud-storage based. Or the keyboard, for not having a traditional method of input. Those are all things that could have been avoided, had TestFlight App Review caught these things.

Reasons for Rejection

Yoink was rejected for different reasons and in different areas of the app.
But those reasons were given to me one by one, one submission and “Waiting for Review” -> “In Review” cycle after another.
That’s *such* a waste of time (not only for the developer, but also for the reviewer. But *especially* for the developer).
Why not keep going after finding a reason for rejection and see if there are other issues after that? If so, the reviewer could note them all down and give them to the developer all at once, not one by one.

Notice of Escalation

When an App Reviewer isn’t sure about an app, the review is “escalated”, meaning it goes up one instance in the App Reviewer hierarchy to be reviewed by a “superior”.
That would be the perfect time to let the developer know in advance that, “look, review is going to take a little longer because we’ve run into an issue with your app. Please stay tuned, we’re working on it.”.
Not only would the developer know that it’s going to take longer for the app to be reviewed, they’d also have reassurance that the App Reviewer hasn’t forgotten about the app – anybody who had an app “In Review” for more than twelve hours knows that feeling 😉

In closing, I’d like to say that I have nothing but respect for App Reviewers. Their job is difficult and, mostly, unthankful.
But I believe a lot of grievances on both sides could be avoided if some of these suggestions were put in place.

Eternal Storms Software Logo

– – – Do you enjoy my blog and/or my software? – – –
Stay up-to-date on all things Eternal Storms Software and join my low-frequency newsletter (one mail a month at most).
Thank you 🙂

Read more

Last year, I started using the iTunes Affiliate Program.
The program allows you to make a little money by linking to your apps with your affiliate token and lets you track where clicks and purchases come from, as well.
I thought it’d be interesting to do a little retrospective, now that a year has gone by.

Using Affiliate Links

Turning an (Mac) App Store link (or almost any other iTunes – based link) into an affiliate link couldn’t be simpler.
All you need to do is append your affiliate token (like &at=your_token).
Additionally, you can provide context with your links so you can track them more easily later on.
For instance, I “tag” my links with “twitter”, “facebook”, “blog”, “website”, “newsletter”, “yoinkdemo” and so on.
That makes it very easy to track where your customers come from.

I use affiliate links for every iTunes link I share – be it an app of my own or that of another developer.

Tools and Info

There are tools available to you to make affiliate linking even easier, like John Voorhees’ Blink (for iOS).
I personally don’t use any extra software – I have a note in Notes.app with all my affiliate links and then just change the aforementioned context string.

If you’re interested in an in-depth look at the iTunes Affiliate Program, I recommend you read John Voorhees’ excellent comprehensive guide about it on MacStories.
It’ll get you up to speed on how to set it all up.

Where do Clicks Come From?

A very interesting aspect of the iTunes Affiliate Program is its tracking capabilities.
When someone clicks your link, you know:

  • the country the user is in
  • when the link was clicked
  • the context string you provided for the link (like “website”, “blog”, etc)
Live-View of Clicks on Links

A click presented in the live-view of iTunes Affiliate Program’s dashboard. I can see the click came from the US, and from within Yoink‘s “Demo Expired” window.

Furthermore, it tracks what the user purchased – a Mac app, an iOS app, a song, a book, etc.

Top 5 Countries

Based on the number of clicks, the top 5 countries from where people click on my links are:

  1. United States
    22,498 clicks
    $254.15
  2. Brazil
    924 clicks
    $4.96
  3. Germany
    570 clicks
    $76.70
  4. United Kingdom
    91 clicks
    $46.10
  5. Spain
    50 clicks
    $19.17

Apparently, more clicks don’t automatically equal a higher payout.

Conversion Rates

The program allows you to see the conversion rates for your links.
Who really purchased after clicking my link? Here’s what I found out:

  1. 38.62% purchased an app after clicking a link on my website
  2. 25.70% purchased an app after clicking on the link from the “demo expired” window inside the app
    (I haven’t had the affiliate link in the “demo expired” window in Yoink for the entirety of the year, more like only half a year)
  3. 00.72% purchased something when they clicked on a link on my blog

I can’t be sure what the user purchased – once a user clicks a link with an affiliate token, that token is used for the next 24 hours for that user.
Which means that they might click on a link for Yoink, but don’t purchase it. Then, some hours later, they purchase a book on the iBook Store – that will count towards that link’s conversion rate.

A Year of iTunes Affiliate Program Links

Here’s the gist of my first year in the iTunes Affiliate Program:

  • Clicks: 24,647
  • Items Bought: 4,465
  • Revenue Generated: $ 9791.12
  • Payout: $ 685.38
  • Average Conversion Rate: 18.12%

Granted, $685.38 isn’t a lot, but it’s money I wouldn’t have seen otherwise, and as an indie developer, every bit counts 😉

Eternal Storms Software Logo

– – – Do you enjoy my blog and/or my software? – – –
Stay up-to-date on all things Eternal Storms Software and join my low-frequency newsletter (one mail a month at most).
Thank you 🙂

Read more

10904415 10205535099647537 6831010725206999453 o

Apple is currently featuring Yoink on the Mac App Store, in the category “New Year, New You”, and it’s in great company with the very popular apps MindNode Pro, 1Password, OmniFocus and Evernote.
I couldn’t be more proud and humbled.

This certainly wouldn’t have happened without all of you, so

Thank you!

—-
My name is Matt, I’m the developer of Eternal Storms Software. If you’d like to comment, you can catch me on twitter here: [twitter-follow screen_name=’eternalstorms’ show_count=’yes’] or by eMail.

Read more

One of my biggest gripes with the App Store is not being able to contact customers who leave a review directly.

A tweet by @fafner (developer of the App MindNode) today, August 13th 2014 in which he asked if developers read reviews on the App Store, made me think about this some more.

The one thing I really miss about selling Apps on my own, outside of the App Store, is the contact you have with your customers.
If there was a problem with one of my Apps, they had to contact me directly, since there was no other way. And we could take things from there, have an ongoing stream of communication.

With the App Store, customers are inclined to leave a review of my App with feature requests, bug reports or more general criticism rather than contact me directly. Even though I make it very easy to write me through my website and the Apps themselves.

While I really appreciate every review, there’s nothing more frustrating than getting a review about, say, a request of a feature that, unknown to the reviewer, has already been implemented and not being able to tell them about it (replying to the review with another review of your own app is possible, but there’s little to no chance the customer will ever read it, plus you’d have to rate the App to do so and that opens up an entirely different can of worms (in short: don’t do it)).
Or even worse, you get a bug report and you can’t contact them for more information in order to reproduce it.

What I currently do when this happens is fire up google and search for the reviewer’s nickname – a more than often lengthy procedure. When a Twitter, Facebook, YouTube, tumblr (and so on) account finally comes up, I use that to contact them, well aware it might not even be them – it has happened before that I contacted someone and they were the completely wrong person. It’s embarrassing, but they usually understand and think nothing of it.

It takes a lot of time and nerves that’s only worth it if you have the right person in the end. Otherwise, that time could have been so much better spent.
Additionally, you’re never entirely sure if they check their messages on YouTube, for example.

I understand why the App Store doesn’t allow for direct contact from the developer to the customer. First and foremost, it’s a privacy issue and that’s more important now than it ever was.
Threaded comments on the App Store seem unappealing to me as well plus it could escalate quickly if the customer or developer gets upset for some reason, so threads would have to be curated somehow. Also, other people could chime in in what was meant to be a two-way communication. Unfavorable as well.

Nevertheless, a solution on Apple’s part would be favorable. Actually, I’ve filed bug reports (radars) with Apple on how they could improve this.

They are based on the premise that not the developer initiates contact, but the customer does (and why wouldn’t they want to – they bought the App, they want it to work).

One (rdar://13367865) is to pop up a “Contact Developer” button when a user selects two or less stars for a review on the App Store. It might also be based on keywords (crap, useless, sh*t come to mind ;))
So the user selects one star and before they can click send, another button is shown directly next to it asking the reviewer to contact the developer. Problem solved.

The other one (rdar://13379347) is for crashes. You know how, when an Apple App crashes, you get a text area to supply some more information and send that to Apple?
This could also be done for third-party Apps.
The developer could supply their support email in the Info.plist (a collection of metadata for the App, like version, copyright info, etc) in the App’s bundle.
When the crash happens, you get a crash report window. Additionally to the buttons “Reopen” and “Cancel”, there could be a “Contact Developer” button, if the email has been supplied in the plist. You click it and it opens up a new mail message with the crash report already attached, leaving the possibility for more info (or it is done in-window like the Apple App Crash dialog).

Developers do get crash reports through Apple’s iTunes Connect, but that’s all they get. There’s no contact information attached (again because of privacy issues, of course).

It surprises me that not more work has been done in that area on the App Store.

—-
My name is Matt, and I’m the developer of Eternal Storms Software. If you’d like to comment, you can catch me on twitter here: [twitter-follow screen_name=’eternalstorms’ show_count=’yes’] or by eMail.

Read more