Publishing a Moodle App on Google Play and App Store: Step by Step

Publishing a custom Moodle app on both stores requires planning. Accounts, certificates, requirements, deadlines, and common pitfalls to avoid.

by Cleverson

Publishing a Moodle App on Google Play and App Store: Step by Step

Publishing a custom Moodle app on both stores is an operation full of bureaucratic details that determine the success of the delivery. The difference between a launch that goes out on time and one that is delayed by 3 months lies in understanding the process before starting, rather than discovering the requirements while the review has already been rejected. This guide is the complete checklist for publishing a well-done Moodle app: what needs to be ready, in what order, and at what costs.

TL;DR

  • Apple App Store: Apple Developer account (US$ 99/year), stricter review process (3-14 days), requires an explanation screen for each permission.
  • Google Play: Google Play Developer account (US$ 25 one-time), faster review (1-3 days after first approval), requires detailed Data Safety.
  • Total time to publish a Moodle app from start to availability on both stores: 4-8 weeks if prepared, 12+ weeks if learning along the way.
  • The 4 most common reasons for rejection: data privacy, permission descriptions, content for minors, institution identity.

Prerequisites before dealing with the stores

Before any store registration, three things need to be ready:

  1. Functional built app with the institution's visual identity (logo, splash, icon), final name defined, connected to the correct Moodle instance. This comes from the customisation work — I detailed this in Custom Moodle App: 7 Advantages.
  2. Published privacy policy at an accessible URL on the institution's website. Both Apple and Google require a public link to this document during submission. The policy must cover: what data the app collects, how it uses it, who it shares it with, and how the user can remove it.
  3. Institution's own domain linked to a trusted institutional account (not an employee's personal account). Apple and Google prefer consistency: registered company, website with the same name, emails @ the own domain.

Without these three items, any attempt to publish a Moodle app on the stores becomes a waiting queue.

Publishing a Moodle app on the Apple App Store — step by step

Step 1 — Create an Apple Developer Program account

Go to developer.apple.com and create an account. For institutional apps (school, university, company), the registration must be as an Organization, not Individual. It requires:

  • DUNS Number of the company (free, takes 5-30 days to issue via Dun & Bradstreet — start in advance)
  • Company documents (in Brazil: CNPJ, articles of incorporation)
  • Person authorised to sign legally for the company
  • US$ 99/year (auto-renewal)

The verification process takes 1-2 weeks. Apple calls or sends an email confirming identity. If the institution is part of a larger network (educational group, holding), it may be eligible for a specific programme (Apple School Manager for K-12 schools, for example) — worth checking.

Step 2 — Configure certificates and provisioning

In the Apple Developer Portal:

  • Create an App ID with the app's bundle identifier (format com.institution.app)
  • Generate a Distribution Certificate (digital signature of the app)
  • Configure a Provisioning Profile for distribution
  • Enable specific capabilities (Push Notifications, Sign in with Apple, etc.)

The app developer performs these steps. Important: these certificates must be in the name of the institutional account, not personal. Changing them later is cumbersome.

Step 3 — Prepare App Store Connect

App Store Connect is the dashboard where you manage the publication. Here you register:

  • App information: name (up to 30 characters), subtitle (up to 30), description (up to 4000), keywords (up to 100 characters), primary category (Education) and secondary (optional)
  • Screenshots: required for various screen sizes (iPhone 6.7", 6.5", 5.5"; iPad 12.9" and 11"). Generally 3-5 screenshots per device. Apple rejects overly promotional screenshots — prefer showing the real app in use.
  • Preview Video (optional but recommended): 15-30 second video showing the app working
  • App icon: 1024×1024 PNG without transparency, without rounded corners (Apple applies them automatically)
  • Privacy policy (public URL)
  • Test information: how the Apple reviewer should test the app (test Moodle URL, fictitious student credentials)

Step 4 — Submit for Review

Upload the build via Xcode or Transporter. Then, in App Store Connect, click "Submit for Review" filling in:

  • Version being submitted
  • Notes for the reviewer (in English — easier)
  • Encryption Declaration (if using standard encryption, usually "No")
  • Advertising Identifier (usually "No" for educational apps)

Review typically takes 24-72 hours nowadays. But cases with pending issues can take 7-14 days. Response comes by email: approved or rejected with a list of items.

Step 5 — Handle rejection (if any)

When publishing an educational Moodle app for the first time, it is common to receive a rejection on 1 or 2 points. The most frequent:

  • "Demonstrate the purpose of each permission requested" — describe in text and screenshot why the app requests access to camera, microphone, notifications, etc.
  • "Account creation must use Sign in with Apple" — if the app allows creating a student account within it, Apple requires including Sign in with Apple as an option.
  • "Description does not match app functionality" — the store description must exactly reflect what the app does. Exaggerated marketing is rejected.
  • "Privacy policy URL inaccessible" — check that the link works and that the text covers what the app actually collects.

The response is to edit what was requested and resubmit. Each new review is faster (down to ~24h after the first).

Publishing a Moodle app on Google Play — step by step

Step 1 — Create a Google Play Developer account

At play.google.com/console, create an account. Unlike Apple, it is a one-time payment of US$ 25. For institutional apps, register as an Organization. Verification takes 1-3 days, requires:

  • Valid physical address
  • Credit card for the one-time payment
  • Owner's identity document
  • (In 2026) D-U-N-S or similar identity check for company accounts

Step 2 — Configure the app in Play Console

  • Create a new app, set name, default language, type (App) and free/paid
  • Accept the developer programme policies
  • Configure app content: privacy policy (URL), category (Education), target audience (age), content rating (fill in questionnaire)
  • Data Safety: describe all types of data the app collects, whether they are shared with third parties, whether they are encrypted in transit and at rest. This form is detailed and demands honesty — Google audits.
  • Permissions: justify each sensitive permission (access to files, camera, location)

Step 3 — Upload the AAB (Android App Bundle)

The build is generated by the developer in .aab format (Android App Bundle, successor to .apk). Upload to Play Console in the desired track:

  • Internal testing: internal testers, up to 100 emails. Useful for first validation
  • Closed testing: groups of up to 2000 testers, ideal for beta with selected students
  • Open testing: anyone can sign up to test (public, with link)
  • Production: official launch

Recommended when publishing a Moodle app: go through Internal → Closed → Production gradually. Each step allows adjustments based on real feedback before the general public.

Step 4 — Configure store listing

  • Title (up to 30 characters)
  • Short description (up to 80 characters)
  • Full description (up to 4000 characters)
  • Screenshots: minimum 2 per device type (phone and tablet, optionally Chromebook). Specific sizes
  • Icon: 512×512 PNG
  • Feature banner: 1024×500 PNG, used in store highlights
  • Promotional video: optional, YouTube link

Step 5 — Review and publication

Google Play review is generally faster than Apple — 24-72 hours for simple apps. Educational apps with data from minors may take longer (up to 7 days) due to extra scrutiny from the Designed for Families programme.

Once approved, the app goes to the selected track (production, beta, etc.) and becomes available in the store search within a few hours.

The 4 most common reasons for rejection when publishing a Moodle app

Reason 1 — Inconsistent data privacy

App says it collects X but the privacy policy describes Y, or Google's Data Safety says it does not share and the app sends data to Firebase. Both stores audit — inconsistency is detected and rejected. Solution: perfectly align what the code collects, what the policy describes, and what Data Safety declares.

Reason 2 — Permissions without visible justification

App requests camera permission but nowhere in the app is the camera used. Reviewer tests, does not find it, rejects. Solution: either actually use the permission with an explanation screen, or remove the permission from the app manifest.

Reason 3 — Content for minors without adequate protections

Educational apps always serve teenage or child audiences. This triggers extra rules (COPPA, LGPD for minors): parental consent, anonymisation, tracking limitation, ad restriction. Not complying = quick rejection. Solution: correctly define the age range and implement proportional protections.

Reason 4 — Unconfirmed institutional identity

App name says "Faculty X" but the developer account is in the name of a random individual. Apple and Google check this correspondence. Solution: institutional account, with institutional documents, in the correct name.

Consolidated total costs

A typical operation to publish a custom Moodle app on both stores involves:

Item Cost
Apple Developer Program account US$ 99/year
Google Play Developer account US$ 25 one-time
DUNS Number (Apple Org) Free
Privacy policy drafted by a lawyer R$ 800-2,500 one-time
Professional screenshots (designer) R$ 1,000-3,000 one-time
Short promotional video R$ 1,500-5,000 one-time
Development + app customisation R$ 30-80 thousand one-time
Annual maintenance on stores R$ 1,000-3,000/year

Typical launch total: R$ 35-95 thousand one-time + R$ 1,500-3,500/year recurring. I detailed the development cost in Moodle Mobile App vs Custom App.

Realistic timeline

  • Week 1-2: account creation, DUNS Number, privacy policy
  • Week 3-6: app development/customisation (in parallel with accounts)
  • Week 7: store dashboard setup, build upload, listing adjustment
  • Week 8: submission for review, rejection adjustments if any
  • Week 9-10: app published on both stores

This timeline assumes an experienced team and a well-coordinated process. First time without experience usually adds 4-6 weeks of rework.

Maintenance after launch

Publishing a Moodle app is just the beginning. Ongoing operation involves:

  • Annual renewal of Apple Developer account (US$ 99) — without renewal, the app goes offline
  • Renewal of distribution certificates (annual for Apple, automatic for Google)
  • Periodic app updates — every new Moodle version or visual adjustment needs to be submitted (update review is faster, usually <24h)
  • Responding to user reviews on both stores — good practice for store SEO and perception
  • Crash monitoring via Firebase Crashlytics or App Store Connect Analytics
  • Continuous compliance with new Apple/Google rules (change several times a year)

At Agathas Web we operate this complete cycle as a service: from the initial setup of accounts to the ongoing maintenance of publications, leaving the institution free to focus on educational content. To understand the package, it is also worth seeing the features that make the most difference for engagement — push notifications in the Moodle app and offline mode.