Your app is built, signed and bundled (lesson 49). Now people have to find it, trust it and install it. That job is done by your store listing: the page on Google Play with your icon, name, screenshots and description. For many apps, the listing is the difference between 50 installs and 50,000.
This lesson is Module 1: Getting started with the basics of the Google Play Store Listing Certificate (https://playacademy.withgoogle.com/certificate), a free, self-paced course from Google Play Academy for developers and marketers. Lessons 51–53 cover the other three modules. Throughout, we teach the skills in our own words and with our own worked examples. We do not reproduce the course text, and we cannot see or share the exam, so always do the official course for the certificate.
Honesty note. Google Play Console changes its menus and wording often, and policy rules move. Where this lesson names a menu or a limit, check the current Play Console Help (https://support.google.com/googleplay/android-developer) before relying on it. Nobody can promise approval, ranking or install numbers, and neither does this lesson.
By the end you will be able to:
- Explain what Google Play Console is and who uses it.
- Create a developer account and understand identity verification, fees and account types.
- Create an app in the Console and complete the App content declarations.
- Fill in the main store listing: title, short description, full description, icon, feature graphic, screenshots and video.
- Meet the baseline requirements for every listing (accuracy, quality, policy).
- Create your first internal test release and understand the review process.
- Understand the three kinds of listing assets and the numbers you need.
Big idea: your listing is a promise to the user. Everything in it must be true, clear and quickly understood, because a visitor decides in seconds.
- A signed app bundle and release process (lesson 49).
- Application ID, version code, tracks (lesson 49).
- Basic image concepts: pixels, aspect ratio, PNG and JPEG.
- A Google account (a separate one for your business or organisation is recommended).
Google Play Console (https://play.google.com/console) is the website and app where developers publish and manage apps on Google Play. Different people use it in different ways:
| Role | What they do in Console |
|---|---|
| Developer | Upload bundles, manage releases and testing tracks, fix crashes |
| Product / marketing | Write the listing, run experiments, watch acquisition reports |
| Designer | Supply icons, screenshots and graphics |
| Support | Reply to reviews |
| Owner / admin | Manage users, payments and permissions |
The Console has areas such as Dashboard, Statistics, Release (testing and production tracks), Grow users (store listings, experiments, custom listings), Monitor and improve (Android vitals, ratings and reviews) and Policy and programmes (app content, policy status). The names and layout change, but these jobs stay the same.
How a user sees your listing
Google Play search results Your store listing page
+-----------------------+ +---------------------------------------------+
| [icon] App name | tap | [feature graphic or video] |
| short description | -----> | [icon] App name [Install] |
| 4.5 star 1M+ | | Developer name ratings, downloads|
+-----------------------+ | [screenshot][screenshot][screenshot] ... |
| About this app (short + full description) |
| Data safety | Reviews | Developer contact |
+---------------------------------------------+
The user first sees only the icon, title and short description in search or on a list. Only a user who is interested continues to the listing page. So the first three items carry the most weight.
Account types
When you register, you choose between a personal and an organisation account. The best choice depends on who owns the app.
| Personal | Organisation | |
|---|---|---|
| For | An individual developer | A company, school, club or NGO |
| Identity check | Government ID and a verified payment profile | Organisation verification (for example a D-U-N-S number in many countries) plus an ID |
| Testing requirement before production | Currently stricter: a closed test with a minimum number of testers for a minimum period (see lesson 49; check Help for the current rule) | Different requirements |
| Public name shown | Your name or developer name | Organisation name |
For a class project or a first app, personal is fine. For a business such as Techbase Consultant Services, an organisation account is the proper choice because the app is not "owned" by one person's account.
Registration steps (typical)
- Sign in to Play Console with a Google account you will keep for years.
- Pay the one-time registration fee (at the time of writing a small one-time amount in US dollars; check the current fee and accepted payment methods in your country).
- Provide your developer name (shown to users), contact email and phone (verified), and website if you have one.
- Complete identity verification with the documents Google asks for. This can take days. Do it early, before you plan to launch.
- If you charge for apps or sell in-app items, set up a payments profile; Google needs bank details for payouts. Availability of paid apps and merchant accounts depends on your country.
Security first. Turn on 2-Step Verification for the account, use a password manager, and add teammates as users with limited permissions instead of sharing the owner's password. Never share the account credentials in chat.
- In Play Console choose Create app.
- Fill in: - App name (what users see; you can change it later). - Default language of your listing. - App or game. - Free or paid. Warning: a free app cannot be changed to paid later; a paid app can become free. Choose carefully.
- Accept the Developer Program Policies and US export laws declarations.
- Click Create app.
The Dashboard now shows a setup checklist (names vary: "Set up your app", "Finish setting up your app"). Typical tasks:
| Task | What you provide |
|---|---|
| Privacy policy | A public URL of your privacy policy page |
| App access | If parts need a login, give reviewers a test account |
| Ads | Whether your app contains ads |
| Content rating | A questionnaire (violence, language, user-generated content...) that produces age ratings |
| Target audience and content | Age groups the app targets. Choosing children triggers additional policy requirements |
| Data safety | A form declaring what data you collect, why, whether it is shared, encrypted, and whether users can delete it |
| Government apps, financial features, health apps | Declarations for sensitive categories where relevant |
| App category and contact details | Category (Education, Tools...), tags, store contact email, website, phone |
Privacy policy basics
If your app handles any personal data (and most do, even an email address or an advertising ID), you need a privacy policy at a public URL. It must say what you collect, why, how it is stored and shared, how long you keep it, and how a user can ask for deletion. Free generators exist, but you remain responsible for its accuracy; a policy that says "we collect nothing" while your app uses analytics is a policy violation. Write it from your real data flows.
The Data safety form
Think of this as a nutrition label for data. Walk through your app and libraries: analytics SDKs, crash reporting, ads, login, location, contacts, photos. For each data type declare collected, shared, purpose, and whether collection is optional. Honest, accurate answers matter. Google compares declarations with what it sees, and wrong answers can lead to rejection or removal. If a library collects data, you must declare it.
In the Console go to the Main store listing page (under Grow users → Store presence or similar; names vary). Fill in each field. We use the running example of an app called Class Register, a free attendance app for Nigerian teachers.
Text fields
| Field | Limit (check current Help) | Purpose |
|---|---|---|
| App name (title) | 30 characters | What the app is, and a key search phrase |
| Short description | 80 characters | One-line pitch; shown in search and on the listing |
| Full description | 4,000 characters | Features, benefits and detail; searchable |
Title. Use your brand name and, if it fits and is truthful, a short descriptor: Class Register: Attendance (26 characters). Policy forbids misleading names, emoji or symbols for decoration, ALL CAPS shouting, and claims such as "No.1", "best", "free" or price/promotion words in the title.
Short description. Lead with the main benefit in plain language:
Mark attendance in seconds, even offline, and share class reports.
That is 66 characters. A quick counting function lets you check your own text. It is a tiny program, and a good reminder that characters are not words:
fun checkLength(label: String, text: String, limit: Int) {
val ok = text.length <= limit
println("$label: ${text.length}/$limit ${if (ok) "OK" else "TOO LONG"}")
}
fun main() {
checkLength("Title", "Class Register: Attendance", 30)
checkLength(
"Short",
"Mark attendance in seconds, even offline, and share class reports.",
80
)
}
Output:
Title: 26/30 OK
Short: 66/80 OK
Full description. Structure it for people who skim:
Class Register helps teachers take attendance quickly, even without internet.
WHY TEACHERS LIKE IT
- Tap once per student: present, absent or late
- Works offline; syncs when you are online
- Weekly and termly reports you can share as PDF
- Free; no ads in the attendance screens
HOW IT WORKS
1. Add your classes and students
2. Mark the register each morning
3. Share a report with the head teacher or parents
DESIGNED FOR REAL CLASSROOMS
Large buttons, works on low-storage phones, supports large text and TalkBack.
Questions? support@yourdomain.ng
Principles for the full description:
- First three lines matter most; they show before "Read more".
- Say what the app does in plain words, then what benefit the user gets, then details.
- Use short paragraphs and lists.
- Include natural keywords a user would search for ("attendance", "register", "school"). Do not keyword-stuff: repeating words, listing unrelated apps or competitors' names breaks policy and reads badly.
- Be accurate: do not describe features that do not exist, and do not claim endorsements or awards you do not have.
- Mention important requirements (internet, account, in-app purchases).
- Provide contact details.
Graphic assets
Always check the current numbers in the Console's upload dialogs (they list size and format requirements). Typical values at the time of writing:
| Asset | Typical requirement | Notes |
|---|---|---|
| App icon | 512 × 512 px, 32-bit PNG, up to about 1 MB | Do not add rounded corners or shadows yourself; Google Play applies the mask |
| Feature graphic | 1024 × 500 px, JPEG or 24-bit PNG (no alpha) | Shown at the top of the listing and in some promotions |
| Phone screenshots | At least 2 (up to 8); JPEG or PNG; each side between about 320 and 3,840 px; the long side no more than twice the short side | Show real UI |
| Tablet screenshots | Optional but recommended if the app supports tablets (7-inch and 10-inch separately) | Needed for good tablet and large-screen presentation |
| Promo video | A YouTube URL | Public or unlisted, not age-restricted, no ads, monetisation off |
| Wear OS, TV, Automotive, Chromebook screenshots | Where you support them |
A helpful tiny script checks screenshot sizes before you upload (it needs the Pillow library, installed with pip install pillow):
from pathlib import Path
from PIL import Image
for path in sorted(Path("screenshots").glob("*.png")):
w, h = Image.open(path).size
long_side, short_side = max(w, h), min(w, h)
ok = 320 <= short_side and long_side <= 3840 and long_side <= 2 * short_side
print(f"{path.name}: {w}x{h} {'OK' if ok else 'CHECK'}")
Localisation
You can add translated listings. Even a short, accurate translation into the languages of your market (Yoruba, Hausa, Igbo, French or Arabic, as appropriate) can help discovery and trust. Use professional or native-speaker review; poor machine translation harms trust. Lesson 52 covers this in depth.
Every listing is checked against Google Play policies. The principles are not complicated, and breaking them is the most common reason for rejection.
Accurate and not misleading
- The title, icon and screenshots must represent the app truthfully. Screenshots must show real in-app UI, not a mock-up of features that do not exist.
- No fake ratings, reviews or install counts, no text in the icon or title referring to rankings or promotions ("Top", "#1", "50% off").
- No claims of medical, financial or legal benefits you cannot substantiate.
Original and respectful of others' rights
- Do not copy another developer's name, icon or branding, or impersonate a well-known organisation.
- Do not use copyrighted images, music or text without a licence. (The stock photos, fonts and icons you use must allow commercial use.)
Appropriate
- Content must match the rating you declared.
- Policies cover user-generated content, ads, permissions, spam and minimum functionality, deceptive behaviour and families. A basic app that simply repackages a website or shows nothing useful may be rejected under minimum-functionality rules.
Safe
- Declare data practices truthfully (data safety form).
- Request only needed permissions; sensitive permissions get extra review.
- Include a visible way for users to delete their account and data if your app lets them create an account (Play requires this for apps that allow account creation).
Quality
- Fix crashes before publishing (lesson 49 pre-launch report). Google measures Android vitals (crash and ANR rates) and may reduce the visibility of apps with very bad ones.
- Use
targetSdkat the current requirement.
Treat the policies as a checklist to run before each submission. Reading the Developer Program Policy Center pages once will save weeks of rejections.
- Release → Testing → Internal testing, create a new release.
- Upload the AAB (lesson 49). Play checks the signature, version code, target API, permissions and policy issues.
- Enter release notes (what changed). Notes are per language.
- Add testers (an email list) and share the opt-in link they receive.
- Save, review and roll out. Internal tests are usually available within minutes.
- When you are ready for wider testing, repeat in closed testing, and finally Production, where review typically takes from a few hours to several days. New developers and sensitive apps can wait longer. Plan buffer time before a launch date or an exam week.
What happens after you submit
Upload bundle -> automated checks -> policy review (automated + human)
| |
errors shown approved: goes live (or on your schedule)
(fix, re-upload) rejected: email + Policy status page
with the policy and what to change
If the app is rejected, read the exact reason on Policy status, fix all the problems mentioned (not only the first), and resubmit or appeal with a clear, respectful explanation. Repeated violations can put the whole developer account at risk, so do not "try again and see".
Managed publishing
You can turn on managed publishing so approved changes do not go live until you press Publish. This is useful for launching on a chosen day, or for releasing a code change together with new store text.
Exercise 1: Write your listing text
Choose an app idea (real or imaginary, for example a school fees tracker or a market price checker). Write the title (30 characters), short description (80 characters) and the first three lines of the full description. Check lengths with the Kotlin helper.
A model for a market price app:
- Title:
Market Price Check Nigeria(26 characters) - Short:
Compare today's food prices from markets near you, and save on every trip.(73 characters) - Full description opening:
Know the price before you leave home. Market Price Check shows recent prices
for rice, beans, garri, tomatoes and more, reported by traders and shoppers.
Compare markets, set price alerts and plan your budget.
Why it works: the title says what and where; the short description gives a benefit; the first three lines name the problem, list concrete items, and state three actions. Avoid claims you cannot support ("cheapest prices guaranteed"). Run checkLength on each field to verify the limits.
Exercise 2: Policy spot-the-problem
Find at least five policy problems in this listing for a hypothetical app:
Title: 🔥 #1 BEST FREE Attendance App 2026!!! 50% OFF
Short: The best app, better than WhatsApp and Excel, install now!!!
Screenshot 3: a feature labelled "AI grading", not yet in the app.
Data safety form: "No data collected" (the app uses an analytics SDK).
Privacy policy URL: http://localhost/policy.
(1) Emoji and symbols in the title for decoration and attention. (2) Ranking and superlative claims ("#1", "BEST") and promotional words ("FREE", "50% OFF") in the title. (3) Excessive capitalisation and punctuation. (4) Naming other products (WhatsApp, Excel) in a comparative, attention-seeking way. (5) A screenshot of a feature that does not exist, which is misleading. (6) Data safety declaration that contradicts the analytics SDK, which is inaccurate. (7) The privacy policy URL is not a public working page. Also the "2026" year in the title is considered promotional/time-limited. Rewrite: Class Register: Attendance and a factual short description.
Exercise 3: Prepare a launch plan
List the tasks, in order, from "app finished" to "app live", with a realistic time estimate for each. Include identity verification, testing requirements, and review time.
A realistic plan: (1) Register the developer account and start identity verification (a few days; do first). (2) Finish privacy policy, content rating, data safety, app access (1 day). (3) Prepare listing assets: icon, feature graphic, 4–8 screenshots, descriptions (2–3 days with review). (4) Upload to internal testing and fix the pre-launch report issues (1–3 days). (5) Run a closed test with the required number of testers for the required period for a personal account (at least 14 days at the time of writing, plus recruiting time). (6) Apply for production access and wait for the response (days). (7) Submit production release with a staged rollout and wait for review (hours to several days). (8) Monitor vitals and reviews for the first 48 hours. Total for a new personal account: roughly five to seven weeks, so plan early.
Mistake #1: Starting registration the week before launch. Symptom: verification delays. Fix: register early.
Mistake #2: Choosing "Free" without thinking. Symptom: cannot charge later. Fix: use in-app purchases or a second paid app if you might charge.
Mistake #3: Stuffing the title with keywords. Symptom: rejection or lower trust. Fix: brand plus a short truthful descriptor.
Mistake #4: Screenshots that show a mock-up, a device frame with fake features or tiny text. Fix: real UI, short captions, readable text.
Mistake #5: Copy-pasting a generic privacy policy. Symptom: mismatch with real data practices. Fix: write it from your actual data flows.
Mistake #6: Ignoring Data safety. Symptom: update blocked or app removed. Fix: audit every SDK.
Mistake #7: Using copyrighted images, music or competitors' logos. Fix: own or licensed assets only.
Mistake #8: Not testing the app access flow. Symptom: reviewer cannot log in, rejection. Fix: provide a working demo account.
Mistake #9: Fixing only one of several policy issues. Fix: read the whole message and fix everything.
Mistake #10: Promising results. Symptom: disappointed clients. Fix: never promise rankings or installs.
Question 1. What are the three listing items users see first in search results?
The icon, the app title and the short description (plus rating information).
Question 2. Why must a free app be chosen carefully?
A free app cannot be changed to a paid app later (a paid app can become free), so if you may want to charge, plan in-app purchases or another paid app.
Question 3. What must screenshots show?
The real app interface and features users actually get, not fake or unavailable features, and no misleading content.
Question 4. What is the Data safety form for?
To declare honestly what user data the app and its libraries collect or share, why, and whether users can control or delete it. Inaccurate declarations can lead to rejection or removal.
Question 5. Where do you send your first build for testing before production?
To the internal testing track (then closed or open testing as needed), and only later to production, ideally with a staged rollout.
Go deeper: official resources
- Google Play Store Listing Certificate
- Google Play Console Help
- Publish your app (Android developers)
- Prepare your app for release, lesson 49 of this course
Project goal: Produce a complete, reviewable store listing kit for an app of your choice (your own or Class Register), as a folder of files you could paste into Play Console.
Requirements:
listing/en/title.txt(30 chars max),short.txt(80 chars max) andfull.txt(at most 4,000 characters, with the structure from this lesson).- A
check_listing.pyscript that validates the limits and prints OK/TOO LONG for each file. - A
privacy-policy.mdoutline matching your real data flows. - A Data safety worksheet (table of each data type, whether collected, shared, purpose, optional).
- An assets list with the size and format for the icon, feature graphic and at least four phone screenshots; screenshots exist as files.
- A policy self-check with at least ten yes/no questions answered.
Stretch goal: write a second language version of the three text files and have a native speaker review it.
check_listing.py:
from pathlib import Path
LIMITS = {"title.txt": 30, "short.txt": 80, "full.txt": 4000}
base = Path("listing/en")
for name, limit in LIMITS.items():
text = (base / name).read_text(encoding="utf-8").strip()
status = "OK" if len(text) <= limit else "TOO LONG"
print(f"{name}: {len(text)}/{limit} {status}")
full = (base / "full.txt").read_text(encoding="utf-8")
first_lines = "\n".join(full.splitlines()[:3])
print("\nFirst three lines (shown before 'Read more'):\n" + first_lines)
Example Data safety worksheet (Class Register):
Data type Collected Shared Purpose Optional Deletable
Student names Yes No App functionality No Yes (in-app)
Attendance records Yes No App functionality No Yes (in-app)
Email (teacher login) Yes No Account management No Yes (request)
Crash logs Yes Yes* App performance No No
Device identifiers No - - - -
Location No - - - -
* shared with the crash reporting provider acting as a service provider
Policy self-check (answer each with yes/no and evidence):
1. Title has no emoji, ranking or promotional words?
2. Short description is factual and under 80 characters?
3. Every screenshot shows a feature that exists in the release build?
4. Icon has no extra rounded corners, no store badges, no text claims?
5. Privacy policy URL is public, loads on a phone, and matches the data safety form?
6. Data safety covers every SDK (analytics, crash reporting, ads)?
7. App access: test account provided if login is required?
8. Content rating questionnaire answered truthfully?
9. Account deletion path is available in-app and described?
10. targetSdk meets the current Play requirement?
11. All images and fonts are licensed for commercial use?
12. No competitor names, no unsupported awards or statistics?
Assets list:
icon.png 512 x 512, PNG, no extra mask/shadow
feature-graphic.jpg 1024 x 500, no alpha
phone-1..4.png e.g. 1080 x 1920, real UI, short caption each
(optional) tablet-7-1.png, tablet-10-1.png
Expected result: running python3 check_listing.py prints OK for all three files and shows the three opening lines. The kit is ready to paste into the Console fields and can be reviewed by a classmate against the self-check.
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 50 project”.
On github.com click New repository, name it android-lesson-50-google-play-console-and-store-listing-basi, 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 50 complete! 🎉
You covered:
- Lesson Introduction
- Prerequisite Concepts
- Conceptual Understanding: What Is Google Play Console?
- Step-by-Step Build 1: The Developer Account
- Step-by-Step Build 2: Create the App and Complete the Dashboard
- Step-by-Step Build 3: The Main Store Listing
- Step-by-Step Build 4: Baseline Requirements for Every Listing
- Step-by-Step Build 5: First Release and Review
- Guided Practice Exercises
- Common Beginner Mistakes (and How to Fix Them)
- Knowledge Check