Lesson 50 told you what fields exist. Lesson 51 told you how to measure. This lesson is about craft: how to make each part of a listing actually good. A strong listing tells one clear story in several places at once: the icon, the title, the screenshots, the graphic and the words all say the same thing, in a way that a stranger understands in a few seconds.
This is Module 3: Best practices for creating your store listing of the Google Play Store Listing Certificate (https://playacademy.withgoogle.com/certificate). We teach the practices in our own words and with our own examples, and the official course and exam remain the authority. No guidance here guarantees installs or rankings.
Honesty note. Asset specifications and policy limits change. Check the upload dialogs in Play Console and the Play Console Help for the current numbers. Good design cannot rescue a poor app, and misleading assets are a policy violation and a trust problem.
By the end you will be able to:
- Define a brand story and keep it consistent across all assets.
- Design a clear icon, a feature graphic, and screenshots with captions that explain benefits.
- Write effective title, short and full descriptions with natural keywords.
- Plan a promo video (if you make one).
- Localise a listing properly, not just translate it.
- Use ratings and reviews wisely, and reply to them.
- Audit a listing with a repeatable scorecard.
Big idea: a visitor should be able to answer three questions in five seconds: What is it? Who is it for? Why should I install it?
- Store listing fields and policies (lesson 50).
- Conversion rate and experiments (lesson 51).
- Accessibility and contrast (lessons 46–48): the same rules make assets readable.
- Basic design ideas (Material 3 colours and typography, lesson 40).
Think of your listing as a shop front with several windows. If the sign says "bakery", one window shows tyres and another shows shoes, a customer is confused and leaves. A strong shop front shows bread everywhere.
BRAND STORY (one sentence)
"Class Register helps teachers take attendance in seconds, even offline."
|
+--------+--------+----------+-----------+---------------+
| | | | | |
Icon Title Short desc Feature Screenshots Full description
(a tick (name + (benefit) graphic (one benefit (features + proof
on a what) (tagline) per image, + how it works)
register) captions)
The three-layer message
| Layer | Question | Where |
|---|---|---|
| What | What is this app? | Title, icon, first screenshot |
| Why | What benefit do I get? | Short description, feature graphic, screenshot captions |
| Proof / how | Can I trust it? How does it work? | Ratings, full description, later screenshots, video, data safety |
Know your audience
Write down, in two or three lines, who you are speaking to. "Primary-school teachers in Oyo State who use a mid-range Android phone with limited data and take attendance daily" leads to different choices (offline emphasis, big buttons, Yoruba and English text) than "university lecturers using tablets". Everything below applies to your audience, not to an imaginary average user.
The icon is your most seen asset. It appears in search results, home screens, notifications and recent apps, often at a very small size.
Principles
- One simple idea. A single recognisable shape, not a scene. Test by shrinking it to 48 × 48 px: if it becomes a blur, simplify.
- Distinct. Browse your category on Play. If all competitors use a blue shield, a blue shield will not stand out, but do not be strange for the sake of it.
- Meaningful. The symbol should hint at what the app does (a tick on a register page, a naira note and a magnifier for a price checker).
- No text, or very little. Small text is unreadable. A single letter or short brand mark can work.
- No store badges or claims. No "free", "new", "#1", star ratings or "Download now".
- No extra rounded corners or shadows. Provide a full square (512 × 512 px, 32-bit PNG). Google Play applies the rounding and shadow. Your adaptive icon inside the app (lesson 21) uses a foreground and a background layer; make the Play icon match its look.
- Colour with contrast. A bold background against a lighter symbol. Check it on both light and dark backgrounds, and in grayscale.
- Consistent with the app. The user should recognise the icon when the app opens.
Quick test script
If you work with raster files, this script shows how your icon looks at the sizes that matter (needs pip install pillow):
from PIL import Image
icon = Image.open("icon-512.png").convert("RGBA")
sizes = [192, 96, 48, 32]
sheet = Image.new("RGBA", (sum(sizes) + 20 * (len(sizes) + 1), 220), "white")
x = 20
for s in sizes:
sheet.paste(icon.resize((s, s), Image.LANCZOS), (x, 20), icon.resize((s, s), Image.LANCZOS))
x += s + 20
sheet.convert("RGB").save("icon-sizes.png")
print("Saved icon-sizes.png. Look at it from arm's length.")
If the smallest version is not recognisable, redesign. Then test icon variants in a store listing experiment (lesson 51).
Title (30 characters)
| Do | Do not |
|---|---|
| Brand name first, then a short descriptor | Stuff keywords ("Attendance Register Roll Call School Teacher App") |
| One or two natural search words people use | Add emoji, symbols, repeated punctuation |
| Make it pronounceable and memorable | Use rankings or price claims ("#1", "Free", "Best") |
| Check that the name is not confusingly close to a famous brand | Imitate other apps |
Examples for our hypothetical app: Class Register: Attendance works because "Class Register" is the brand and "Attendance" is the main search word.
Short description (80 characters)
It appears in search results and at the top of the page, so write it as a benefit sentence, using the verb the user would use:
| Weak | Stronger |
|---|---|
Attendance app for schools |
Mark attendance in seconds, even offline, and share class reports. |
The best register app |
Take the class register on your phone and send weekly reports. |
Rules: lead with the benefit; keep it concrete; use plain words; no repetition of the title; no claims that need proof.
Many people never read the description. They look at the first two or three screenshots. Treat them as a short slide show that tells your story.
Planning the sequence
Screenshot 1: THE PROMISE "Take attendance in one tap" (the main screen, close-up)
Screenshot 2: HOW IT WORKS "Works without internet" (offline indicator, sync)
Screenshot 3: THE RESULT "Share reports with parents" (the report screen)
Screenshot 4: TRUST / DETAIL "Large text and TalkBack support" (accessibility, privacy)
Screenshot 5: EASY START "Set up your classes in minutes" (onboarding)
Rules of thumb
- One message per screenshot, in a short caption (3–6 words) in large readable type, at the top or bottom.
- Show the real UI, not a fantasy. Captions explain, they do not misrepresent. Policy requires screenshots to reflect the app.
- Put the best two or three first. The first image is usually seen without scrolling.
- Consistent style: same fonts, colours, margins and device frame (or no frame) across the set.
- Use real, realistic data (Nigerian names, naira amounts) so the user can imagine themselves using it. Do not show private data of real people.
- Check text size on a phone. If you cannot read the caption on a small phone screen from 30 cm away, make it bigger.
- Accessibility: captions must have high contrast (lesson 47).
- Different devices: provide tablet screenshots if you support tablets (lesson 58 on adaptive apps) and Wear OS or TV where relevant.
- Localise caption text for each language market (below).
- Update screenshots when the UI changes. An out-of-date screenshot is a mismatch the reviewers and users will notice.
Generating screenshots
Take screenshots from the emulator (the camera icon in the emulator's side toolbar) or your device, then add captions. You can use a design tool, but a small script keeps results consistent and repeatable, which helps when you localise into five languages:
from PIL import Image, ImageDraw, ImageFont
def caption_screenshot(src, dst, caption, bg="#1B6B3A", fg="#FFFFFF"):
shot = Image.open(src).convert("RGB")
w, h = shot.size
pad_top = int(h * 0.18)
canvas = Image.new("RGB", (w, h + pad_top), bg)
canvas.paste(shot, (0, pad_top))
draw = ImageDraw.Draw(canvas)
font = ImageFont.truetype("DejaVuSans-Bold.ttf", size=int(w * 0.07))
# center the text horizontally
bbox = draw.textbbox((0, 0), caption, font=font)
draw.text(((w - (bbox[2] - bbox[0])) / 2, pad_top / 3), caption, font=font, fill=fg)
canvas.save(dst)
caption_screenshot("raw/main.png", "out/en-1.png", "Take attendance in one tap")
Check that the final size still meets the Console's rules (for example the long side no more than twice the short side; the script above makes the image taller, so test with check sizes as in lesson 50). Always keep the un-captioned originals.
Feature graphic (1024 × 500 px)
It sits at the top of the listing and can be shown in other Play surfaces. Rules:
- Keep the key content in the safe centre: edges may be cropped or covered by a play button if you have a video.
- Short tagline or none. One idea, big letters, high contrast.
- No screenshots collage of tiny UI, no store badges, no download-button imitations.
- Match brand colours and the icon.
- Include the icon or logo only if it helps recognition.
Promo video
Optional but powerful, since it can autoplay silently on the listing in some placements.
- Short: aim for 30 to 120 seconds, with the main value shown in the first five to ten seconds.
- Show the app in real use, with captions for people watching without sound.
- Hosted on YouTube, public or unlisted, not age-restricted, with monetisation and ads off; you enter the URL in the Console.
- Landscape orientation is the usual recommendation for the player; check the current guidance.
- No misleading content: show how the app actually works.
- Consider multiple language versions if you target several languages.
- Test whether a video helps with an experiment: for some apps it raises conversion, for others it distracts.
A simple storyboard:
0-5 s Problem: a teacher with a paper register at the door, noise, queue.
5-15 s Solution: taps present/absent in one tap on the phone.
15-30 s Result: weekly report shared with the head teacher in seconds.
30-35 s Call to action: "Class Register: free on Google Play" (only if true).
The full description (4,000 characters) helps people who want detail and helps search understand your app. Use a template:
[Opening, 2-3 lines] What it is, who it is for, the main benefit. Plain words.
[Key features, 4-7 bullets] Benefit-first: "Works offline, so a bad network never stops your register".
[How it works, 3 steps] Numbered; shows simplicity.
[Proof, optional] Real facts only: "Used in 40 schools in Oyo State during the 2025 pilot".
No fake awards, no unverifiable numbers.
[Requirements or notes] "Needs Android 7.0 or later. Internet needed only for syncing."
[Support and contact] Email, website, privacy policy link.
Using keywords the right way
- Write for people first. Use the words real users type: "attendance", "register", "school", "teacher", "class list".
- Put the most important keywords early and use them naturally, a few times, in different sentences.
- Do not repeat the same word many times, list unrelated search terms, or mention other brands.
- Keep the description consistent with the category and tags you selected.
- Update the text when features change; remove claims that no longer apply.
Formatting
The Play description supports plain text with limited formatting (line breaks, bullets typed as characters, and some basic formatting tags on some surfaces). Test how it looks on a phone. Avoid walls of text; use line breaks and short sections. Avoid ALL CAPS beyond short headings.
Translation converts words. Localisation adapts the whole experience to a place: language, examples, currency, images, cultural references, and even which features you highlight. Done well, it can increase conversion in that market; done carelessly (machine translation with errors), it damages trust.
Steps
- Decide where the value is. Look at your acquisition report (lesson 51): which countries and languages send visitors? Which have traffic but low conversion?
- Add a language in the store listing (the Console offers Manage translations). You can add translations by hand, or use Google's translation services as a draft only.
- Translate all fields: title, short description, full description, and the screenshots' captions and feature graphic text. A listing in French with English screenshots feels half-finished.
- Localise content, not only words: currency (naira, cedi, CFA franc), date formats, examples, and photos. Show interface screenshots in that language if your app supports it.
- Have a native speaker review, especially for tone and idioms.
- Mind right-to-left languages such as Arabic (text direction, mirrored layout) and long words in German or Hausa that may overflow image captions.
- Test with a localised experiment (lesson 51).
- Support the language in the app itself. A listing promising Yoruba support must deliver it (see the per-app language preferences in Android 13+ and
strings.xmlper locale, lesson 15).
A simple checker for missing translations
When you keep your listing text in files by language, this script lists missing or over-long fields:
from pathlib import Path
LIMITS = {"title.txt": 30, "short.txt": 80, "full.txt": 4000}
languages = [p.name for p in Path("listing").iterdir() if p.is_dir()]
for lang in sorted(languages):
for name, limit in LIMITS.items():
f = Path("listing") / lang / name
if not f.exists():
print(f"{lang}: MISSING {name}")
continue
n = len(f.read_text(encoding="utf-8").strip())
if n > limit:
print(f"{lang}: {name} TOO LONG ({n}/{limit})")
print("check finished")
Lengths in other languages can be longer than English, and some scripts count characters differently, so always check against the Console.
Ratings influence both conversion and visibility. You cannot fake them (policy), but you can earn them honestly.
- Ask at the right moment, after a success (a completed register for the week), not at the first launch. Use the in-app review API (
com.google.android.play:review-ktx; look up the current artifact and the quota rules in the docs). It shows the system review sheet without leaving the app and is rate-limited. - Do not incentivise ratings (no rewards for five stars) and do not gate: asking "are you happy?" and sending only happy users to the review prompt is considered manipulation.
- Read reviews every week: they are free user research. Tag them (bug, feature request, confusing, praise).
- Reply, politely and specifically: thank, acknowledge, explain what you did or will do. Public replies are seen by future users. Never argue, never share personal data. Users can update their rating after a fix.
- Fix the top complaint first, then mention the fix in your release notes.
- Ratings by version and country are visible: a poor rating on an old version may be solved by an update.
A tiny code sketch for asking for a review at a good moment:
import android.app.Activity
import com.google.android.play.core.review.ReviewManagerFactory
fun maybeAskForReview(activity: Activity, weeksCompleted: Int) {
if (weeksCompleted < 3) return // only after real use
val manager = ReviewManagerFactory.create(activity)
manager.requestReviewFlow().addOnSuccessListener { info ->
manager.launchReviewFlow(activity, info) // system decides whether to show it
}
}
The system may choose not to show the dialog (quotas), and the call gives no result, so never build UI that depends on it.
Use this checklist to audit your own listing or a competitor's. Score each line 0 (poor), 1 (ok), 2 (strong).
CLARITY (5 seconds)
[ ] I can tell what the app does from icon + title + first screenshot
[ ] I can tell who it is for
[ ] The short description states a concrete benefit
ICON
[ ] Simple, recognisable at 48px, distinct in its category
[ ] No text claims, badges or extra rounded corners
SCREENSHOTS
[ ] First 3 tell the main story, one message each
[ ] Captions are large, short, high-contrast
[ ] Real UI, consistent style, up to date, localised
GRAPHICS AND VIDEO
[ ] Feature graphic readable in the centre safe area
[ ] Video (if any) shows the product in the first 10 seconds, with captions
TEXT
[ ] Title is brand + natural descriptor, no stuffing
[ ] Full description opens strongly, uses bullets, is accurate
[ ] Contact, privacy policy and requirements present
TRUST
[ ] Rating and recent reviews are healthy; reviews are answered
[ ] Data safety matches reality
LOCALISATION
[ ] Top three markets have localised text AND screenshots
A score of 24–28 is excellent, 16–23 is good with clear fixes, below 16 means rework. Use the audit to pick one experiment for next month (lesson 51).
Exercise 1: Rewrite a weak listing
Rewrite this weak listing. Title: School Attendance Register Roll Call Marking App Teachers Free. Short: Best app for attendance. First screenshot: a dense table of 40 rows with no caption. Provide a new title, a new short description (80 characters max), a first-screenshot plan with caption, and one sentence explaining what you changed.
Title: Class Register: Attendance (26 characters). Short: Mark attendance in seconds, even offline, and share class reports. (66). First screenshot plan: crop to the main marking screen with five large student cards, big Present/Absent buttons; caption Take attendance in one tap. Explanation: removed keyword stuffing, price word and generic claim; the title now uses a brand plus one natural descriptor; the short description states the benefit and differentiator (offline, reports); the first screenshot shows one idea with a readable caption instead of an unreadable table.
Exercise 2: Screenshot storyboard
Plan five screenshots for an app of your choice (or Market Price Check). For each, give the one-line message, the screen to capture and the caption.
Example for Market Price Check: (1) Promise: home screen with today's tomato, rice, beans prices; caption "Know the price before you leave home". (2) Compare: two markets side by side; caption "Compare markets near you". (3) Alerts: alert setup screen; caption "Get an alert when prices drop". (4) Budget: shopping list with total in naira; caption "Plan your budget in naira". (5) Trust: contributors and report screen with accessibility options; caption "Prices reported by real shoppers". Each uses real screens and realistic data; the first three carry the main story; the last two reassure.
Exercise 3: Plan a localisation
Your acquisition report shows many visitors from Ghana, Cameroon and Egypt, all seeing the English listing, and conversion is lowest in Cameroon and Egypt. Plan what you would localise, in what order, and how you would measure success.
Order by potential and effort: (1) French for Cameroon (all fields, screenshot captions, currency CFA franc, examples), since a language mismatch is the likely cause. (2) Arabic for Egypt, including right-to-left layout in the screenshots and checking the app supports RTL (lesson 15 resources, supportsRtl); it requires a native reviewer. (3) Ghana already reads English, so adapt currency (cedi) and examples instead of translating. Measure with localised store listing experiments and compare conversion for each country before and after, using the same traffic source and date ranges, and also check retention and ratings to be sure the audience is the right one.
Mistake #1: Icon with tiny text. Fix: a single shape or letter; test at 48 px.
Mistake #2: Screenshots that are all the same screen. Fix: one story step per image.
Mistake #3: Captions too small to read. Fix: large type, high contrast.
Mistake #4: Using device frames that hide the UI. Fix: minimal frames or none.
Mistake #5: Keyword stuffing. Symptom: policy trouble and a spammy look. Fix: natural writing.
Mistake #6: Machine-translated listing without review. Fix: native review.
Mistake #7: Translating text but not screenshots. Fix: localise every asset.
Mistake #8: Asking for a rating at launch. Fix: after a success moment, using the in-app review API.
Mistake #9: Ignoring negative reviews. Fix: reply and fix.
Mistake #10: Never updating assets. Fix: review the listing every release.
Question 1. What three questions should a visitor be able to answer within seconds?
What is it, who is it for, and why should I install it (the benefit).
Question 2. Why should an icon avoid small text?
The icon is shown very small in many places, so small text is unreadable; a simple shape is recognisable at any size.
Question 3. What is the difference between translation and localisation?
Translation converts words to another language. Localisation adapts the whole experience (language, currency, examples, images, formats, features highlighted) to a local audience.
Question 4. What makes a screenshot effective?
It shows the real UI, carries one clear message in a short, readable, high-contrast caption, fits a consistent set that tells a story, and is up to date and localised.
Question 5. How can you ask for ratings honestly?
Use the in-app review flow after a positive, meaningful moment, never reward or pressure users for high ratings, do not filter who is asked, and respond to reviews you receive.
Go deeper: official resources
- Google Play Store Listing Certificate
- Google Play Console Help
- Prepare your app for release
- Android Basics with Compose course
Project goal: Audit and redesign the listing of a real app (your own, or a public app you choose), using the scorecard, and produce the improved texts and a screenshot plan.
Requirements:
- Score the current listing with the scorecard; list the three lowest-scoring lines.
- Write an improved title, short description and full description (in the template from this lesson).
- A five-screenshot storyboard with captions, and at least two of them produced (using the caption script or a design tool).
- One localisation plan for a second language, with at least the title, short description and five captions translated and reviewed.
- A reply template for three types of review: bug report, feature request, praise.
- One experiment proposal (hypothesis, change, audience, duration, metric) from lesson 51.
Stretch goal: write a 30-second video storyboard with caption text for viewers without sound.
Model answer for a hypothetical app (Class Register).
Scorecard result (before): clarity 3/6, icon 2/4, screenshots 2/6, graphics 2/4, text 3/6, trust 2/4, localisation 0/2. Lowest: localisation, screenshots, clarity.
Improved texts:
Title: Class Register: Attendance
Short: Mark attendance in seconds, even offline, and share class reports.
Full:
Class Register helps teachers take attendance quickly, even without internet.
Tap once per student, and share a weekly report with your head teacher or parents.
Built for busy classrooms and modest phones.
WHY TEACHERS LIKE IT
- Works offline, then syncs when you are online
- Large buttons, easy one-hand use
- Weekly and termly reports you can share as PDF
- Supports large text and TalkBack
HOW IT WORKS
1. Add your classes and students
2. Mark the register each morning
3. Share your report
Needs Android 7.0 or later. Internet is only needed to sync and share.
Questions? support@yourdomain.ng | Privacy policy: https://yourdomain.ng/privacy
Screenshot storyboard:
1 "Take attendance in one tap" main marking screen
2 "Works without internet" offline badge and sync status
3 "Share reports in seconds" report screen with share button
4 "Made for every learner" large text + TalkBack settings
5 "Set up your classes in minutes" onboarding list
French draft for review (Cameroon):
Title: Class Register : Présences
Short: Faites l'appel en quelques secondes, même hors ligne, et partagez les rapports.
Captions: "Faites l'appel en un geste" / "Fonctionne sans internet" / "Partagez vos rapports"
/ "Conçu pour tous les élèves" / "Créez vos classes en quelques minutes"
(A native French speaker should review: "faire l'appel" is the natural phrase for taking attendance.)
Review reply templates:
Bug: "Thank you for telling us, and sorry about the crash. We have reproduced it on
Android 12 and the fix will be in version 1.2.1 next week. Please email
support@yourdomain.ng if it happens again."
Feature: "Thanks, this is a great suggestion. We have added 'late' marking to our list
for the next term. We will mention it in the release notes."
Praise: "Thank you, we are glad it saves you time each morning!"
Experiment proposal:
Hypothesis: A first screenshot with the caption "Take attendance in one tap" and five large
student cards will beat the current dense table for Nigerian Play-search visitors by 1+ point.
Change: first screenshot only. Audience: 50%, one variant. Duration: 14+ days. Metric: first-time
installers; check retained installers afterwards.
Open your finished project in Android Studio. Check that the .gitignore file the wizard created is in the project root. It keeps local.properties, build folders and keystores out of Git. Never commit passwords or signing keys.
Choose Git > Create Git Repository… (or VCS > Enable Version Control Integration in older versions), select the project folder, then open Git > Commit, tick every file, and write the message “Add Android lesson 52 project”.
On github.com click New repository, name it android-lesson-52-best-practices-for-your-store-listing, set it to Public, leave Add a README unticked, and click Create repository.
Back in Android Studio choose Git > Manage Remotes…, add the repository URL as origin, then choose Git > Push… and push your main branch. Prefer the terminal? Run git remote add origin <your-url> then git push -u origin main.
Add a README.md with a screenshot of your app running and a short description. Employers and clients read READMEs first. Your project is now part of your public portfolio. 🎉
Lesson 52 complete! 🎉
You covered:
- Lesson Introduction
- Prerequisite Concepts
- Conceptual Understanding: One Story, Many Places
- Step-by-Step Build 1: The App Icon
- Step-by-Step Build 2: Title and Short Description
- Step-by-Step Build 3: Screenshots That Sell
- Step-by-Step Build 4: Feature Graphic and Promo Video
- Step-by-Step Build 5: The Full Description
- Step-by-Step Build 6: Localisation
- Step-by-Step Build 7: Ratings, Reviews and Trust
- Step-by-Step Build 8: Auditing a Listing with a Scorecard
- Guided Practice Exercises
- Common Mistakes (and How to Fix Them)
- Knowledge Check