No results found

Try a different or more specific query
Developer Console
Appstore Blogs

Appstore Blogs

Want the latest?

appstore topics

Recent Posts


Showing posts tagged with marketing

December 02, 2014

Mike Hines

One of the top priorities for most developers is acquiring new users. Apart from organic channels like referrals, top charts and reviews, developers can also use paid ads to drive downloads and installs. Starting today, developers will now be able to target Fire tablet customers with Facebook mobile app ads

Drive More App & Game Downloads on Fire Tablets

Facebook’s mobile app ads for installs can help you acquire new users on Fire tablets. When a customer is in the Facebook mobile app or on Facebook on mobile web on their Fire tablet, they will see an ad for your app with a call to action button like “Install Now”. When the customer taps the ad, the Amazon Appstore client will launch to the detail page of your app, and the customer will be prompted to install the app.

These placements and the exposure they provide can drive significant traffic and help you grow your installed base quickly.

Creating a Facebook Ad is Easy

Facebook ads are easy to create and come with flexible targeting options to reach Facebook’s large audience of users effectively.

If you choose to integrate Facebook’s SDK, you will be able to track how well your ads are converting from impressions and clicks to eventual installs. You can also alternatively use SDKs from one of Facebook’s Mobile Measurement Partners to measure performance of your mobile app ads.

Create an ad for your app on Fire tablets by visiting Facebook’s Mobile App Ads for Installs to learn more and get started.


October 24, 2014

Corey Badcock

In just over month, the holiday season officially kicks off. Connected devices like phones, tablets and streaming video set-top boxes continue to be popular gifts. And for app and game developers, this means a bonanza of downloads and new customers.

To help you get focused, we’ve compiled three stats that are important for mobile app developers:

1. App Purchases Surge by 50% Thanksgiving Week

The holiday season unofficially kicks off on Thanksgiving, and it’s also the unofficial kick-off to a very lucrative season for mobile app developers.  Maybe it’s the extra free time people have because of the holiday, or perhaps it’s treating themselves to new tablets and phones on Black Friday, but what we have seen is clear: customers purchase 50% more apps Thanksgiving week, than an average week the rest of the year. 

Put another way, you will get 50% more revenue in this one week than you would on any other average week this year. 

Submit your app now to make sure it’s available for Thanksgiving week.

2. Fire Tablets See a 24X “Bump” on Christmas Day

Thanksgiving week is a good start, but things really start to get interesting on Christmas day.  According to Flurry Analytics, Amazon sees a particularly large number of device activations on Christmas day—24 times the typical number for any other day in 2013.

This is a huge opportunity for Amazon Appstore developers.  The Amazon Appstore is preloaded on Fire tablets, Fire phone and Fire TV, so when the holiday “bump” happens, your apps and games will be ready to be discovered and downloaded by new customers. 

3. App Purchases Increase 400% During Digital Week

What is the single best week for app developers?  The aptly named “Digital Week” sees app purchases surge by 400% versus the next highest week.  Digital Week is the single biggest week of the year for app developers, and it’s easy to see why.  When customers unbox their new tablet or phone, what’s the first thing they do?  Start downloading apps and games of course! 

And just a reminder: The Amazon Appstore is available on more than just Fire devices. The Amazon Appstore is also pre-loaded on millions of Android devices and hundreds of thousands of Android customers have already downloaded the Appstore on their own. The Amazon Appstore is also preloaded on BlackBerry 10 devices throughout the world, giving you access to even more customers. And the latest Amazon shopping app fully integrates apps and games into the shopping experience enjoyed by millions of customers. So when customers are searching for products in the Amazon shopping app, they’ll also discover relevant apps and games that they may also enjoy.

Submit Your Apps Now to Maximize Your Holiday Bump

The Amazon Appstore has never been available on a broader range of devices and platforms.  Want to reach more customers during Digital Week?  Submit your app now to make sure it’s available for Thanksgiving week.

Click here to register for a Free Amazon Developer Account.  Click here to test your app and get feedback in 90 seconds or less.  Ready to submit?  Click here.




October 17, 2014

Mike Hines

One question developers commonly ask is: how can I increase downloads and reach new customers?

The first step in this process is to start with the basics.  When a customer decides they want to learn more about your app, your detail page, screenshots, icons and video are what drives conversion and downloads.

Watch this quick video to learn 4 tips to help you increase downloads and reach new customers by sweating the details and nailing the basics.


Want to learn more?  Check out our free online course, The Indie Dev's Guide to Promoting Apps and Making Money.  Enroll today to learn how to become a successful mobile developer by engaging users, earning more with your app and using data to make good decisions.




October 14, 2014

Rena Watanabe

In the Bay area? Check out the 3 Amazon Appstore days at AWS Pop-up Loft. Meet 1:1 with developer evangelists, learn about the Appstore in technical sessions, participate in the Appstore Port-a-Thon, and gain hands-on experience through our self-paced hands-on monetization services lab. Plus, each day we will be raffling off Fire TV’s and the brand new Fire tablets. Register now to attend.

The AWS Pop-up Loft is a space located in downtown San Francisco where startups and developers are invited to stop by, hang out, and receive free in-person technical guidance from Developer Evangelists, Product Managers, Support and more.  

Click here to attend the Pop-up Loft

Plug in, hang out, and learn from your peers. All are welcome. You can reserve a spot at any of our activities or sessions, or drop in knowing availability is on a first-come, first-served basis. And we’ll have snacks, drinks, and a bike rack to park your pedals.

Hours and Location

The Appstore team will be at the AWS Loft at 925 Market Street in San Francisco on Wednesday, October 22, Monday, October 27 and Tuesday, October 28 from 1PM-5PM.  

Check out the full agenda below…

Wednesday, October 22 | Jesse Freeman, Developer Evangelist, Amazon Appstore | 1PM-5PM


Reach More Customers by Bringing Your App to the Living Room with Amazon Fire TV

Developing for Fire TV can help you increase your customer reach by putting your app in front of an engaged audience in a new setting. With powerful performance and features such as second screen and multi-controller support, Fire TV gives you a familiar Android-based platform to extend your apps and games into the living room.

Join us for a technical presentation where you will learn about Fire TV’s capabilities, using the SDK to optimize for the 10-foot experience, and implementing controller support.

2:30PM – 5:00PM

Ask an Evangelist

Get guidance on technical topics, learn about our products and services, or come with any question about anything else Amazon Appstore related.

Monday, October 27 | Peter Heinrich, Developer Evangelist, Amazon Appstore | 1PM-5PM


Increase User Engagement by Making Your App Smarter with 3 Easy Tips

Deeply engage users and encourage them to return more frequently to your app or game with 3 easy tips.  We’ll cover how to use A/B testing to fine tune app performance, bring users back again and again with the app widget, and implement analytics to improve player experience and retention. Learn how to deliver users to the heart of your content and make it easier than ever for them to engage with your app.                                                                                                                                                                                                                         

Join us for a technical presentation where you will learn how to integrate A/B Testing, the app widget, and implement analytics to improve player experience and retention in your app or game.


Amazon Appstore Port-A-Thon

Did you know that 75% of Android tablet apps we tested just work on Fire tablets with no additional development? Attend the Amazon Appstore Port-A-Thon with your Android or HTML5 web app and your app may be published in as fast as two hours. Testers and evangelists will be on-site to speed you through the submission process and answer any questions. Receive a $25 gift card upon submission of your app (limit one per developer).

Tuesday, October 28 | Peter Heinrich, Developer Evangelist, Amazon Appstore | 1PM-5PM


Make Money from Your Apps and Games: Paid Downloads, In-App Purchasing, and Mobile Ads

Calling all apps and games, whether for mobile or tablet devices, Amazon wants to help you improve monetization through pay per download, in-app purchasing, and/or mobile ads. In this session you’ll learn how to take advantage of Amazon’s 1-Click purchasing technology. We’ll show you how to implement In-App Purchasing to offer digital content and subscriptions (e.g., in-game currency) for purchase within your app. And, we’ll cover the Mobile Ads API that offers an in-app display advertising solution where you are paid on ad impressions served instead of clicks on ads. We’ll share best practices and walk you through how to implement these monetization options.


Self-paced, Hands-On Lab

Bring your laptop and app or game for a hands-on lab where you will learn how to maximize your app earning potential. Decide whether Amazon In-App Purchasing and/or Mobile Ads is right for you, and integrate during this hands-on portion of the afternoon.

Special Offer:  Integrate the Amazon Mobile Ads API for the first time into your app or game during the hands-on lab and receive a $50 Gift Card.


Ask an Evangelist

Get guidance on technical topics, learn about our products and services, or come with any question about anything else Amazon Appstore related.






September 19, 2014

David Isbitski

On September 9th, Amazon announced the updated Amazon App for Android – the primary Amazon shopping app enjoyed by millions of customers. The new Amazon App for Android phones provides an award-winning mobile shopping experience on hundreds of millions of physical goods and now enables customers to discover and purchase all of Amazon’s digital catalog - including Amazon Appstore apps and games – from one app. It’s never been easier for Amazon Appstore developers to reach new customers.

Reach Millions Of Customers on More Devices

Millions of customers already enjoy the benefits of Amazon Prime membership. The new Amazon App for Android combines the fast and easy mobile shopping experience customers have come to know and love with access to unlimited streaming of tens of thousands of movies and TV episodes from Prime Instant Video.  Now, your apps and games are directly integrated into that experience, and you have a new channel to reach customers. Current Amazon Appstore developers don’t have to do anything; your app is already included in the new Amazon App for Android.


Want your App included in the Amazon App for Android catalog?  Click here to register as an Appstore developer.

Make More Money with the Amazon Appstore

The Amazon Appstore has never been available on a broader range of devices and platforms.  It’s no wonder 65% of the surveyed developers also say that the Total Revenue achieved on the Kindle Fire is similar to, or even better than, what they experience with other major platforms.

The Amazon Appstore is integrated into Fire tablets, Fire TV and Fire phone devices. Earlier this month, we announced that Fire TV and Fire phone are now available in the UK and Germany. Back in August, we announced the expansion of the Amazon Appstore to 41 new countries, including Egypt, Indonesia, Singapore and Turkey. So publishing your Android app on Amazon means you reach customers from around the world.

The Amazon Appstore is not just available on Amazon devices. This announcement further expands the distribution of Appstore apps and games on Android devices.  And coming this fall, the Amazon Appstore will be preloaded on BlackBerry 10 devices globally, giving you access to more customers with Amazon.

How Do Developers Make Their App Available?

Most Amazon Appstore developers don’t have to do anything; as long as you clicked the box for “compatibility with non-Amazon devices” on the Developer Portal, your app is generally already included in the new Amazon App for Android. Developers who have a check within their app to see if their app was installed on the device by the Amazon Appstore will need to modify their code to include a less specific check to see if their app was installed by Amazon. Want your app included in the Amazon App for Android catalog?  Click here to register as an Appstore developer – it’s free.

Now Is the Time to Submit Your App

Submit your app today to get your app or game included in the new Amazon App for Android.  Most apps just work with no additional development required.

Click here to register for a free developer account.  Click here to test your app and get feedback within 90 seconds.


- Dave (@TheDaveDev)


September 10, 2014

Judith Hoffmann

On September 3rd, we announced the availability of Fire TV to customers in the UK and Germany, and this week we released Fire phone to customers in both countries. German developer HandyGames launched titles on both Fire phone and Fire TV when these devices were announced in the US and have leveraged the new technological features to create engaging user experiences.

Recently, we had the chance to sit down with Chris Kassulke, CEO and co-founder of HandyGames, and our interview was the perfect opportunity to learn insights and tips for new developers that want to explore opportunities on Amazon devices. 

HandyGames is a developer and publisher of mobile games based in Giebelstadt, Germany. Founded in 2000, HandyGames has released more than 150 games on a multitude of mobile platforms, utilizing a wide range of technologies. With a strong focus on researching and developing new technologies as a way to be part of the next evolution in gaming, they develop games on Android, iOS, Windows Phone smartphones, Windows 8, OUYA, Tizen, wearables and tablet computers.

Fire Phone & Stage Dive Legends: Creating immersive games with Dynamic Perspective

When Chris and his team got a first glimpse of Fire phone, they were wowed. Immediately, they started brainstorming for game ideas that use the new technologies to its fullest. Fascinated by the head-tracking feature, Dynamic Perspective, Chris and his team tested its effectiveness and started building a game around it that creates an optimized device experience to delight customers.

“The head-tracking feature was really unique and we wanted our game to provide some kind of unique gaming experience that you won’t get with any other phone out there.”

The result was Stage Dive Legends, a brand new game that launched as a 2-week exclusive Fire phone game before being released on Kindle Fire HDX devices or any other Android platforms.

 “Stage Dive Legends is one of the first games that you can navigate completely without touching the phone itself. That’s so unique, it’s something completely unreal.”

For HandyGames, it is paramount to really explore new technology like Dynamic Perspective. According to Chris, it is up to the developers, not the distribution platforms, to advance and evolve the field of gaming. At the end of the day, if developers do not take advantage of the technology available to them, customers will not be able to experience it. Chris goes on to explain that it is HandyGames’ mission to explore the possibilities offered by distribution platforms and device manufacturers, and use it in a way that delights and surprised the end-user.

“You need to understand the platform. The users are expecting something new. They will be asking ‘Where’s the added value for me?’ And that’s what we do.”

With Dynamic Perspective, the user experience changes because people will not only be playing the game, they will be showing it to their friends. Due to the innovative technology, users will go back to a game to show off its capacities, where they would have otherwise moved on to a new game. Thus, novel technology can help sell the game through word-of-mouth marketing as well as keeping customers coming back to the game more often. 

Fire TV: Reaching new audiences by adapting mobile games for the living room

In addition to launching on Fire phone, HandyGames quickly jumped onboard to launch games on Fire TV with titles like Ninja Hero Cats, Farm Invasion USA and Save the Puppies.

Constantly seeking innovative ways to reach customers in the most effective way, HandyGames are moving away from a tablet/smartphone-only strategy, and seek to take advantage of the big screen experience.

“For us it was really important to be on Fire TV, because of our beyond-mobile strategy”.

As Chris explained, this strategy entails that the end-consumer should have access to their games, whether they are on the go or at home in the living room, and is the reason why HandyGames optimized all of their games for Fire TV. Chris adds that this makes a lot of sense for HandyGames, since their games are perfectly designed for the big screen with large graphics, and because they are easy to play with the game controller.

“As a next step, we will be optimizing all our future games for Fire TV, so the end-consumer can look forward to lots of exciting new content from us.”

Fire TV and Fire Phone Developer Resources

It’s free to register for an Amazon Appstore developer account and to download and use the SDKs for Fire TV and Fire phone.  Fire TV has the power to make your Android games shine on the big (home) screen; take advantage of the opportunity to publish them directly to the living room. Check out our online documentation and blog posts about developing for Fire TV.  Fire phone allows you to extend your Android app beyond today’s flat user interfaces.  Fire apps can take advantage of the new Dynamic Perspective and Firefly SDKs - two new breakthrough technologies that allow customers to see and interact with the world through a whole new lens. If you have existing Android or HTML5 apps, you can easily and quickly get your app up on Fire phone. Most Android phone apps will already work on Fire. To determine your app’s compatibility, simply submit your app using our updated testing service and get compatibility test results within 90 seconds.


September 02, 2014

Jesse Freeman

If you haven’t noticed, we are doing a lot to make the Amazon Appstore the ideal place to publish games. With a wide range of form factors covering tablet, phone, TV and dedicated game services, we want our platform to be the next stop for your title.

If you have been thinking about expanding your game’s user base, there has never been a better time to publish on the Amazon Appstore.

From Android To Fire – Chances Are Your Game Already Works

Our platform is the perfect fit for any developer publishing Android games. We’ve found that most Android apps we tested just work on Fire mobile devices. Chances are good that you will not have to change a single line of code to get your game running on our devices. We also support all the major game frameworks such as Unity, GameMaker, Unreal, Corona and Air. In addition, we even offer tools to help you publish HTML5 games just like native ones. Basically, if your IDE outputs an APK we can run it! So if you are developing for Android and looking for a new opportunity to expand your audience on mobile, tablet and TV you should check out our device lineup.

One OS, Multiple Form Factors: Phone, Tablet & TV

For the first time in Amazon’s history, we have a complete device ecosystem for publishing your game. Our devices are powered by Fire OS, a custom build of Android optimized to run exclusively on our hardware.

Got a mobile game? Try out our Fire Phone which features top end specs, dedicated GPU, 2gb of ram and unique features such as Dynamic Perspective and Firefly.

Building for tablet? We have several tablets, including two high-end versions called the Kindle Fire HDX, which come in both 8.9" and 7” sizes. Each tablet has blazing fast processes as well and high-resolution HD displays. Our Kindle Fire HD lineup also has great performance at a more affordable price point for customers.

Want to build your games for the big screen? Target Fire TV, which allows you to take Android games and publish them for the 10-foot living room experience.

Each of these devices has you covered no matter where you are coming from.  In addition to the hardware, we do even more to create one cohesive developer experience with our gaming services.

Gaming Services

We have services designed exclusively for game developers such as GameCircle. It’s integrated into the Fire OS and offers leader boards, achievements as well as cloud syncing of game data across devices. With cloud syncing we make it easy to not only backup your player’s game data but make it available on all of our platforms to better leverage Amazon customers with multiple Fire OS devices.

Anyone who owns a Fire OS enabled device has access to his or her own gamer profile. It moves with them across different Fire OS enabled device. This allows them to maintain their player stats and achievements no matter how they want to play. If your current game has leader boards, achievements and cloud syncing it shouldn’t take long to migrate over to our APIs. We even support Unity and other 3rd party game frameworks.

In addition to GameCircle, we also offer more APIs critical for building a successful game such as:

  • In-App Purchasing API can help with conversion by enabling millions of Amazon customers to purchase your game using Amazon 1-Click settings.
  • Amazon Mobile Ads serves up high quality ads to help you monetization your game. Right now you can earn a guaranteed $6 eCPM running interstitial ads through August and September (iOS apps, too!)
  • Amazon Coins is a virtual currency built into our Appstore, which developers can use as incentives with their customers.
  • Appstore Developer Select gives you more ways to get your app discovered and used with free advertising/merchandising and up to 500,00 Coins rewards.
  • HTML5 publishing tools for web developers looking for a simple way to get their HTML5 games on native platforms.

The Amazon Appstore

The Amazon Appstore is the main vehicle for you to distribute your game on our platforms as well on other Android devices. While the Amazon Appstore comes built into every Fire OS powered device, Android users can also download the store to access our library of apps and games. The Amazon Appstore offers customers a way to buy a single game across our devices or you can configure different APKs per devices via our multiple binary uploader. You have full control over how your game shows up on the store. If you are already building for Android, why not grow your reach with Amazon customers?

Get Started For Free

It’s completely free to publish your games to the Amazon Appstore. To become a developer, simply sign up at the top of the developer portal and create your own account. Once you submit your app, it goes through an approval process. This ensures that it works correctly on our devices before going into the store. Once in the store, you’ll have access to millions of Amazon customers looking for great games.

Additional Resources

- Jesse Freeman (@jessefreeman) is a Developer Evangelist at Amazon focusing on HTML5 and Games for the Amazon Appstore.


August 29, 2014

Mike Hines

Why do indie developers love the Amazon Appstore? 

Because they can extend their reach and make more money.  65% of developers say total revenue similar or better than other platforms.  Trevor Holyoak of says:

"Right now, the income is about five times better than Google Play"

Watch this video to learn more, then click here to register for your free Amazon Appstore account.  Already have an app?  Click here to test it.  Over 75% of apps we tested just work just work on Fire devices, with no additional development required.


June 11, 2014

Mike Hines

Our guest blogger today is Jason Mark, co-founder of Gravity Switch, a Design and Usability firm that has worked on projects for Disney, The Guggenheim, Dartmouth and Yale. In this post, he demonstrates exactly how important good design and the right screenshots are to your app.

Below are 7 apps. Can you tell which is targeted to women only? For doctors only? The most popular? And can you figure out which was made by a $2B company and which is home grown?

Please spend no more than one minute looking at the screenshots below and see if you can identify where they came from. Try to be aware of WHY you think this way.

Which is:

  • For women
  • For doctors
  • Most popular
  • $2B company
  • Home grown

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-2.pdf

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-3.pdf

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-4.pdf

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-5.pdf

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-6.pdf

Macintosh HD:Users:mihines:Pictures:BlogPictures:JasonMark:PastedGraphic-7.pdf

How did you do?

Studies have shown that within seven seconds of meeting someone, you’ve made at least TWELVE judgment calls about them. You have formed an impression of how wealthy they are, how educated, how liberal or conservative, how intelligent, how much fun, and more.

All in just seven seconds.

The same thing happens when a prospective client first sees your app icon and your screenshots. When a reviewer posts a screenshot or someone sees your paid advertisement, prospective customers are forming a lasting impression about things you many never have realized or intended. How trustworthy are you? How capable are you? How expensive are you? Are you a good fit for them?

If you haven’t given thought to these things, you’re missing a critical opportunity. If you’re not clear about what story you’re telling, then your audience will make up their own story and it definitely won’t be the one you intend.

The truth is, I don’t know which of these is for women, or which is a $2B company, but when I show this test to people they always have an opinion. And you probably did too. You probably *thought* you knew the answer to at least one or two of those questions.

Which is really what brand is all about, remember: Your brand is not what you say it is. Your brand is what other people say it is.

The right way to approach brand

Asking if you should make your icon green or blue is like asking if you should use a list or an array. It's not a committee decision to be made by amateurs. It’s a decision that should be made by trained experts who understand negative space, typography and color theory. 

While code is about functionality, design is about intent. It’s about what we want people to feel, and what do we want them to do (see: ).

A great designer starts by understanding your intent.  What do you want people to know, feel and do?  Once those things are understood, the details around how you accomplish those goals via colors and fonts is much easier.  You’ve already established the criteria – your intent – so it’s easier to make decisions on the details.

A great designer understands how margins and colors can convey the correct messages. They listen and reflect back where you’re going visually. They won’t ask which concept you like best, they’ll remind you of your goals and ask you which one “works” best, or if you have a really great designer they’ll TELL you which one works best. If you’re “stuck in the how" maybe it’s time you took things up a couple of levels.

You can find Jason on the following sites.


March 11, 2014

Mike Hines

If you are a developer who has had an app in our store for a while, or someone new to our platform, we encourage you to use Amazon Appstore and Kindle Fire badges and branding to help promote your app.  In this article we’ll review badges, other images, links and guidelines for their use with your app and marketing.


There are two badges with three color-treatments each that you can use. Here are the badges that you can use to promote the availability of your app in our U.S. store:

The Amazon and Kindle Fire badges above are available in English, Spanish, German, French, Italian and Japanese. The Amazon badges are also available in Portuguese.

You can get full-size downloads of these badges on this page, along with some usage guidance.

Other Images

If you’d like to use a plain icon:

Or if you would like to use a Kindle device image:

You can find links to those resources about half way down this page.

Links to the Amazon Appstore

For web-browser based linking, please:

Use this link structure:

Replace the bold “.com” with your country marketplace suffix. (.com for US, .de for Germany, etc)

Replace the bold “ASINnumber” with your mobile app’s ASIN (Amazon Standard Item Number) and app name. Please use an underscore (_) to separate the words in the “app_name” portion, if your title is more than one word. You can find the ASIN on the Product Details section of your mobile app on

For example, this is the Air Patriots link in the German marketplace:

For in-app advertising or mobile app-based linking:

In the US:

Use this link structure:

Replace the bold portions with the package name of your APK, and app name respectively.

For our international stores:

Use this link structure:


Replace the bold portion with the package name of your APK.

NOTE: With any of these link structures, please test the links before using them to make sure that they direct to the correct page or search results.

The link instructions above are pretty much identical to the guidance near the bottom of this page.

Other Useful Guidelines

There is still more good stuff on the handy page I keep linking to. This includes guidelines for correct use of the Amazon Appstore trademark when blogging or using social media to promote your app. I would, of course, be remiss if I failed to mention the legal requirements listed at the bottom of the page. Our attorneys have done a good job of breaking the important points down into easily readable bullet points. Please do look at them, it won’t take long.

Just in case you missed the link earlier, you can read all of this information here, on our developer portal.


February 26, 2014

Peter Heinrich

Most people prefer to use apps in their own language, but many developers consider app localization a dark art.  Where do you start?  How will your code change?  Who will translate?  If you’ve never localized an app before, the process can be intimidating.  It’s a critical first step, though, if you want to reach a worldwide audience.

Here guest blogger Jean-Claude Cottier demystifies app localization.  A veteran game developer and architect, Jean-Claude has spent 18 years developing 3D technology for AAA titles and mobile apps.  He has released many apps in the global marketplace through Ovogame, an indie studio he founded.  In this practical guide, Jean-Claude explains how to plan for localization, track and organize what will change, support different languages in code, and find translators to localize your assets.

Jean-Claude describes localization in detail and proves there’s nothing to be scared of.

Localization: a Winning Solution

Thanks to digital distribution, we now live in a global market and a lot of our potential customers simply don’t speak English. Having your applications localized will increase their global reach and will open new opportunities for your business. You’ll be more likely to find local partners and distributors interested in your products. Supporting more than one language isn’t a complex task once you’ve setup everything and streamlined your development process. Most of Ovogame’s applications are localized in many languages (English, French, German, Spanish, Italian, Russian, Japanese, etc.). It’s well worth it for us as we generate about 45% of our income from non-English-speaking territories. In this article, we’ll give you directions and tips about the technical side of localization. At Ovogame, we are using our own multiplatform engine (Fire OS, Android, iOS, Windows, OSX, BB10). As it is possible to use these techniques on all systems, we’ll stay as platform-neutral as possible.

No Text in Your Code

The best way to handle localization is to think about it from the start of your project. You shouldn’t treat your primary language (English) differently than the other languages supported by your apps. English may be set by default, but that should be the only difference with the other languages.

The golden rule is to NEVER have any text hard-coded inside your source code. Instead, it should all be stored in an external file (like any other data). Supporting different languages means creating different files per language and loading the correct one.

As you can’t have any actual text in your code, the best way is to handle them with keywords. For example, if you want to display a greeting message like, “Hello world,” you could use the keyword GREETING instead. Your code could look like this:

String message = Translate(“GREETING”);


The function Translate returns the correct sentence to display. If the application language is set to English, it will return, “Hello world,” but if it’s in French, “Salut monde.” The function Translate needs a simple list of keywords linked to their localized sentence. It will scan this list and once the right keyword is reached, it returns the corresponding text. In practice, it’s wise to cache this string; there is no point to call Translate every frame.

Using keywords is very nice because you can still understand their meaning when reading your code. As they are proper strings, you can build some of them dynamically (mainly when they’re indexed: RATING_0, RATING_1 …) to simplify your code.

Using Excel or Open Office

We like to use Excel’s files to store all our localizations and there are many good reasons for this choice. Everyone can view and edit these files, so the persons localizing or proofreading your text will be comfortable with this format. You can add more information (extra columns and lines) and use different colors to help them. It’s also easy to provide links to images (often better than a long speech). Basically, Excel is a very practical tool for creating and managing all your localization.

The other great advantage is that your database is automatically created. The relationship between your keywords and their localizations is obvious: each line contains a keyword and its corresponding translation (stored in two consecutive cells). We need a way to extract this information so you can use it in your application. Excel’s files are complex and coding a function to read such a file format would be a lot of work. Thankfully, we don’t have to do this because it’s easy to convert them into a basic ASCII text file. If you are serious about localization, you should handle text files supporting two bytes per character. If you want to localize in Japanese or Chinese, you must support this anyway. It isn’t mandatory, but it would be a shame to not support it. Simply store your characters in 16 bits instead of 8 bits.

Before converting your Excel file, you might want to do a bit of cleaning first. You should remove all unwanted information and just keep the first two columns (keywords and localizations).

If you are using Microsoft Excel to convert your file, simply save it as a Unicode text (*.txt) file. This new file contains only ASCII characters stored on 16 bits. As the following picture shows, it’s a very simple format. You can use it directly in your application.

Remember that every ASCII character in that file is stored using two bytes (16 bits). The file starts with a magic number (one character: ASCII value 65279) that you can skip. A TAB character (ASCII value 9) is used to separate the keywords from their localization. A carriage return (ASCII value 13 and 10) is used to separate the different lines. As you can see, it isn’t difficult to code a little function to load this file into memory and create a linked list or lookup table of these keyword/localization pairs.

If you are using Open Office instead of Microsoft Excel, you can save your files as Text CSV (.csv) (*.csv) using UNICODE for the ‘character set’ option. The file format isn’t the same as the previous one, but you won’t have difficulties figuring out the differences by yourself.

Selecting the Correct Language

At this stage, you have a specific text file for each of your supported languages. You just need to load the correct one. A nice little feature is to automatically select the language used by the device. So, if the device is set to French, your application could automatically start in French. With most platforms, it’s very simple to find out the language set on your device. For example, with Android, you can simply call a function from your Activity class:

	Configuration config = getApplicationContext().getResources().getConfiguration();

	String lang = config.locale.getLanguage();     

The function getLanguage returns strings like en (English), fr (French), de (German). You should check the value of lang and if you don’t support that language, set it back to your default one (en in our case as we want English to be default). This string will be used to identify the current language during your application life cycle, so keep it safe. You can use these abbreviations (en, fr, de…) to setup a simple naming convention for your files.

With this convention, it’s simple to know which file to load. Also, you can find out dynamically if a language is supported by your application: simply check if the corresponding language file exists. This way, you can add new languages without changing a line of your code. It’s always a good idea to make your code as generic as possible and let the assets handle themselves (data-driven instead of code-driven).

If you are developing your applications for different platforms (iOS, OS X, Windows, etc.), you’ll find similar functions as getLanguage on all systems.

Localizing Other Assets

Sometimes, you need to localize more than just text. You might have textures containing some writing. You should use the same naming convention as before.

To simplify your code, you can dynamically create the names of your localized textures using a simple function:

	String name = LocalizeName("gameover", "png");

The function LocalizeName concatenates the current language and the extension (.png in this example). So, if the language is Spanish (es), the name returned will be gameover_es.png.

You might have some assets that need to be localized in some languages but not for all of them. For example, in France, we are comfortable using the Anglicism ‘Game Over’ (translating it would actually sound weird). It would be a shame to duplicate the default asset just to create a fake localized one (gameover_fr.png). Instead, the function LocalizeName could test if the file exists (it’ll need the complete path for that). If the file doesn’t exist, the function should return the name of the default file. For our example, in French, LocalizeName would return gameover_en.png.

Finding the Right People

You should work with native speakers for all your localization. Don’t ever use automatic translation tools (online software) like Babel Fish or Google Translate. The result is so bad that you are better keeping your application in English.

There are many online services where you can hire translators, like and We haven’t used them, but they were recommended by fellow game developers.

We did find an alternative way to get very motivated translators. We ask our fans if they can do it. These people enjoy our apps and know them almost as well as we do. We develop a much closer relationship with these users than we would ever get from hiring someone via an online service. They are very keen on making the best localization. We send them beta builds so they can test if their localization is perfect. It really feels like they are part of the team.

Final Tips

Give your translators as much detail about your application as possible. If they can test a proper version (like our fans do), it is even better. The more they know about your application, the better they’ll localize it.

Be careful with the size of your UI (buttons, message box, etc.). Most English words are small compared to other languages. Usually, German words are very long and it might be wise to check if they fit in your UI as early as possible. It’s also useful to have a way to auto-scale your text, so you can be certain it will always fit inside a specific area (like a button).

Don’t hesitate to add formatting information inside your text. For example, “Chapter [NUM]” contains the tag [NUM]. We will substitute the proper index in code (Chapter 1, Chapter 2…). It’s very useful because for some languages, the formatting is completely different (in Chinese, it’s in the middle 第[NUM]章). Using this solution will remove most of the formatting problems.

There are many other aspects to be considered when localizing (fonts, testing, etc.), but that would be too long for this article. Hopefully, this quick overview has convinced you that the technical side of localization is accessible to anyone. It’s a simple way to increase the visibility of your application; you should do it.


January 23, 2014

David Isbitski

Amazon allows you to distribute your web apps and mobile-optimized HTML5 websites to millions of Amazon Appstore customers in nearly 200 countries across the globe.  With Amazon’s In-App Purchasing API for JavaScript you can increase revenue by enabling compelling monetization strategies.  This includes a "freemium" model for your app where the app itself is free but you charge a premium for advanced services or functionality.  Your web app can offer customers in app currency, subscriptions and entitlements all through the secure Amazon checkout process.

Getting Started

The first step in implementing In-App Purchasing in your web apps is to download the Amazon Mobile App SDK, then you will submit a new web app to the portal and then finally add a reference to the Amazon Web API libraries in your html. 

The latest versions of the Amazon Web API libraries are hosted by Amazon for you.  The current urls can always be found in the LATEST_URLS.txt file located in the Amazon Mobile App SDK folder.

<!DOCTYPE html>



    <title>Button Tester</title>

    <!-- Use of this sample code involves calling jQuery from Google

                 Hosted Libraries and is subject to the terms located here:



    <script src="" type="text/javascript"></script>

    <script src="" type="text/javascript"></script>

    <script src="" type="text/javascript"></script>

    <script src="js/buttonclicker.js" type="text/javascript"></script>

    <link rel="stylesheet" href="buttons.css"/>


Once you have referenced these JavaScript files you will have everything you need to access the Amazon In-App Purchasing API from your web app.

Setting Up Your Catalog

Before you can make any In-App Purchase calls you need to have a catalog of SKUs set for your web app to use.  You can add SKUs to your web app’s catalog by opening the Developer Console, selecting Apps & Services, choosing the web app submission you want to add SKUs to and then clicking on the In-App Items link, which will take you to the list of SKUs currently offered in your web app.

There are three types of SKUs you can offer to your customers.

·         Consumables – This type of purchase is available only on the device it was purchased on.  Some consumable examples include in-game currency or an extra power up in a game.

·         Entitlements – This is content that requires access rights such as unlocking additional game levels or offering specific magazine issues.  Entitlements do not expire, are tied to a customer’s Amazon account and are available on any device they access the content from.

·         Subscriptions – These are entitlements that are bound by a period of time which auto-renews at the end of the period and is tied to the customer’s Amazon account. Subscriptions are available on any device a customer accesses the content from. You are allowed to have multiple subscriptions for purchase within your app.


Simply click on the type of SKU you would like to add and you will be taken to a new screen where you can provide information about the SKU.  For example, if I wanted to offer an Entitlement purchase for my World of Warcraft Realm Status app to track a single realm I would click Add an Entitlement and then enter a Title and SKU.


Next you will need to enter pricing information for your new SKU.  In this case, I want to sell a Track Single Realm for $1.00.  Amazon gives you the option of setting your own list price for each marketplace or it can match the prices based on your entered base price.


You can also enter a detailed description, along with keywords for the Entitlement.  Descriptions can be provided in multiple languages and if no translations are given the default English description will be used.


You also need to provide images of the item for users along with the image you want displayed upon a successful purchase.


Once you  have completed this, click Save, and then Submit In-App Item.  You will be taken back to our In-App Items screen with the new SKU now listed.  In the upper right corner will be a button to download a JSON Data file. 

This JSON file will include a list of our SKUs that will be used by the SDK Tester Tool when we want to simulate a purchase in our development environment.


The SDK Tester Tool is included in the Amazon AVD Launcher emulators or it can be installed on a device via the APK included in the Amazon Mobile App SDK under the /Android/InAppPurchasing/tools.

The Button Clicker example includes a similar JSON file that covers all of the purchasable item types.

Purchase Process Flow

The JavaScript In-App Purchasing API is designed to encapsulate the complexity behind the purchase process while providing a fully featured API. While building your app, it is important to understand which parts of the purchase flow the app must implement, and which parts are handled by the Amazon Services library.

Note: In order to protect customers, we also require that you serve the page of your app that uses In-App Purchasing over  SSL/HTTPS. For more information, please refer to the Making Your Web App Safe documentation

Below is a simplified chart explaining responsibilities during the purchase flow.


In-App Purchasing API for JavaScript is comprised of three elements:

  • Amazon Services JavaScript - The class/API that manages the interaction between the application and Amazon's native APIs.
  • Purchase Handlers - The object your application provides to respond to callbacks from the Amazon Services JavaScript. They are registered as an observer to the Amazon Services In-App Purchasing API.
  • Receipt Verification Service - An HTTP service you should use to validate the customer's purchase receipt.

The process workflow between your JavaScript calls and the Amazon Services JavaScript library looks something like this:


You can deliver static content stored locally or dynamic content that is updated over time for customers.  For more details about the Purchase Process workflow and the types of deliverable content you refer to the Understanding In-App Purchasing for JavaScript API documentation here.

Implementing and Testing Purchase Calls

Now that you understand the process flow, have referenced the proper JavaScript libraries and have created a list of SKUs (or local JSON file) it’s time to call out to the Amazon Services in your own JavaScript.

Every call you initiate via the Amazon Services JavaScript Libraries results in a response received by the corresponding response handler specified in registerObserver(). Each of these responses makes use of a response object and includes the following:

  • GetUserIdResponse - Provides the app-specific UserID for the user currently logged into the Amazon Client
  • PurchaseUpdatesResponse - Provides a paginated list of receipts and revoked SKUs since the offset passed into the initiating request. Receipts are returned in a set and are unordered.
  • ItemDataResponse - Provides item data, keyed by SKU.
  • PurchaseResponse - Provides status on purchases initiated within your app. Any error for a purchase is automatically managed for you by In-App Purchasing API.

There are also purchase handlers, similar to the In-App Purchasing API for Android that have already been implemented for you inside the Amazon Services JavaScript files.  They include the following:

  • onSdkAvailable(onAvailableResponse) - This gets called when the In-App Purchasing services are ready to be called by your code. Production applications should not grant entitlements when they are run in sandbox mode.
  • onGetUserIdResponse(userIdResponse) - Called in response to GetUserId.
  • onItemDataResponse(itemDataResponse) - Called in response to GetItemData. data.itemData is a hash table of itemData objects keyed by SKU.
  • onPurchaseResponse(purchaseResponse) - Called to report the status of a purchase operation. purchaseResponse.purchaseRequestStatus contains the status of the response. If a prior session of the application shut down before a purchase response could be delivered, this function will be called when a new session of the application registers a purchase hander.
  • onPurchaseUpdateResponse(data) - Called with the list of entitlements that the user has been granted. data.receipts contains a hash table, keyed on SKU, that contains the receipts for the IAPs that have been granted to the user. data.revokedSkus has a list of SKUs that the user can no longer use.

Implementation of the Amazon Services JavaScript library is as follows:

  • Enable the API Tester
  • Register a Purchase Observer
  • Check to see if we are running in developer Sandbox Mode
  • Update any existing Purchases
  • Handle Purchase Responses
  • Store Receipts

For example, the Button-Clicker example starts off by calling an initialize() function which will set up an IAP observer using amzn_w.IAP.registerObserver() and then checks the response object to see if the web app is in debug mode.  If it is an alert box is generated telling the user the app is in development mode.  If not it will check for updated Purchases.

Finally, the function sets up handlers for Purchase Response and Purchase Updates Response objects.

// Setup

function initialize() {

    // Setup button press handlers
    $("#theButton").click(function() { buttonPressed(); });
    $("#redButton").click(function() { redButtonPressed(); });
    $("#greenButton").click(function() { greenButtonPressed(); });
    $("#blueButton").click(function() { blueButtonPressed(); });

    // Ensure we can call the IAP API
    if (amzn_wa.IAP == null) {
        console.log("Amazon In-App-Purchasing only works with Apps from the Appstore");
    } else {
        // Registers the appropriate callback functions
                 // Called the the IAP API is available
                'onSdkAvailable': function(resp) {
                    if (resp.isSandboxMode) {
                        // In a production application this should trigger either
                        // shutting down IAP functionality or redirecting to some
                        // page explaining that you should purchase this application
                        // from the Amazon Appstore.
                        // Not checking can leave your application in a state that
                        // is vulnerable to attacks. See the supplied documention
                        // for additional information.
                        alert("Running in test mode");

                    // You should call getPurchaseUpdates to get any purchases
                    // that could have been made in a previous run.
                    amzn_wa.IAP.getPurchaseUpdates(state.lastPurchaseCheckTime != null ?
                            state.lastPurchaseCheckTime : amzn_wa.IAP.Offset.BEGINNING);

                // Called as response to getUserId
                'onGetUserIdResponse': function(resp) {},

                // Called as response to getItemData
                'onItemDataResponse': function(data) {},

                // Called as response to puchaseItem
                'onPurchaseResponse': function(data) { onPurchaseResponse(data); },

                // Called as response to getPurchaseUpdates
                'onPurchaseUpdatesResponse': function(resp) { onPurchaseUpdatesResponse(resp);

$(function() {

Once initialization is done you can make purchase calls by passing in your SKU title.  The example code here is making a call to purchase the more “sample.clicks” SKU.

function buyClicks() {
    if (amzn_wa.IAP == null) {
        alert("You are out of clicks, however Amazon In-App-Purchasing works only with Apps from the Appstore.");
    } else if (confirm("Buy more clicks?")) {

The purchaseItem function will return a response object you need to handle and check for success or failure.

// purchaseItem will cause a purchase response with one receipt
function onPurchaseResponse(e) {
    if (e.purchaseRequestStatus == amzn_wa.IAP.PurchaseStatus.SUCCESSFUL) {
    } else if (e.purchaseRequestStatus == amzn_wa.IAP.PurchaseStatus.ALREADY_ENTITLED) {
        // Somehow we are out of sync with the server, let's refresh from the
        // beginning of time.

If it gets back a status of PurchaseStatus.SUCCESSFUL it will handle the receipt returned in the response object like so: 

// purchaseItem will cause a purchase response with one receipt
function onPurchaseResponse(e) {
    if (e.purchaseRequestStatus == amzn_wa.IAP.PurchaseStatus.SUCCESSFUL) {
    } else if (e.purchaseRequestStatus == amzn_wa.IAP.PurchaseStatus.ALREADY_ENTITLED) {
        // Somehow we are out of sync with the server, let's refresh from the
        // beginning of time.

In this Button-Clicker example we are setting a Boolean value to true based on a successful purchase.  In a real web app you would want to save the purchase receipt to local storage or back to your own cloud storage so you can verify purchase receipts in the future.

Using the SDK Tester App

If you are running in the development Sandbox Mode we mentioned above calls to the Amazon Services will go through the local SDK Tester App instead of to the Amazon Cloud. 

This allows you to simulate purchasing SKUs in your web app without having to spend any actual currency.  You have the option to test a purchase inside the browser itself using the included Amazon Service JavaScript Libraries.

In this scenario you need to ensure your JSON file holding the SKUs is located in the same folder as you web app.  If you want to test the In-App Purchase on a device you can do so using the SDK Tester tool and a JSON file that has been copied to the SD Storage.

For a complete video walkthrough of the purchase process and SDK Tester tool you can watch the following screencast on our Youtube Channel.


By utilizing the Amazon In-App Purchasing API for JavaScript you are able to quickly implement and test purchases through your existing web app.  Customers can take advantage of in app items, subscriptions and entitlements you might offer all through the secure Amazon checkout process.

Be sure to check out our HTML5 Web App materials on the developer portal to get started today!

-Dave (TheDaveDev)



January 16, 2014

Peter Heinrich

A/B Testing is about using data to challenge assumptions and test new ideas. Watch this video to hear about the “happy accident” that inspired an important A/B test we hadn’t considered and how it led to an increase in retention and monetization for Air Patriots.

Created in-house at Amazon, Air Patriots is a plane-based tower defense game for iOS, Android, and Fire OS. The development team uses A/B Testing to experiment with new ideas, so I recently I sat down with Senior Producer Russell Carroll and Game Development Engineer Julio Gorge to discuss how they used the service on Air Patriots. They described for me the design choices they tested, how the experiments were constructed, and what benefits they derived from the results.

Check out the conversation to learn how Russell and Julio’s experience on Air Patriots made them advocates for A/B Testing in every mobile app, especially those offering in-app purchase.


August 15, 2013

Mike Hines

Note: Effective 08-26-2015 Free App of the Day (FAD) has been replaced with Amazon Underground.

Occasionally, we'll have a developer ask if the financial benefit of participating in the FAD program is worth it. Will it help them ultimately grow their app revenue?

Below is a guest post by Tasharen Entertainment, a small independent developer in Toronto that created Starlink – a strategy game – available in the Amazon Appstore, Google Play and the Apple App Store. They recently issued a blog post highlighting their success with the Free App of the Day program and we thought we’d share it with you.  It’s always compelling to see a developer try something new, measure the actual results across several app stores and find out their test was successful. The article was originally posted on Tasharen’s blog post here.

Starlink has recently participated in the Free App of the Day promotion on the Amazon App Store. Before joining the promotion I did my research, and saw that there was some controversy about it, but I went for it anyway. Two weeks later, I am happy to share the results.

With Starlink being a rather obscure strategy game released with zero marketing a few months ago, its player base has been expectedly small: of the 2500 players before the promotion, around 80% were pirates who got it for free. Number of daily players was around 100 — which was actually a fairly high percentage, all things considered. The sales died down quickly after the release. I think the “best” day earned around $65 in sales, but the average daily income since release has been around $10 — a rather sad amount. Nonetheless, factoring the fact that Starlink is a first game I’ve released on the mobile platforms, and that an average first-time release is only expected to earn around $500 during its lifetime, Starlink’s ~$1400 lifetime income was actually already ahead of the curve.

Enter the Amazon’s Free App of the Day promotion. The process was started by Amazon themselves who got in touch with me and asked if I’d be interested — I said of course. After some emails back and forth, the date was assigned: July 19th — a Friday. Perfect for a game!

On that day, over 102,000 players have downloaded the game. North American rating of the game averaged at 3.5/5, with the majority being along the lines of “I don’t get it”, complaining about the sparse tutorial and the game being too difficult even on the beginner difficulty. Curiously enough, Japanese players rated the game 4.5/5.0 (over 7500 downloads). Apparently Japanese players had an easier time understanding an English-language game than native English speakers!

After the promotion I wanted to wait two weeks to see the effect the promotion would have on the sales of the game on all of the platforms it was available on. Now, keep in mind. I myself did nothing. I didn’t say the app would be promoted, didn’t release any news about it, no new videos, nothing! I wanted to see the raw effect the promotion would have. Some of you may go “wtf” at this, but keep in mind — Starlink for me is, and always has been — an experiment. My goal has never been to make it the next Angry Birds, but to experiment with the different platforms, methods of monetization, cross-promotion, etc.

So here is the raw effect of the promotion. Before the 19th, the statistics looked like this:

  • Amazon sales: 3 units per week
  • Google sales: 5 unit per day
  • iOS sales: 1 unit per day
  • Daily players: ~100

Two weeks later, the statistics seem a lot healthier:

  • Amazon sales: 34.5 units per day (almost 8,000% increase)
  • Google sales: 22 per day (340% increase)
  • iOS sales: 10.2 per day (920% increase)
  • Daily players: 2,041 (almost 2,000% increase at exactly 2 weeks after promotion)

Total estimated income for the 2 week period immediately following the promotion: $1,385, or almost the same amount of money they game has earned in the 3 months leading up to the promotion.

  • $646 from Amazon
  • $464 from Google
  • $186 from iOS
  • $69 from Desura
  • $20 from PayPal

So the obvious question is — from my point of view, was the promotion worth it?

And the answer is a resounding “Yes“! And if you are an indie dev who’s considering participating in the Amazon’s Free App of the Day, here’s a small suggestion for you: don’t concern yourself with the players who will obtain your game for free. Instead, think of all the players that will follow and will buy your game based on the attention it will receive and the word-of-mouth talk that will follow.

Or in other words, think of it as free marketing done right.

Thanks, Amazon!

If you have an interesting story or experience to share with other developers through a guest post on our blog, email us at mobile-app-marketing(at) for consideration.

June 14, 2013

Mike Hines

Recent news has many users increasingly concerned about privacy, and we know that your customer’s privacy is as important to you as it is to us. That’s why it’s important that you include links to your privacy policy on the product detail pages for your apps.

We require all apps that collect personally identifiable information or personal information to provide a link to their privacy policy, so if you haven’t already done so, please take a moment to submit the privacy policy link for each of your apps today. It’s quick, simple, and it’s also the right thing to do.

Please follow these steps to update the product detail page for your app with a link to your privacy policy:

  1. Sign into the Amazon Mobile App Distribution Portal with your developer account
  2. Go to the My Apps page then click on your app name
  3. Click on Edit in the bottom right corner of the page
  4. Add a link to your privacy policy in the Privacy Policy URL field, then click Save

Privacy Matters

Once you have followed the steps above and added a link to your privacy policy, the link will show up on your app’s product detail page.

Want the latest?

appstore topics

Recent Posts