# First steps


# Overview

**App Store Manager** is a service layer on top of Apple App Store Connect and Google Play Console. It simplifies store listing maintenance by providing bulk operations that the stores themselves don't offer.

```mermaid
flowchart LR
    ASM[App Store Manager] --> Import[Bulk Import]
    ASM --> Translate[Translate]
    ASM --> Validate[Validate]
    ASM --> Upload[Batch Upload]

    Upload --> iOS[App Store Connect]
    Upload --> Android[Google Play Console]

    style ASM fill:#FF9800,color:#fff
    style Import fill:#9C27B0,color:#fff
    style Translate fill:#9C27B0,color:#fff
    style Validate fill:#9C27B0,color:#fff
    style Upload fill:#9C27B0,color:#fff
    style iOS fill:#007AFF,color:#fff
    style Android fill:#34A853,color:#fff
```

***

## What You Can Do

### Bulk Import Content

Import all your store listing content at once:

| Content Type     | Examples                                                 |
| ---------------- | -------------------------------------------------------- |
| **Descriptions** | Title, subtitle, keywords, short & long descriptions     |
| **Assets**       | Screenshots, app preview videos, icons, feature graphics |

Import methods:

* **From file** — Excel or JSON templates
* **From store** — Pull existing content from your live listings
* **Drag & drop** — Drop folders of screenshots directly into the manager

### Batch Upload

Upload everything to the stores in one operation — all languages, all assets, one click.

{% hint style="success" %}
What takes hours in the store consoles takes minutes with App Store Manager.
{% endhint %}

***

## Quick Start

1. **Create an app** — Link your App Store or Play Console app
2. **Create a store listing** — Container for your metadata and assets
3. **Add content** — Import, drag & drop, or type directly
4. **Upload** — Push everything to the stores

{% hint style="info" %}
Translation and validation features are available but optional. You can import ready-to-go content and upload immediately.
{% endhint %}

***

## Next Steps

* [Use cases](/documents/readme/use-cases) — Common workflows and scenarios
* [Detailed walkthrough](/documents/readme/how-to-work-with-the-app-store-manager) — Step-by-step guide
* [App Store Connect access](/documents/access/app-store-connect-access)
* [Google Play Console access](/documents/access/google-play-console-access)

Need help? [Contact us](https://www.iwantanelephant.com/contact/)


# Use Cases

App Store Manager supports a variety of workflows for different team sizes and objectives. Below are common scenarios showing how to get the most out of the platform.

***

## Quick Launch: Upload Ready Content

**Scenario:** You have professionally translated metadata and localized screenshots ready to go. You just need to get them into the stores quickly.

```mermaid
flowchart LR
    A[Excel/JSON File] --> B[Import to ASM]
    C[Screenshot Folders] --> D[Drag & Drop]
    B --> E[Upload to Stores]
    D --> E

    style A fill:#9C27B0,color:#fff
    style C fill:#9C27B0,color:#fff
    style E fill:#4CAF50,color:#fff
```

**Steps:**

1. Prepare metadata in [Excel or JSON template](/documents/import-and-export/import-from-file)
2. Import file to App Store Manager
3. Drag & drop screenshot folders into Screenshot Manager
4. Upload everything to both stores in one batch

**Time saved:** Hours of manual entry per language

***

## Market Expansion: Translate & Launch

**Scenario:** Your app is live in English. You want to test new markets with translated store listings before investing in professional localization.

```mermaid
flowchart LR
    A[Import from Store] --> B[Auto-Translate]
    B --> C[Review & Adjust]
    C --> D[Upload]

    style A fill:#2196F3,color:#fff
    style B fill:#9C27B0,color:#fff
    style D fill:#4CAF50,color:#fff
```

**Steps:**

1. [Import existing metadata](/documents/import-and-export/import-from-store) from App Store Connect or Google Play
2. Use [automatic translation](/documents/edit-translate-and-upload/automatic-translation) to generate 30+ languages
3. Review translations — adjust text that exceeds character limits
4. Upload to stores

**Benefit:** Test market response before commissioning professional translations

{% hint style="info" %}
Premium plan subscribers get neural network-based translations for more natural language quality.
{% endhint %}

***

## Seasonal Campaigns: Multiple Store Listings

**Scenario:** You run seasonal promotions (holiday sales, summer campaigns, back-to-school) and need different store listings throughout the year.

```mermaid
flowchart TB
    App[Your App]
    App --> Main[Main Store Listing]
    App --> Holiday[Holiday Campaign]
    App --> Summer[Summer Special]
    App --> BTS[Back to School]

    style App fill:#FF9800,color:#fff
    style Main fill:#2196F3,color:#fff
    style Holiday fill:#E91E63,color:#fff
    style Summer fill:#FFC107,color:#000
    style BTS fill:#4CAF50,color:#fff
```

**Steps:**

1. Create a store listing for each campaign
2. Prepare themed screenshots and descriptions
3. Upload the appropriate listing when the campaign starts
4. Switch back to your main listing when the campaign ends

**Benefit:** Pre-prepare campaigns and deploy instantly when needed

***

## A/B Testing: Custom Product Pages (iOS)

**Scenario:** You want to test different value propositions, screenshots, or messaging for different audience segments.

```mermaid
flowchart LR
    subgraph CPPs
        A[Gaming Audience]
        B[Productivity Users]
        C[Enterprise]
    end

    CPPs --> ASC[App Store Connect]
    ASC --> Ads[Apple Search Ads]

    style A fill:#E91E63,color:#fff
    style B fill:#2196F3,color:#fff
    style C fill:#673AB7,color:#fff
    style ASC fill:#007AFF,color:#fff
```

**Steps:**

1. Create multiple [Custom Product Pages](/documents/edit-translate-and-upload/custom-product-pages)
2. Tailor screenshots and promotional text for each audience
3. Upload and submit for review directly from App Store Manager
4. Link CPPs to Apple Search Ads campaigns

**Benefit:** One app, multiple optimized store experiences

{% hint style="success" %}
App Store Connect supports up to 35 Custom Product Pages. Create them in App Store Manager and manage them all from one place.
{% endhint %}

***

## Team Collaboration: Multi-User Workflow

**Scenario:** Your team includes content writers, designers, and a release manager. Everyone needs access without stepping on each other's work.

```mermaid
flowchart TB
    subgraph Team
        Writer[Content Writer]
        Designer[Designer]
        Manager[Release Manager]
    end

    Writer --> ASM[App Store Manager]
    Designer --> ASM
    Manager --> ASM

    ASM --> Lock[Lock Store Listing]
    Lock --> Edit[Edit Content]
    Edit --> Unlock[Unlock]
    Unlock --> Upload[Upload to Stores]

    style Writer fill:#4CAF50,color:#fff
    style Designer fill:#9C27B0,color:#fff
    style Manager fill:#FF9800,color:#fff
```

**Steps:**

1. [Invite team members](/documents/access/team-management/permissions) with appropriate roles
2. [Lock store listings](/documents/access/team-management/locking-unlocking) while editing to prevent conflicts
3. Use audit logs to track changes
4. Release manager handles final upload

**Roles:**

| Role       | Permissions                                       |
| ---------- | ------------------------------------------------- |
| **Viewer** | Read-only access                                  |
| **Editor** | Edit metadata, screenshots                        |
| **Admin**  | Full access including uploads and team management |

***

## Backup & Archive: Export Store Listings

**Scenario:** You need to maintain backups of your store listings or archive seasonal content for reuse.

```mermaid
flowchart LR
    Store[Live Store] --> Import[Import to ASM]
    Import --> Export[Export to File]
    Export --> Archive[Archive/Backup]
    Archive --> Restore[Restore Later]

    style Store fill:#007AFF,color:#fff
    style Archive fill:#607D8B,color:#fff
```

**Steps:**

1. [Import from store](/documents/import-and-export/import-from-store) to capture current state
2. [Export to file](/documents/import-and-export/export-to-file) (JSON or Excel)
3. Store files in your preferred backup location
4. Re-import when needed

**Benefit:** Version control for your store listings

***

## Localization Platform Integration

**Scenario:** Your team uses Phrase or Lokalise for translations. You need to sync translations to the app stores.

```mermaid
flowchart LR
    Phrase[Phrase/Lokalise] --> Export[Export Translations]
    Export --> ASM[Import to ASM]
    ASM --> Stores[Upload to Stores]

    style Phrase fill:#26C6DA,color:#fff
    style ASM fill:#FF9800,color:#fff
    style Stores fill:#4CAF50,color:#fff
```

**Steps:**

1. Export translations from your localization platform
2. Format as App Store Manager [Excel/JSON template](/documents/import-and-export/import-from-file)
3. Import to App Store Manager
4. Upload to stores

See:

* [Export Phrase translations to Stores](/documents/phrase-and-lokalise/export-phrase-translations-to-the-stores)
* [Import metadata to Phrase](/documents/phrase-and-lokalise/import-app-store-metadata-to-phrase)
* [Import metadata to Lokalise](/documents/phrase-and-lokalise/import-app-store-metadata-to-lokalise)

***

## Android Release Notes

**Scenario:** You need to create and manage "What's New" release notes for Google Play across multiple languages.

```mermaid
flowchart LR
    A[Write Release Notes] --> B[Translate]
    B --> C[Upload to Track]

    style A fill:#34A853,color:#fff
    style B fill:#9C27B0,color:#fff
    style C fill:#4CAF50,color:#fff
```

**Steps:**

1. Navigate to [Android Release Notes](/documents/release-notes-creation/android-release-notes-creation)
2. Write your release notes in one language
3. Translate to all supported languages
4. Upload to your chosen release track (production, beta, alpha, internal)

**Benefit:** Manage release notes separately from full store listing updates

***

## Summary: Choose Your Workflow

| Use Case           | Key Features Used                               |
| ------------------ | ----------------------------------------------- |
| Quick launch       | File import, drag & drop, batch upload          |
| Market expansion   | Store import, auto-translate, batch upload      |
| Seasonal campaigns | Multiple store listings, quick switching        |
| A/B testing        | Custom Product Pages, direct review submission  |
| Team collaboration | User roles, locking, audit logs                 |
| Backup & archive   | Store import, file export                       |
| Localization sync  | File import/export, Phrase/Lokalise integration |
| Release notes      | Android Release Notes Creator                   |

***

## Next Steps

* [Detailed walkthrough](/documents/readme/how-to-work-with-the-app-store-manager)
* [File import templates](/documents/import-and-export/import-from-file)
* [Screenshot upload guide](/documents/edit-translate-and-upload/screenshot-and-asset-upload)
* [Subscription plans](/documents/account-and-subscriptions/subscriptions)

Need a custom workflow? [Contact us](https://www.iwantanelephant.com/contact/)


# Detailed Walkthrough

This walkthrough covers the complete workflow from setting up your first app to uploading metadata, screenshots, and Custom Product Pages to the stores.

```mermaid
flowchart LR
    subgraph Setup
        A[Create App]
        B[Create Store Listing]
    end
    subgraph Content
        C[Add Metadata]
        D[Add Screenshots]
    end
    subgraph Optional
        E[Translate]
        F[Validate]
    end
    subgraph Publish
        G[Upload to Stores]
    end

    A --> B --> C --> D --> E --> F --> G
    D --> G

    style A fill:#FF9800,color:#fff
    style B fill:#FF9800,color:#fff
    style C fill:#9C27B0,color:#fff
    style D fill:#9C27B0,color:#fff
    style E fill:#2196F3,color:#fff
    style F fill:#2196F3,color:#fff
    style G fill:#4CAF50,color:#fff
```

{% hint style="warning" %}
**Prerequisites:**

* You require a developer account for App Store Connect and/or Google Play Console.
* The app already exists within the respective store (draft or published).
  {% endhint %}

***

## 1. Create an App

After logging in to the [App Store Manager](https://appstoremanager.net/), click **My apps** on the front page.

<figure><img src="/files/F8I1M5dCcad5Yf9ovhwK" alt=""><figcaption><p>App Store Manager front page</p></figcaption></figure>

### Add an app manually

Click **New App** and provide:

| Field                        | Description                                                         |
| ---------------------------- | ------------------------------------------------------------------- |
| **Platform**                 | Android or iOS                                                      |
| **Name**                     | A display name (use your real app name for clarity)                 |
| **Package name / Bundle ID** | The technical identifier from your app code and store configuration |

### Add an existing published app

Already published? Use the search function instead:

1. Enter the app title (or part of it)
2. Select the platform (Android or iOS)
3. Choose the store language
4. Click **Search**

<figure><img src="/files/loM7zgql2Hfq88tDGLVs" alt=""><figcaption><p>Search and add existing apps</p></figcaption></figure>

Select your app from the results and click **Finish**.

{% hint style="info" %}
If your app doesn't appear, check the spelling, ensure it's published, and verify the platform selection. Unpublished apps must be added manually.
{% endhint %}

***

## 2. Create a Store Listing

A **Store Listing** (formerly called "package") is a container for your metadata and assets. You can create multiple store listings for different occasions — regular operation, seasonal campaigns, A/B tests, etc.

Open your app and click **New Store Listing**.

<figure><img src="/files/jEQ2d9eUZIbxL7dZibgq" alt=""><figcaption><p>Store listing creation</p></figcaption></figure>

Give it a descriptive name and click **Save**.

A store listing contains:

| Asset Type           | Contents                                                               |
| -------------------- | ---------------------------------------------------------------------- |
| **App descriptions** | Title, short description, long description, keywords, promotional text |
| **Screenshots**      | All device sizes, all languages                                        |
| **App previews**     | Video previews (iOS only)                                              |
| **Icons & graphics** | App icon, feature graphic (Android)                                    |

***

## 3. Add Metadata

Navigate to **App descriptions** in your store listing. Here you can manage text content for all languages.

<figure><img src="/files/r4IFxGGvT7bWgviGIqOP" alt=""><figcaption><p>Metadata editing view</p></figcaption></figure>

### Input methods

**Type directly** — Enter content manually for each language and field.

**Import from store** — Pull existing metadata from your live App Store Connect or Google Play listing.

<figure><img src="/files/9Fd5wKztnhjFJakzdw3K" alt=""><figcaption><p>Import from store</p></figcaption></figure>

**Import from file** — Use Excel or JSON templates to bulk-import content.

<figure><img src="/files/iVerFzSWn5HqCkowU6yp" alt=""><figcaption><p>Import from file</p></figcaption></figure>

{% hint style="info" %}
Store access requires API credentials. See [App Store Connect access](/documents/access/app-store-connect-access) or [Google Play Console access](/documents/access/google-play-console-access).
{% endhint %}

After import, preview and select which languages to add:

{% hint style="warning" %}
Google Play requires title, short description, and description when creating a new language. These fields are **mandatory**.
{% endhint %}

***

## 4. Add Screenshots (Drag & Drop)

Navigate to **Screenshots** in your store listing. The Screenshot Manager supports drag & drop with **Smart Recognition** — it automatically detects language, device size, and slot position from your folder structure and filenames.

<figure><img src="/files/lmyZFolRnRRAExecbE1a" alt=""><figcaption><p>Screenshot Manager</p></figcaption></figure>

### How to upload

1. **Drag files or folders** directly into the Screenshot Manager
2. The Smart Recognition Engine detects:
   * **Language** — from folder names like `en-US`, `german`, `deutsch`
   * **Slot position** — from filenames like `1.png`, `en-US_3_1290x2796.png`
   * **Device size** — from the actual image dimensions
3. **Review** the auto-assigned positions
4. **Manually assign** any files in "Uncategorized"

<figure><img src="/files/JWxKlnChefOz87SCB78s" alt=""><figcaption><p>Auto-detected locales and resolutions</p></figcaption></figure>

{% hint style="success" %}
Organize your screenshots in folders by language (e.g., `screenshots/en-US/`, `screenshots/de-DE/`) for automatic recognition.
{% endhint %}

### Alternative upload methods

| Method                 | Best for                                     |
| ---------------------- | -------------------------------------------- |
| **Screenshot Manager** | Day-to-day management with real-time control |
| **ZIP upload**         | Automated bulk processing                    |
| **Google Drive**       | External storage and team sharing            |

See [Screenshot and asset upload](/documents/edit-translate-and-upload/screenshot-and-asset-upload) for templates and technical specifications.

***

## 5. Add App Previews (Videos)

Navigate to **App Previews** in your store listing. Video uploads work the same as screenshots — drag & drop with Smart Recognition.

<figure><img src="/files/7OY0Uy39c3FeWHCYDDSD" alt=""><figcaption><p>App preview upload</p></figcaption></figure>

{% hint style="info" %}
App previews are only supported for **App Store Connect**. Google Play uses YouTube URLs set directly in the console.
{% endhint %}

**Requirements:**

* Duration: 15–30 seconds
* Max file size: 500 MB
* Max 3 previews per device size per locale
* Formats: `.mov`, `.m4v`, `.mp4`

See [App preview upload](/documents/edit-translate-and-upload/app-preview-video-upload) for full specifications.

***

## 6. Translate (Optional)

Use automatic translation to expand into new markets quickly.

1. Navigate to **App descriptions**
2. Click **Translate**
3. Select the **source language**
4. Select **target languages**
5. Click **Translate**

<figure><img src="/files/Qy79YUQoiy5LZYK1gaQC" alt=""><figcaption><p>Automatic translation</p></figcaption></figure>

Preview and select which translations to adopt:

<figure><img src="/files/YDv6N3peJTvZQZewJQFR" alt=""><figcaption><p>Translation in progress</p></figcaption></figure>

{% hint style="warning" %}
Translations consume characters from your subscription plan. Review translations carefully — word lengths vary between languages.
{% endhint %}

***

## 7. Validate

Before uploading, check for errors. The App Store Manager shows validation status for each language:

* **Bold fields** — filled
* **! icon** — validation error (usually exceeds character limit)

Use the filter to quickly find languages with errors.

Common issues:

* Text exceeds maximum length
* Required fields empty
* Invalid characters

***

## 8. Upload to Stores

Navigate to **Upload to…** and select the languages to transfer.

<figure><img src="/files/Nto1nB1SjsD9iQPh7IdB" alt=""><figcaption><p>Select languages for upload</p></figcaption></figure>

{% hint style="danger" %}
Uploading **overwrites** existing content in the store. Empty fields do not overwrite — only filled fields are transferred. Create a backup before uploading.
{% endhint %}

### Upload options

| Platform    | Options                                                                       |
| ----------- | ----------------------------------------------------------------------------- |
| **Android** | Select release track: production, beta, alpha, or internal                    |
| **iOS**     | Changes are staged — you must manually submit for review in App Store Connect |

### Start the upload

1. Select languages
2. Add credentials (if not saved)
3. Click **Upload**
4. Monitor progress in the activity log

<figure><img src="/files/8LjNuOb9LnuMabgw41Tv" alt=""><figcaption><p>Activity log</p></figcaption></figure>

{% hint style="info" %}
Full uploads with all languages and resolutions can take up to 1 hour. Business customers receive prioritized processing.
{% endhint %}

***

## 9. Custom Product Pages (iOS)

Custom Product Pages let you create alternate App Store listings for different audiences or campaigns. Available for Premium Plan subscribers.

<figure><img src="/files/ZNX04u4Or95iodShBwy4" alt=""><figcaption><p>Custom Product Pages overview</p></figcaption></figure>

### Create a CPP

1. Navigate to **Custom Product Pages**
2. Click **New CPP**
3. Enter a name (used as identifier in App Store Connect — cannot be changed later)

<figure><img src="/files/LONX3DdcAx0OR3rHJswE" alt=""><figcaption><p>Name your Custom Product Page</p></figcaption></figure>

### Add content

**Promotional text** — Import/export via JSON or Excel templates.

<figure><img src="/files/bVC8BXOIeKr9INsBOHPw" alt=""><figcaption><p>CPP promotional text</p></figcaption></figure>

**Screenshots** — Same drag & drop workflow as standard store listings.

<figure><img src="/files/MLgTFQNJRzqSiUCKNcBL" alt=""><figcaption><p>CPP screenshot upload</p></figcaption></figure>

### Upload and submit for review

When ready, upload the CPP to App Store Connect. You can submit directly for Apple review from within App Store Manager.

<figure><img src="/files/SiOu03Srhu1Hfipzc5qM" alt=""><figcaption><p>Upload and submit CPP for review</p></figcaption></figure>

{% hint style="success" %}
App Store Connect supports up to 35 Custom Product Pages simultaneously.
{% endhint %}

***

## Quick Reference

| Task                 | Location                             |
| -------------------- | ------------------------------------ |
| Create app           | My apps → New App                    |
| Create store listing | App → New Store Listing              |
| Edit metadata        | Store Listing → App descriptions     |
| Upload screenshots   | Store Listing → Screenshots          |
| Upload videos        | Store Listing → App Previews         |
| Translate            | App descriptions → Translate         |
| Upload to store      | Store Listing → Upload to…           |
| Manage CPP           | Store Listing → Custom Product Pages |

***

## Next Steps

* [Supported languages](/documents/edit-translate-and-upload/supported-languages)
* [Screenshot specifications](/documents/edit-translate-and-upload/screenshot-and-asset-upload)
* [App preview specifications](/documents/edit-translate-and-upload/app-preview-video-upload)
* [Custom Product Pages](/documents/edit-translate-and-upload/custom-product-pages)

Need help? [Contact us](https://www.iwantanelephant.com/contact/)


# Common Obstacles

Using App Store Connect and Google Play Console is not always easy. The App Store Manager abstracts and simplifies various accesses. Nevertheless, some peculiarities of the stores must be taken into account.

## Prerequisites

* Each account for App Store Connect and Google Play Console is available.
* API Access is set up
* A first app is maintained
* A subscription to the App Store Manager that meets the requirements has been purchased.

## Access trouble

```
ERROR # data: Permission denied. Please set your Google Play service account permissions accordingly.
```

* Ensure that the API access is set up correctly.
* See the documentation on how to grant store access:
  * [App Store Connect](/documents/access/app-store-connect-access)
  * [Google Play Console](/documents/access/google-play-console-access)

## Common Errors While Uploading App Screenshots

See the general [Screenshot and asset upload section](/documents/edit-translate-and-upload/screenshot-and-asset-upload) for more details.

```
ERROR # data: Failed to download your provided zip file. In addition, set the link access rights in Google driveaccordingly. "Anyone on the Internet with this link" should be able to view the file.
```

* Double-check the access rights within Google Drive.
* Validate the Link (by clicking on it). Is the file available?
* Is the spelling correct?

```
ERROR # data: Please verify the structure of the zip file you provided. Language folders need to be provided in the root (first directory in the hierarchy) folder.
```

* Check the structure of the Screenshot file template.
* The structure must remain as specified in the template, e.g., locales and subfolders cannot be modified.
* Use the original template for iOS or Android screenshot uploads.

```
ERROR # data: When creating and initializing a new language (not yet set within Google Play Console), all three fields: title, short description, and description have to be specified and can't be left empty. For already existing languages, a single field can be set.
```

* Before uploading screenshots to a specific language in Google Play Console, ensure that the title, short description, and description are present for this particular language. You may upload the app descriptions with the App Store Manager or add the information manually.
* Already existing languages, with complete descriptions, can be just updated.

## Trouble While Uploading App Descriptions

```
ERROR # data: When creating and initializing a new language (not yet set within Google Play Console), all three fields: title, short description, and description have to be specified and can't be left empty. For already existing languages, a single field can be set.
```

* All fields (title, description, short description) are required if you add languages not yet available on Google Play Console.
* Ensure they are all present in your upload.

```
ERROR # data: Cannot update languages - could not find an editable version for 'IOS'
```

* Before you can upload metadata to App Store Connect, manually create an editable version within App Store Connect.
* Navigate to App Store Connect, add a new version to your app and ensure the app is in "Prepare for submission" before you start the App Store Manager metadata upload.

```
 ERROR # data: An attribute value has invalid characters.
```

* App Store Connect doesn't allow emojis or other characters within the descriptions.
* Ensure there are no invalid characters in your app's metadata.

```
ERROR # data: Uploading of release notes failed.
```

* Validate that you have set all the [permissions ](/documents/access/google-play-console-access)for uploading Android release notes.
* Select the correct track or provide the version code.


# Access


# App Store Connect access

Currently, Apple **no longer allows** the use of accounts without 2-factor authentication. Therefore, the previous login procedure is no longer valid.

To continue uploading metadata or screenshots, an App Store Connect API key is required immediately. This can be provided in the App Manager for the upload duration. After the upload has been completed (successfully and in the event of an error), the key is deleted from the App Store Manager without leaving any residue. Optionally, it can also be encrypted for later use.

Since uploading metadata and screenshots is asynchronous (the start of the upload can take a while), using 2-factor authentication is not supported.

## Creation of an App Store Connect API key

Log in to [App Store Connect](https://appstoreconnect.apple.com/) and navigate to <https://appstoreconnect.apple.com/access/api>. There, click on the plus and create a new API key.\
Do not reuse an existing one, but create a new one. You can also delete it after the upload is done.

<figure><img src="/files/04Jj4ZBmqPnLp7s7WI0L" alt=""><figcaption><p>Users and access – App Store Connect API</p></figcaption></figure>

## Generate API key

Create the API key. Please give it a name (< 30 characters). Choose a name you can use in the future: E.g., App Store Manager key.

<figure><img src="/files/5jP3Cuk7VntDSWiNd5Hg" alt=""><figcaption><p>Provide a name for the key</p></figcaption></figure>

Then select the role “App Manager” under Access. Important, for the App Store Manager, only this one role is needed. Therefore, do not assign any further permissions. To check the detailed user rights, read the App Store [Connect docs](https://developer.apple.com/support/roles/).

{% hint style="info" %}
The role entitles all possibly maintained apps. Therefore, the key can also transfer additional metadata using the App Store Manager.
{% endhint %}

<figure><img src="/files/TCGnzOHSSRRQCFTlVToH" alt=""><figcaption><p>Select the correct access right</p></figcaption></figure>

Now, the new key appears in the overview. Via download, you can download the key file once.

{% hint style="warning" %}
This is only possible once. Keep the key file safe.
{% endhint %}

<figure><img src="/files/rpaf7g0mncyIKCJRpfNi" alt=""><figcaption><p>Download the key file</p></figcaption></figure>

{% hint style="info" %}
Keep the key file safe, or delete it after use.
{% endhint %}

You will need the following information **from this page** for App Store Connect signup within the App Store Manager’s **“Import from store**” or **“Upload to App Store**” steps:

1. Issuer ID – Identifies the issuer who created the authentication token.
2. Key ID – of the previously generated key
3. Key file – the App Store Manager requires the file’s content.

Open the key file (ending with .p8) with a text editor and copy the **entire** content to the clipboard.

<figure><img src="/files/NLvb6NoUEi0XvfppSu3Y" alt=""><figcaption><p>Example key file content</p></figcaption></figure>

Copy the key ID, the Issuer ID, and the full content of the key file to the App Store Manager’s App Store Connect login fields, and you are good to go.

<figure><img src="/files/x7LuRjAaVijB1Ddng06U" alt=""><figcaption><p>App Store Connect credentials</p></figcaption></figure>

{% hint style="success" %}
After the successful transfer, you can revoke (delete) the key within App Store Connect or keep it for further usage.
{% endhint %}


# Google Play Console access

Log in to the Google Play Console typically requires your Google Account or your login credentials. But if you like to grant access to specific third-party applications, another way is required to provide the requested data. A third-party application that allows data analysis or automation, like the [App Store Manager](https://appstoremanager.net/), access the Google Play Console through various APIs. But without providing access rights and access permission, no connection is allowed.\
The following article describes the required steps to configure API access by creating a new service account for a selected app for the App Store Manager. Basically, three main steps (with some actions) have to be performed.

1. Enable Google Play Android Developer API in the [Google Cloud Console](https://console.developers.google.com/apis/api/androidpublisher.googleapis.com/overview)
2. Create a new service account within the [Google Cloud Console](https://console.cloud.google.com/)
3. Set permission within the [Google Play Console](https://play.google.com/)

Follow these step-by-step instructions because sometimes you can get lost in these user interfaces.

### Enable Google Play Android Developer API

* Go to the [Google Cloud Console](https://console.cloud.google.com/apis/api/androidpublisher.googleapis.com): Navigate to your Google Cloud project's APIs & Services section.
* Search for the API: Search for "Google Play Developer API" or "Android Publisher API".
* Enable the API: Click on the API name and then click the "Enable" button.
* Wait for propagation: It might take a few minutes for the API to become active in your project after enabling it.

### The Google Play Console

Open the [Google Play Console](https://play.google.com/console) and navigate to "Users and permissions" in the app overview level. On this screen, you’ll find – if you already have done so – your configured service accounts or users (their emails) who already have access.\
You can adjust the permission on the service account globally (all apps) or per app on this page.

<figure><img src="/files/OUcFgodjJponnYKLl375" alt="Google Play Console Users and Permissions"><figcaption><p>All apps</p></figcaption></figure>

### Create a new service account

The [Google Cloud Platform](https://cloud.google.com/docs/overview) is where you can configure various Google Cloud services, their APIs, and their access rights.

> Google Cloud Platform, offered by Google, is a suite of cloud computing services that runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search, Gmail, file storage, and YouTube.<br>
>
> *See <https://en.wikipedia.org/wiki/Google\\_Cloud\\_Platform>*

Navigate to “IAM & Admin” and then to “Service Accounts”, if this view is not already open. The title should show “Service accounts for project Google Play Android Developer”.\
You’ll see other service accounts if you already have some in place. If you have lost your key file ( you shouldn’t), you can create a new one here.

<figure><img src="/files/lVjFwlgyMAFzBSoevRsy" alt="Google Cloud Platform Service Accounts"><figcaption><p>Google Cloud Platform</p></figcaption></figure>

### Create service account

Select “Create new service account” on the top. A form will guide you through the following steps. Provide a service account name. Add something that could be remembered. For instance, the name of the service you are providing access to. Leave the ID as is and give an excellent, remarkable description.

<figure><img src="/files/lRC3A3UvoAT8WpQvAslW" alt="Google Cloud Create Service Account"><figcaption><p>Create service account</p></figcaption></figure>

### Set role

In the second step, choose a role. The role determines a specific access right. We will change it later to the required ones. Choose “Project/ Editor” or something with fewer access rights. Click on done, and you have successfully created a new service account.

<figure><img src="/files/DgX5Dz6NQ7Baghxbn5le" alt="Google Cloud Select Role"><figcaption><p>Select a role</p></figcaption></figure>

### Create key

Your new account appears as your first service account or between existing ones. Validate the name and description. On the far right, you see the thee three action dots. Click on them and select “Create key”.

<figure><img src="/files/CpezlpsAnSZi3gWR77To" alt="Google Cloud Create Key"><figcaption><p>Create JSON or P12 key</p></figcaption></figure>

### Key type

A modal shows up and provides two options and two key types. The JSON format or the P12 format. You should know which key is required for your third-party application access at this stage.\
[**JSON** ](https://www.json.org/json-en.html)(JavaScript Object Notation) is a lightweight data interchange format. It will contain some encrypted strings, among other information.\
The [P12 format](https://en.wikipedia.org/wiki/PKCS_12) is a binary archive file storing many cryptography objects as a single file.\
**The App Store Manager accepts a JSON key file only!**

<figure><img src="/files/J8KWpQ8AAsc8pVcxVZGN" alt="Google Cloud Key Type Selection"><figcaption><p>Key type selection</p></figcaption></figure>

<figure><img src="/files/Eo8xBQ9PQoAjbhcEUAxg" alt="Google Cloud JSON Key File"><figcaption><p>JSON key file</p></figcaption></figure>

### Download key

In our example, we create a JSON key file and download it to our hard drive. Take the file and store it somewhere safe. We will require this file within our third-party application.\
When you finish, close this tab or window and navigate to the Google Play Console.

<figure><img src="/files/sP8uQqZ0v2wKQQxUHlGF" alt="Google Cloud Download JSON Key"><figcaption><p>Download JSON</p></figcaption></figure>

### Add the service account to Google Play Console

After creating the new service account, copy the newly created "email" with your chosen name and something like @....iam.gserviceaccount.com, to the clipboard.\
\
Go back to the Google Play Console and add the service account's email to the "Users and permission" list by selecting the "invite new users" button.

<figure><img src="/files/HCNE4xS9yuU9hrtJfkPW" alt=""><figcaption><p>"Invite" the service account</p></figcaption></figure>

### App permissions

Navigate to the first tab, “App permissions”. Here, you choose one or more apps to which the service accounts get access. Select only the required ones. Press “Apply”. A modal will show up and allow you to modify some permissions, but not all. This is because we have to alter the global service account permission first. Close the modal and navigate to “Account permissions”.

<figure><img src="/files/D9GlzQu5jdx1r9ukvzI5" alt="Google Play Console App Permissions"><figcaption><p>App permissions</p></figcaption></figure>

### Remove permissions

Removing all global permissions and setting each app's service account access rights individually is a good idea. This way, no unwanted authorizations creep in.\
Remove all checkboxes and switch back to the “App permissions” tab.<br>

<figure><img src="/files/ds2Yk9I1zheP5DYgkavh" alt="Google Play Console Account Permissions"><figcaption><p>Account permissions</p></figcaption></figure>

### Set access permissions

Once again, select the app for which you want to assign rights. The App Store Manager requires the following access rights to work correctly:

* View app information (read-only)
* Manage store presence
* Manage testing tracks and edit tester lists - to upload release notes

The metadata upload requires:

* View app information (read-only) – to access and download metadata for import
* View app quality information (read-only) - is then automatically included
* Manage store presence – to upload metadata and screenshots
* Manage policy declarations - is then automatically included

Release notes also require the following:

* Release to production, exclude devices, and use Play app signing - to publish to the production track
* Release apps to testing tracks - to publish in test and internal tracks

Others are not required.

<figure><img src="/files/8VUHOzaWzWO7ijD8GmCi" alt=""><figcaption><p>Access permissions</p></figcaption></figure>

### Provide the result

Use the created key file (JSON) within your desired application. Sometimes, you have to upload the whole file, and in the [App Store Manager](https://www.iwantanelephant.com/app-store-management-localization/), you provide only the content of the JSON file. Therefore, open the file with your preferred editor (Notepad++, UltraEdit, or your standard OS editor) and copy the entire content with all brackets. We have configured API access for the App Store Manager by adding the JSON string.

<figure><img src="/files/vaHX2QjQynvWwUCqn2Wm" alt=""><figcaption><p>Provide the JSON key file content</p></figcaption></figure>

### Configure API access to Google Play – conclusion

A few **critical** notes on the storage and management of the service accounts and key files:

* **Don’t provide more access rights than required**
* **Delete unneeded service accounts**
* **Don’t forget to remove access to applications you don’t need anymore**
* **If you have “lost” a key file, terminate the service account and configure a new one**

We have established third-party access to the Google Play Console and configured the required access rights.


# Manage credentials

Store access data can be saved in the App Store Manager to increase access and processes. Any number of API keys for App Store Connect and Google Play Console can be stored and assigned to the apps created. The key stored in the app settings is used for the relevant Store access (upload, import from store).

The storage of access data is optional. Access data is always encrypted and cannot be viewed again.

**We recommend treating access data carefully and blocking it again in the stores if it is not used frequently.**

## Configuring credentials / API keys

The keys can be configured as described here ([Apple](/documents/access/app-store-connect-access), [Google](/documents/access/google-play-console-access)).\
To use them in the App Store Manager, they can be entered when uploading or importing from the store and saved via the "Save credentials for further usage" button or the app settings.\
There are, therefore, two simple ways to do this.

To use the access data, they are entered before the methods:

* Apps > MyApp > MyPackage > App Descriptions > Import > Import from App Store
* Apps > MyApp > MyPackage > App Descriptions > Import > Import from Play Store
* Apps > MyApp > MyPackage > App Descriptions > Upload
* Apps > MyApp > MyPackage > App Assets> Upload

## Configure credentials on the App setting level

The settings can be set per app and should not be entered again during the process.

To do this, go to the Profiles section (top right in the application) and then select either "Android credentials" or "iOS credentials".

<figure><img src="/files/u0EjZvfNIdVzRxxTpyhd" alt=""><figcaption><p>Create credentials</p></figcaption></figure>

New credentials can be created using the "New credentials" button. The "Name" field can be freely selected. We recommend a name that provides information about the credentials and offers a certain degree of recognition.

<figure><img src="/files/kh5pArjGAMuUNiRV7uTm" alt=""><figcaption><p>Add Google Play Consoe API key credentials</p></figcaption></figure>

The way the API key/ credential information is stored differs between the stores.

<figure><img src="/files/P8wOeklhYkrL5XvJ6Z2Q" alt=""><figcaption><p>App Store Connect credentials</p></figcaption></figure>

Any number of credentials can be created.

A stored credential (API key) can now be predefined once per app in the "App settings."

<figure><img src="/files/iuNnn32pOoTU4DF92TpN" alt=""><figcaption><p>Select credential</p></figcaption></figure>

## Configure credentials before a process

The settings can also be saved in the process, an alternative way to store credentials.

The access data is inserted via copy and paste and is then available for the selected process. If the "Save credentials for further usage" checkbox is not selected, the credentials are deleted from the system after the operation, both in the event of success and an error.

If "Save credentials for further usage" is selected, the access data is saved in the app and used automatically the next time.\
In this case, the App Store Manager assigns an automatically generated name under which they can be found and deleted.

<figure><img src="/files/zMdTD71Y10F0iDF9OxSJ" alt=""><figcaption><p>Credentials on the fly</p></figcaption></figure>

## Preconfigured credentials

Preconfigured credentials are displayed under their previously assigned name.\
If credentials are preconfigured, no further information is requested when accessing the store.

<figure><img src="/files/0qsMNR13PxG7o3ieF2QN" alt=""><figcaption><p>Preconfigured credentials</p></figcaption></figure>

## Deleting credentials

The credentials can be deleted individually in the profile area. The deletion cannot be undone. If credentials assigned to one or more apps are deleted, they will no longer be available to these apps the next time they are accessed.


# Team Management

Account owners can use the invitation feature to invite existing and new App Store Manager users. Invited users will receive an email containing a link to join.

When invited users access the App Store Manager, they can select either their personal account (a valid subscription is required) or the accounts to which they have been asked (the invited user requires no further subscription in this case).

In addition to sending the invitation, account owners can assign specific permissions to the invited users. These permissions determine what actions the invited users are allowed to take within the account owner's App Store Manager account, enabling a variety of roles and responsibilities.&#x20;

This feature requires an active Basic or Custom subscription. The limits and quotas of the respective subscription apply.


# Permissions

Invited users can access different features of the App Store Manager based on the relevant subscription. The account owner can modify, add, or revoke these permissions anytime.

The following usage permissions are available:

| Account Owner       | Manage package        | Edit metadata              | Upload metadata     | Upload assets             |
| ------------------- | --------------------- | -------------------------- | ------------------- | ------------------------- |
| Manage credentials  | Create a package      | Import metadata from file  | Upload app metadata | Upload screenshots        |
| Invite users        | Edit package settings | Import metadata from store |                     | Upload icons\*            |
| Remove users        | Delete packages       | Export metadata to file    |                     | Upload feature graphics\* |
| Create apps         |                       | Translate metadata         |                     |                           |
| Remove apps         |                       | Re-Translate metadata      |                     |                           |
| Edit permissions    |                       | Save metadata              |                     |                           |
| Manage subscription |                       |                            |                     |                           |

&#x20;\* Google only

Permissions have to be set for Android and Apple apps.

The permission to use and access the Android Release Notes Creator is set by the respective toggle on the permission page.

Functions, views, and buttons are not visible unless the user has the correct access permissions set.


# Locking/unlocking

Only one team member can work on a package simultaneously with shared accounts. Once the package is opened, it is locked for that user. The same user can remove the lock manually using the Leave and Unlock button. If the user exits the package by other means, the lock remains in place and can be removed later. There is no automatic unlock.

The account owner can remove locks at any time. A corresponding function can be found on the package overview page for each package itself if it is locked.

When the account owner unlocks the package, please remember that any changes made by the user may be lost if the user has not saved their work.


# Edit, translate and upload


# Supported languages

The App Store Manager supports a wide range of languages.\
However, different functions are available for the individual languages.

**Summary:**

* **Total languages:** 87
* **App Store Connect (iOS):** 50 languages
* **Google Play Console (Android):** 87 languages
* **With MS Translation:** 72 languages
* **With DeepL (Advanced):** 38 languages

The following table lists all supported languages:

<table><thead><tr><th width="101" data-type="number">#</th><th>Language</th><th>Google Play</th><th>App Store</th><th>Metadata</th><th>Assets</th><th>Translation</th><th>Advanced automatic translation*</th></tr></thead><tbody><tr><td>1</td><td>Afrikaans – af</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>2</td><td>Amharic – am</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>3</td><td>Arabic – ar</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>4</td><td>Armenian – hy-AM</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>5</td><td>Azerbaijani – az-AZ</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>6</td><td>Basque – eu-ES</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>7</td><td>Belarusian – be</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>8</td><td>Bangla – bn</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>9</td><td>Bulgarian – bg</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>10</td><td>Burmese – my-MM</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>11</td><td>Catalan – ca</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>12</td><td>Chinese (Hong Kong) – zh-HK</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>13</td><td>Chinese (Simplified) – zh-CN</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>14</td><td>Chinese (Traditional) – zh-TW</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>15</td><td>Croatian – hr</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>16</td><td>Czech – cs-CZ</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>17</td><td>Danish – da-DK</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>18</td><td>Dutch – nl-NL</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>19</td><td>English – en-AU</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>20</td><td>English – en-CA</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>21</td><td>English – en-IN</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>22</td><td>English – en-SG</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>23</td><td>English - en-ZA</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>24</td><td>English (United Kingdom) – en-GB</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>25</td><td>English (United States) – en-US</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>26</td><td>Estonian – et</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>27</td><td>Filipino – fil</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>28</td><td>Finnish – fi-FI</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>29</td><td>French – fr-FR</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>30</td><td>French (Canada) – fr-CA</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>31</td><td>Galician – gl-ES</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>32</td><td>Georgian – ka-GE</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>33</td><td>Gujarati – gu</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>34</td><td>German – de-DE</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>35</td><td>Greek – el-GR</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>36</td><td>Hebrew – iw-IL</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>37</td><td>Hindi – hi-IN</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>38</td><td>Hungarian – hu-HU</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>39</td><td>Icelandic – is-IS</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>40</td><td>Indonesian – id</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>41</td><td>Italian – it-IT</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>42</td><td>Japanese – ja-JP</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>43</td><td>Kannada – kn</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>44</td><td>Kazakh – kk</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>45</td><td>Khmer – km-KH</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>46</td><td>Korean (South Korea) – ko-KR</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>47</td><td>Kyrgyz – ky-KG</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>48</td><td>Lao – lo-LA</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>49</td><td>Latvian – lv</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>50</td><td>Lithuanian – lt</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>51</td><td>Macedonian – mk-MK</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>52</td><td>Malay – ms</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>53</td><td>Malay – ms-MY</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>54</td><td>Malayalam – ml</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>55</td><td>Marathi – mr</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>56</td><td>Mongolian – mn-MN</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>57</td><td>Nepali – ne-NP</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>58</td><td>Norwegian – no-NO</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>59</td><td>Odia – or</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>60</td><td>Persian – fa</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>61</td><td>Persian – fa-AE</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>62</td><td>Persian (Afghanistan) – fa-AF</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>63</td><td>Persian (Iran) – fa-IR</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>64</td><td>Polish – pl-PL</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>65</td><td>Portuguese (Brazil) – pt-BR</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>66</td><td>Portuguese (Portugal) – pt-PT</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>67</td><td>Punjabi – pa</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>68</td><td>Romanian – ro</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>69</td><td>Romansh – rm</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>70</td><td>Russian – ru-RU</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>71</td><td>Serbian – sr</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>72</td><td>Sinhala – si-LK</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr><tr><td>73</td><td>Slovak – sk</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>74</td><td>Slovenian – sl</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>75</td><td>Spanish (Latin America) – es-419</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>76</td><td>Spanish (Spain) – es-ES</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>77</td><td>Spanish (United States) – es-US</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>78</td><td>Swahili – sw</td><td>x</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>79</td><td>Swedish – sv-SE</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>80</td><td>Tamil – ta</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>81</td><td>Telugu – te</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>82</td><td>Thai – th</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>83</td><td>Turkish – tr-TR</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>84</td><td>Ukrainian – uk</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>85</td><td>Urdu – ur</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td>86</td><td>Vietnamese – vi</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td>87</td><td>Zulu – zu</td><td>x</td><td></td><td>x</td><td>x</td><td></td><td></td></tr></tbody></table>

\*The advanced translation is part of the Business Plan


# Upload metadata

The App Store Manager allows to upload metadata to App Store Connect and Google Play Console as a bulk for multiple languages.

Create an app and an app package and navigate to "App descriptions" within the app package.

Copy & paste, type, or import your metadata into the application.

Filter and switch between languages, empty languages, or languages in an error state.\
\
Apply your translations or corrections if necessary. The "retranslation" feature allows you to translate single fields to match your desired result and comply with field lengths.

Once you are ready, choose "Upload".\
Provide your credentials, and you will be almost ready to go.<br>

For uploads to App Store Connect, select the target platform of your choice. Select the iOS App, macOS App, or tvOS App.

For uploads to Google Play Console, you can choose a track and provide a version code. This is required to upload release notes and target a testing track. If you want to upload the release notes to the current production build, just leave everything empty. The other metadata will be uploaded to the current store presence.


# Screenshot and asset upload

Use App Store Manager to upload and transfer screenshots, icons, and feature graphics to **App Store Connect** (Standard & CPP) and **Google Play Console** — across all your supported languages and device sizes.

<figure><img src="/files/lvWXed3ajcggZ5QtoaNC" alt=""><figcaption><p>App Store Manager - Screenshot Upload</p></figcaption></figure>

### 1. Before you start

Assets are stored for **180 days** on Basic and Premium plans before automatic deletion. This does not affect your live store listings. Uploads can take up to 1 **hour** to complete (full upload with all resolutions and all languages).

#### Required permissions

Before you can transfer assets, make sure the following API access is in place.

**Google Play Console** — your API user needs [these three permissions](/documents/access/google-play-console-access):

* View app information
* Edit and delete draft apps
* Manage store presence

**App Store Connect** — a [valid API key must be configured](/documents/access/app-store-connect-access) in your App Store Manager account settings.

### 2. Upload methods

There are three ways to provide your assets. The **Screenshot Manager** (drag & drop) is recommended for most users. ZIP upload and Google Drive provisioning are better suited for automated or bulk workflows.

| Method             | Best for                                 | Uses Smart Recognition | App Store Connect | Google Play                          |
| ------------------ | ---------------------------------------- | ---------------------- | ----------------- | ------------------------------------ |
| Screenshot Manager | Day-to-day management, real-time control | Yes                    | Screenshots       | Not available                        |
| Direct ZIP upload  | Automated bulk processing                | No                     | Screenshots       | Screenshots, Icons, Feature Graphics |
| Google Drive       | Sharing or storing archives externally   | No                     | Screenshots       | Screenshots, Icons, Feature Graphics |

### 3. Screenshot Manager (drag & drop)

The Screenshot Manager gives you real-time control over your assets and is the only method powered by the **Smart Recognition Engine.**

**This Drag & Drop option is currently available only in App Store Connect.**\
**Google Play will follow in Spring 2026.**

<figure><img src="/files/lmyZFolRnRRAExecbE1a" alt=""><figcaption><p>Screenshot Manager - main view</p></figcaption></figure>

**What you can do:**

* Drag in single files, multiple files, or entire folder structures
* Reorder screenshots by dragging within a slot
* Manually assign any unrecognized files that land in "Uncategorized"
* Replace individual positions — uploading to Position 4 only affects that slot; all others stay as-is

<figure><img src="/files/RCDUJPh0Fcmvaan5OSaQ" alt=""><figcaption><p>Position-based slot grid</p></figcaption></figure>

A **"Remove all first"** toggle is currently in development. For now, replacement is position-based only.

#### How the Smart Recognition Engine works

When you drop files, the engine runs three checks in order:

**Step 1 — Language detection**

The engine first tries to identify the locale from your folder structure, then falls back to the filename if no match is found.

**Folder path scan (primary):** Every folder segment in the path is checked left to right. The first segment that matches a known locale code or alias is used.

**Filename fallback:** If no folder matches, the filename is split at `-`, `_`, or spaces and checked against the same alias list.

<figure><img src="/files/JWxKlnChefOz87SCB78s" alt=""><figcaption><p>Auto-detected locals and resolutions after drop</p></figcaption></figure>

The following aliases are recognized:

| Locale    | Recognized aliases                                                            |
| --------- | ----------------------------------------------------------------------------- |
| `ar-SA`   | `arabic`, `ar`, `ar-sa`, `ara`, `عربي`, `saudi`                               |
| `bn`      | `bangla`, `bengali`, `বাংলা`, `bangladesh`                                    |
| `ca`      | `catalan`, `català`, `catalonia`                                              |
| `cs`      | `czech`, `cz`, `cesky`, `čeština`, `czechia`                                  |
| `da`      | `danish`, `dk`, `dansk`, `denmark`                                            |
| `de-DE`   | `german`, `deutsch`, `de`, `de-de`, `deu`, `ger`                              |
| `el`      | `greek`, `gr`, `ελληνικά`, `greece`                                           |
| `en-AU`   | `en-au`, `australian`, `australia`                                            |
| `en-CA`   | `en-ca`, `canadian-english`                                                   |
| `en-GB`   | `en-gb`, `british`, `uk`, `england`, `united-kingdom`                         |
| `en-US`   | `english`, `en`, `en-us`, `eng`, `us`, `american`                             |
| `es-ES`   | `spanish`, `español`, `espanol`, `es`, `es-es`, `spa`, `castilian`            |
| `es-MX`   | `es-mx`, `mexican`, `mexico`                                                  |
| `fi`      | `finnish`, `suomi`, `finland`                                                 |
| `fr-CA`   | `fr-ca`, `quebec`, `canadian-french`                                          |
| `fr-FR`   | `french`, `français`, `francais`, `fr`, `fr-fr`, `fra`                        |
| `gu`      | `gujarati`, `ગુજરાતી`, `gujarat`                                              |
| `he`      | `hebrew`, `il`, `עברית`, `israel`                                             |
| `hi`      | `hindi`, `हिन्दी`, `india`                                                    |
| `hr`      | `croatian`, `hrvatski`, `croatia`                                             |
| `hu`      | `hungarian`, `magyar`, `hungary`                                              |
| `id`      | `indonesian`, `bahasa`, `indonesia`                                           |
| `it`      | `italian`, `italiano`, `ita`                                                  |
| `ja`      | `japanese`, `jp`, `jpn`, `nihongo`                                            |
| `kn`      | `kannada`, `ಕನ್ನಡ`, `karnataka`                                               |
| `ko`      | `korean`, `kr`, `kor`, `hangul`                                               |
| `ml`      | `malayalam`, `മലയാളം`, `kerala`                                               |
| `mr`      | `marathi`, `मराठी`, `maharashtra`                                             |
| `ms`      | `malay`, `my`, `melayu`, `malaysia`                                           |
| `nl-NL`   | `dutch`, `nl`, `nl-nl`, `nederlands`, `holland`, `netherlands`                |
| `no`      | `norwegian`, `nb`, `norsk`, `norway`                                          |
| `or`      | `odia`, `oriya`, `ଓଡ଼ିଆ`, `odisha`                                            |
| `pa`      | `punjabi`, `ਪੰਜਾਬੀ`, `پنجابی`, `punjab`                                       |
| `pl`      | `polish`, `polski`, `poland`                                                  |
| `pt-BR`   | `portuguese`, `português`, `pt`, `pt-br`, `brazilian`, `brazil`               |
| `pt-PT`   | `pt-pt`, `portugal`                                                           |
| `ro`      | `romanian`, `română`, `romania`                                               |
| `ru`      | `russian`, `rus`, `русский`                                                   |
| `sk`      | `slovak`, `slovenčina`, `slovakia`                                            |
| `sl`      | `slovenian`, `slovenščina`, `slovenia`                                        |
| `sv`      | `swedish`, `se`, `svenska`, `sweden`                                          |
| `ta`      | `tamil`, `தமிழ்`, `tamilnadu`                                                 |
| `te`      | `telugu`, `తెలుగు`, `telangana`, `andhra`                                     |
| `th`      | `thai`, `ไทย`, `thailand`                                                     |
| `tr`      | `turkish`, `türkçe`, `turkey`                                                 |
| `uk`      | `ukrainian`, `ua`, `українська`, `ukraine`                                    |
| `ur`      | `urdu`, `اردو`, `pakistan`                                                    |
| `vi`      | `vietnamese`, `vn`, `tiếng việt`, `vietnam`                                   |
| `zh-Hans` | `chinese`, `zh-hans`, `zh-cn`, `simplified`, `mandarin`, `chinese-simplified` |
| `zh-Hant` | `zh-hant`, `zh-tw`, `traditional`, `chinese-traditional`, `taiwan`            |

**Step 2 — Slot order**

The display position is read from numbers in the filename:

* **Numbers between underscores** — `en-US_3_1290x2796.png` is placed in Slot 3
* **Direct numeric names** — `1.png` through `10.png` are placed in the corresponding slot

<figure><img src="/files/BSImSX4pWI8yifTEXrBx" alt=""><figcaption><p>Slot assignment from filename</p></figcaption></figure>

**Step 3 — Resolution detection**

The target device is identified **exclusively** by the actual pixel dimensions of the image file. Folder names like "iPhone 15" are ignored. See [Technical specifications](#6-technical-specifications) below for the full list of supported dimensions.

<figure><img src="/files/ogfk6SBKOkS2KFnGw2Jg" alt=""><figcaption><p>Auto-assigned device resolutions</p></figcaption></figure>

### 4. Direct ZIP upload

Use this method for automated bulk processing. Files must be placed in the correct folders within the archive — the Smart Recognition Engine is not used here.

You must use the official templates. The folder hierarchy must be maintained exactly or the upload will fail.

Download the template for your platform from the [File Templates](/documents/import-and-export/file-templates) page before preparing your archive.

**File naming and minimums:**

| Platform | File naming        | Minimum images per resolution |
| -------- | ------------------ | ----------------------------- |
| iOS      | `1.png` – `10.png` | 3                             |
| Android  | `1.png` – `8.png`  | 2                             |

<figure><img src="/files/eDIecegAmlgylDjgzVV8" alt=""><figcaption><p>Direct ZIP/ Archive upload panel</p></figcaption></figure>

### 5. Google Drive provisioning

This is an alternative to uploading a ZIP directly — useful if you want to store your asset archive externally or share it with a team member.

1. Create a ZIP archive using the iOS or Android template from the [File Templates](/documents/import-and-export/file-templates) page.
2. Upload the ZIP to Google Drive.
3. Set the sharing permission to **Viewer**.
4. Paste the share link into the **App Assets** field in App Store Manager.

<figure><img src="/files/nyrRcbwnO10PLsVNgyca" alt=""><figcaption><p>Google Drive link - Drive ZIP upload</p></figcaption></figure>

### 6. Technical specifications

The system matches image files to their target device based on exact pixel dimensions. The values below are the only ones recognized — no rounding or approximation is applied.

#### iOS — App Store Connect

| Device         | Portrait (W × H) | Landscape (W × H) |
| -------------- | ---------------- | ----------------- |
| iPhone 6.9"    | 1320 × 2868      | 2868 × 1320       |
| iPhone 6.7"    | 1290 × 2796      | 2796 × 1290       |
| iPhone 6.5"    | 1242 × 2688      | 2688 × 1242       |
| iPhone 5.5"    | 1242 × 2208      | 2208 × 1242       |
| iPad Pro 13"   | 2064 × 2752      | 2752 × 2064       |
| iPad Pro 12.9" | 2048 × 2732      | 2732 × 2048       |

#### Android — Google Play Console

| Asset type      | Requirements                                            |
| --------------- | ------------------------------------------------------- |
| Phone / Tablet  | Min 320px, max 3840px — 9:16 portrait or 16:9 landscape |
| App Icon        | 512 × 512 px, 32-bit PNG                                |
| Feature Graphic | 1024 × 500 px, JPG or 24-bit PNG                        |


# App preview (video) upload

Use App Store Manager to upload and transfer app preview videos to **App Store Connect** (Standard Store Listing & Custom Product Page) — across all your supported languages and device sizes.

{% hint style="info" %}
App previews are only supported for **App Store Connect**. Google Play does not support direct video file uploads — see Google Play promo video at the bottom of this page for details.
{% endhint %}

App previews follow the same locale detection and slot logic as [screenshots](/documents/edit-translate-and-upload/screenshot-and-asset-upload). The key differences are file format, resolution rules, and the per-device preview limit imposed by App Store Connect.

### 1. Before you start

Assets are stored for **180 days** on Basic and Premium plans before automatic deletion. This does not affect your live store listings. Uploads can take up to **1.5 hours** to complete. Business customers receive prioritized processing.

{% hint style="warning" %}
Uploading **overwrites** existing store listing data. Always review your localized assets in the manager before starting a transfer.
{% endhint %}

Required permissions

**App Store Connect** — [a valid API key must be configured ](/documents/access/app-store-connect-access)in your App Store Manager account settings.

### 2. App Previews (drag & drop)

App Store Manager handles both images and videos. Drop video files into App Peview page — the Smart Recognition Engine identifies locale, slot, and device resolution using the same rules as for screenshots.

**What you can do:**

* Drag in single video files, multiple files, or entire folder structures
* Reorder previews by dragging within a slot
* Manually assign any unrecognized files that land in "Uncategorized"
* Replace individual positions — uploading to Position 2 only affects that slot; all others stay as-is

{% hint style="info" %}
A **"Remove all first"** toggle is currently in development. For now, replacement is position-based only.
{% endhint %}

<figure><img src="/files/7OY0Uy39c3FeWHCYDDSD" alt=""><figcaption><p>Upload videos with App Store Manager</p></figcaption></figure>

How the Smart Recognition Engine works

When you drop files, the engine runs three checks in order:

**Step 1 — Language detection**

The engine first tries to identify the locale from your folder structure, then falls back to the filename if no match is found.

**Folder path scan (primary):** Every folder segment in the path is checked left to right. The first segment that matches a known locale code or alias is used.

**Filename fallback:** If no folder matches, the filename is split at `-`, `_`, or spaces and checked against the same alias list.

The following aliases are recognized. Short two-character aliases (e.g. `de`, `en`) only match when the entire folder segment or filename part is an exact match — they are never matched as substrings.

| Locale    | Recognized aliases                                                            |
| --------- | ----------------------------------------------------------------------------- |
| `ar-SA`   | `arabic`, `ar`, `ar-sa`, `ara`, `عربي`, `saudi`                               |
| `ca`      | `catalan`, `català`, `catalonia`                                              |
| `cs`      | `czech`, `cz`, `cesky`, `čeština`, `czechia`                                  |
| `da`      | `danish`, `dk`, `dansk`, `denmark`                                            |
| `de-DE`   | `german`, `deutsch`, `de`, `de-de`, `deu`, `ger`                              |
| `el`      | `greek`, `gr`, `ελληνικά`, `greece`                                           |
| `en-AU`   | `en-au`, `australian`, `australia`                                            |
| `en-CA`   | `en-ca`, `canadian-english`                                                   |
| `en-GB`   | `en-gb`, `british`, `uk`, `england`, `united-kingdom`                         |
| `en-US`   | `english`, `en`, `en-us`, `eng`, `us`, `american`                             |
| `es-ES`   | `spanish`, `español`, `espanol`, `es`, `es-es`, `spa`, `castilian`            |
| `es-MX`   | `es-mx`, `mexican`, `mexico`                                                  |
| `fi`      | `finnish`, `suomi`, `finland`                                                 |
| `fr-CA`   | `fr-ca`, `quebec`, `canadian-french`                                          |
| `fr-FR`   | `french`, `français`, `francais`, `fr`, `fr-fr`, `fra`                        |
| `he`      | `hebrew`, `il`, `עברית`, `israel`                                             |
| `hi`      | `hindi`, `हिन्दी`, `india`                                                    |
| `hr`      | `croatian`, `hrvatski`, `croatia`                                             |
| `hu`      | `hungarian`, `magyar`, `hungary`                                              |
| `id`      | `indonesian`, `bahasa`, `indonesia`                                           |
| `it`      | `italian`, `italiano`, `ita`                                                  |
| `ja`      | `japanese`, `jp`, `jpn`, `nihongo`                                            |
| `ko`      | `korean`, `kr`, `kor`, `hangul`                                               |
| `ms`      | `malay`, `my`, `melayu`, `malaysia`                                           |
| `nl-NL`   | `dutch`, `nl`, `nl-nl`, `nederlands`, `holland`, `netherlands`                |
| `no`      | `norwegian`, `nb`, `norsk`, `norway`                                          |
| `pl`      | `polish`, `polski`, `poland`                                                  |
| `pt-BR`   | `portuguese`, `português`, `pt`, `pt-br`, `brazilian`, `brazil`               |
| `pt-PT`   | `pt-pt`, `portugal`                                                           |
| `ro`      | `romanian`, `română`, `romania`                                               |
| `ru`      | `russian`, `rus`, `русский`                                                   |
| `sk`      | `slovak`, `slovenčina`, `slovakia`                                            |
| `sv`      | `swedish`, `se`, `svenska`, `sweden`                                          |
| `th`      | `thai`, `ไทย`, `thailand`                                                     |
| `tr`      | `turkish`, `türkçe`, `turkey`                                                 |
| `uk`      | `ukrainian`, `ua`, `українська`, `ukraine`                                    |
| `vi`      | `vietnamese`, `vn`, `tiếng việt`, `vietnam`                                   |
| `zh-Hans` | `chinese`, `zh-hans`, `zh-cn`, `simplified`, `mandarin`, `chinese-simplified` |
| `zh-Hant` | `zh-hant`, `zh-tw`, `traditional`, `chinese-traditional`, `taiwan`            |

**Step 2 — Slot order**

Display position is read from numbers in the filename:

* **Numbers between underscores** — `en-US_2_886x1920.mp4` is placed in Slot 2
* **Direct numeric names** — `1.mp4` through `3.mp4` are placed in the corresponding slot

{% hint style="info" %}
App Store Connect allows a maximum of **3 app previews per device size per locale**.
{% endhint %}

Step 3 — Resolution detection

The target device is identified **exclusively** by the actual pixel dimensions of the video. Folder names like "iPhone 15" are ignored — only the real video frame size matters. See 3. Technical specifications below for the full list of supported dimensions.

### 3. Technical specifications

Resolution detection works by matching the exact pixel dimensions of your video files to Apple's accepted resolutions below. Note that accepted resolutions differ from device resolutions — Apple scales previews across similar device sizes.

#### General requirements

| Property             | Value                                                                       |
| -------------------- | --------------------------------------------------------------------------- |
| Max file size        | 500 MB                                                                      |
| Min duration         | 15 seconds                                                                  |
| Max duration         | 30 seconds                                                                  |
| Max frame rate       | 30 fps                                                                      |
| Default poster frame | 5 seconds                                                                   |
| Orientation          | Portrait or Landscape (Mac, Apple TV, and Apple Vision Pro: landscape only) |
| Previews per device  | Up to 3                                                                     |

#### Video formats

| Property             | H.264                                     | ProRes 422 (HQ only)                |
| -------------------- | ----------------------------------------- | ----------------------------------- |
| Target bit rate      | 10–12 Mbps                                | \~220 Mbps (VBR)                    |
| Video                | Progressive, up to High Profile Level 4.0 | Progressive, no external references |
| Audio codec          | 256 kbps AAC                              | PCM or 256 kbps AAC                 |
| Sample rate          | 44.1 kHz or 48 kHz                        | 44.1 kHz or 48 kHz                  |
| Channels             | Stereo                                    | Stereo                              |
| Supported extensions | `.mov`, `.m4v`, `.mp4`                    | `.mov`                              |

#### iPhone — accepted resolutions

Apple uses a single set of accepted resolutions scaled across multiple device sizes. If a specific size is not provided, Apple falls back to the next larger size.

| Display                                             | Accepted portrait | Accepted landscape | Fallback           |
| --------------------------------------------------- | ----------------- | ------------------ | ------------------ |
| 6.9" (iPhone Air, 16 Pro Max, 16 Plus, 15 Pro Max…) | 886 × 1920        | 1920 × 886         | —                  |
| 6.5" (iPhone 14 Plus, 13 Pro Max, 11, XR…)          | 886 × 1920        | 1920 × 886         | Falls back to 6.9" |
| 6.3" (iPhone 17 Pro, 17, 16 Pro, 16, 15 Pro…)       | 886 × 1920        | 1920 × 886         | Falls back to 6.5" |
| 6.1" (iPhone 16e, 14, 13, 12, 11 Pro, X…)           | 886 × 1920        | 1920 × 886         | Falls back to 6.5" |
| 5.5" (iPhone 8 Plus, 7 Plus, 6S Plus…)              | 1080 × 1920       | 1920 × 1080        | Falls back to 6.1" |
| 4.7" (iPhone SE 2nd/3rd gen, 8, 7, 6S…)             | 750 × 1334        | 1334 × 750         | Falls back to 5.5" |
| 4.0" (iPhone SE 1st gen, 5S, 5C, 5)                 | 1080 × 1920       | 1920 × 1080        | Falls back to 4.7" |

#### iPad — accepted resolutions

| Display                                                        | Accepted portrait         | Accepted landscape        | Fallback            |
| -------------------------------------------------------------- | ------------------------- | ------------------------- | ------------------- |
| 13" (iPad Pro M4/M5, iPad Air M2/M3)                           | 1200 × 1600               | 1600 × 1200               | —                   |
| 12.9" (iPad Pro 2nd gen)                                       | 1200 × 1600 or 900 × 1200 | 1600 × 1200 or 1200 × 900 | Falls back to 13"   |
| 11" (iPad Pro M4/M5, iPad Air 4th/5th gen, iPad mini 6th gen…) | 1200 × 1600               | 1600 × 1200               | Falls back to 13"   |
| 10.5" (iPad Pro, iPad Air 3rd gen, iPad 7th–9th gen)           | 1200 × 1600               | 1600 × 1200               | Falls back to 12.9" |
| 9.7" (iPad Pro, iPad Air, iPad mini 2–5…)                      | 900 × 1200                | 1200 × 900                | Falls back to 10.5" |

#### Google Play promo video

Google Play does not support direct video file uploads through the API. Promo videos on Google Play are managed as a **YouTube URL** per locale, set directly in the Google Play Console under the store listing. App Store Manager does not transfer video assets to Google Play.


# Automatic translation

The App Store Manager allows automatic translation of metadata. This includes the descriptive texts of the apps in both app stores (Google and Apple). This means the titles and detailed descriptions.

The list of languages supported as a source and translation target can be found [here](https://localizerhelp.iwantanelephant.com/supported-languages/).\
Languages for which automatic translation is impossible can be edited, imported, and uploaded.

Necessary with the texts, they must comply with the respective guidelines of the stores.

An improved translation is available for the essential languages in the Premium plan. This Neural network-based translation is very close to natural, context-sensitive language. Contact us if this is of interest to you.

All translations can be checked and validated before they are accepted.\
Often, the word and sentence lengths differ. Therefore, it is essential to check and adjust them if necessary. The App Store Manager indicates when a field exceeds the maximum allowed length.\
In this case, the sentence must be shortened accordingly.

The Retranslate function can help with this. It allows repeated translation based on a selected source language. If the source language is shortened, the number of letters and words in the target language will also be shortened. This step can be repeated at will until the desired result is achieved.

{% hint style="warning" %}
All translations consume characters. Consider the available limit in your subscription plan.
{% endhint %}


# Custom Product Pages

The App Store Manager empowers subscribers of the "Premium Plan" to effortlessly create, edit, upload, and publish Custom Product Pages (CPP) for their apps. With tailored options available, you can make your app stand out in a competitive marketplace.

This invaluable feature is exclusively designed for iOS apps and is conveniently positioned alongside the Store Listing feature, making it easy to access.

<figure><img src="/files/ZNX04u4Or95iodShBwy4" alt=""><figcaption></figcaption></figure>

Create a new CPP without limits in App Store Manager; 64 are supported simultaneously in App Store Connect. Provide a name for the new CPP. It will be used as an identifier within App Store Connect, not visible to customers, and cannot be changed after creation.

<figure><img src="/files/LONX3DdcAx0OR3rHJswE" alt=""><figcaption></figcaption></figure>

CPPs hold promotional text and screenshots. Promotional Texts can be imported and exported (JSON and XLSX file formats) to App Store Manager. Use the file templates to provide your texts.

<figure><img src="/files/bVC8BXOIeKr9INsBOHPw" alt=""><figcaption></figcaption></figure>

The screenshot upload allows bulk uploading of images to the CPP. The screenshot functionality is the same as for the Store Listings. Find more information [here](/documents/edit-translate-and-upload/screenshot-and-asset-upload).

<figure><img src="/files/MLgTFQNJRzqSiUCKNcBL" alt=""><figcaption></figcaption></figure>

Once the preparation of a Custom Product Page is ready, everything can be uploaded to App Store Connect. The distribution requires uploading metadata and screenshots. To publish the CPP select the respective check box. The CPP will be sent directly for review.

<figure><img src="/files/SiOu03Srhu1Hfipzc5qM" alt=""><figcaption></figcaption></figure>


# Import and export


# Import from store

We offer file import and import from App Store Connect and Google Play Console to quickly load metadata into the App Store Manager. The app's existing app descriptions are fetched and then downloaded into the metadata set of the description package.

{% hint style="info" %}
Access rights are required to access the store (set up access to [App Store Connect](/documents/access/app-store-connect-access) or [Google Play Console](/documents/access/google-play-console-access)).
{% endhint %}

Navigate to “App Descriptions/ Import/ Import from (Play or App)Store” within a description package and add the appropriate credentials.

You can choose an app platform as a source for App Store Connect. Choose between an iOS, macOS, or tvOS app.

The download process will start and may take a few minutes.

Once the download is complete, the downloaded descriptions, titles, etc., are listed. Then, the preview allows checking the result. After validation, the entire result can be transferred to the metadata set or to the individual selected languages.\
\\

{% hint style="warning" %}
The transfer will overwrite any existing descriptions (locally, in the App Store Manager) in the main metadata set.
{% endhint %}

<figure><img src="/files/olMcblO2TCpN29uJj0pG" alt=""><figcaption><p>Preview and adopt downloaded metadata</p></figcaption></figure>

The store import allows a quick setup of an app and the existing descriptions. Then, with a few clicks, everything is loaded into the App Store Manager. It can be changed, adapted, supplemented, or even just archived.


# Import from file

The file import mechanism allows the App Store Manager to load initially for an app and exchange it with other systems, in which, for example, a translation is organized.\
For example, combined with the [export function](/documents/import-and-export/export-to-file), a simple backup mechanism for app metadata is also available.

## Available import file formats

Two import formats are available for Android and iOS, respectively: JSON and Excel.

Download the templates from the [File Templates](/documents/import-and-export/file-templates) page.

## File handling

* Excel templates – The keywords of the rows and columns are mandatory
* The order of the entries is not mandatory
* Unnecessary fields or languages can be left blank or omitted

## Using the file import

Prepare your App Store Manager file templates via a script in Excel, Google Sheets, or similar. Then, select your file and navigate to the “App Description/ Import/ Import from file”.

{% hint style="info" %}
The file structures vary between Android and iOS.
{% endhint %}

<figure><img src="/files/iVerFzSWn5HqCkowU6yp" alt=""><figcaption><p>Import from file</p></figcaption></figure>

After the successful import, the data preview allows you to review the imported information.\
This view allows you to select the required languages individually or in total.

{% hint style="warning" %}
Existing data in the metadata set will be overwritten with the newly imported data.
{% endhint %}

<figure><img src="/files/ulLrp5KFbt7l8TNwzLEy" alt=""><figcaption><p>Preview and adopt imported data</p></figcaption></figure>

\\

{% hint style="info" %}
The imported data is only kept in the App Store Manager. An upload to App Store Connect or Google Play Console is never done automatically. You have to start the upload explicitly.
{% endhint %}


# File import and export

To import metadata or screenshots, we offer various file templates.

**Hint: for the import to work, keep the file structure. Also, keywords such as country codes. The order of the languages can vary. Omit unnecessary languages or fields.**

### Available templates

Download all metadata and screenshot templates from the [File Templates](/documents/import-and-export/file-templates) page.

See the [Screenshot and asset upload](/documents/edit-translate-and-upload/screenshot-and-asset-upload) documentation for asset upload details.

### How to prepare the screenshot/ asset templates?

Download the required template from above. Unpack it to a location of your choice.

The unwrapped folder (referred as top-level folder) should look like this:

<figure><img src="/files/sMcYtWrvfszDSK88BOtW" alt=""><figcaption><p>Screenshot/ asset file template</p></figcaption></figure>

**Hint: the files vary between iOS and Android. Especially the subfolders are different**

Android:

<figure><img src="/files/9sHr0qPIADPdurSfa2VQ" alt=""><figcaption><p>Android subfolders which contain assets</p></figcaption></figure>

iOS:

<figure><img src="/files/oSS6BqMk0zXzaJr3F6EQ" alt=""><figcaption><p>iOS subfolders</p></figcaption></figure>

Add your screenshots to the corresponding language and resolution folders.

For example, if you want to upload English screenshots for the American market, add them to “en-US”. If you want to upload iPhone 6.5-inch screenshots only, add them to the “iphone-65” folder and leave the other folders empty.

For Android, place the mobile screenshots in the “mobile” folder.

Name your images from 1.png to 8.png (Android) or 1.png to 10.png (iOS).\
**Hint: Both JPG and PNG files are supported.**

<figure><img src="/files/jCri179TPbGeWbjaPcPl" alt=""><figcaption><p>Screenshot naming</p></figcaption></figure>

### Prepare the file for upload

To prepare the contents for the upload, create a ZIP (compressed)-archive. Navigate to the top level of your working folder. This is the level that displays the language folders. Select all of them and create a single compressed ZIP file.

<figure><img src="/files/XdEZenWNIvYrQEk8G2EL" alt=""><figcaption><p>Top-level working folder</p></figcaption></figure>

**Hint: The structure of the file must be correct. I.e., it happens that the parent folder is packed as well.**\
**Thus the upload will not work.**

Validate your archive file by opening it. It should direct display the language folders. If there is an enclosing folder within the archive, you likely have compressed the wrong structure.

<figure><img src="/files/eFAZlohXMcciwnLEhR2Q" alt=""><figcaption><p>How a correct compressed file looks like (not all possible languages are shown above)</p></figcaption></figure>

A wrong and not supported structure of the compressed archive could look like this:

<figure><img src="/files/KclwO3BlwNRwyW5DIweG" alt=""><figcaption><p>Unsupported structure</p></figcaption></figure>

**Hint: if you have any questions or require a different structure, please feel free to contact us.**


# Export to file

App Store Manager allows exporting of existing app metadata to files.\
Navigate to the “App Description” view within a description package for Android and iOS. And click on "Export/ Export as JSON" or "Export/ Export as XSLT".

<figure><img src="/files/GSwBZODJBvg4MfzNWf4R" alt=""><figcaption><p>Export to file</p></figcaption></figure>

\
Choose your desired export format (JSON or Excel) and the App Store Manager will prepare and download your metadata.

The file structure is listed below for Android and iOS.

## iOS JSON file template

```
{"ca":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"cs":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"da":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"de-DE":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"el":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"en-AU":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"en-CA":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"en-GB":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"en-US":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"es-ES":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"es-MX":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"fi":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"fr-CA":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"fr-FR":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"hi":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"hr":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"hu":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"id":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"it":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"ja":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"ko":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"ms":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"nl-NL":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"no":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"pt-BR":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"pt-PT":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"ro":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"ru":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"sk":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"sv":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"th":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"tr":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"uk":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"vi":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"zh-Hans":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""},"zh-Hant":{"description":"","keywords":"","name":"","promotional_text":"","release_notes":"","subtitle":""}}
```

## iOS Excel template

The iOS Excel export follows the same structure as the JSON format, with languages as rows and fields (name, subtitle, description, keywords, promotional\_text, release\_notes) as columns.

## Android JSON template

```
{"en-US":{"title":"","short_description":"","full_description":""},"en-GB":{"title":"","short_description":"","full_description":""},"en-AU":{"title":"","short_description":"","full_description":""},"en-CA":{"title":"","short_description":"","full_description":""},"en-IN":{"title":"","short_description":"","full_description":""},"en-SG":{"title":"","short_description":"","full_description":""},"es-ES":{"title":"","short_description":"","full_description":""},"es-419":{"title":"","short_description":"","full_description":""},"es-US":{"title":"","short_description":"","full_description":""},"pt-BR":{"title":"","short_description":"","full_description":""},"pt-PT":{"title":"","short_description":"","full_description":""},"fr-FR":{"title":"","short_description":"","full_description":""},"fr-CA":{"title":"","short_description":"","full_description":""},"de-DE":{"title":"","short_description":"","full_description":""},"hi-IN":{"title":"","short_description":"","full_description":""},"zh-CN":{"title":"","short_description":"","full_description":""},"zh-TW":{"title":"","short_description":"","full_description":""},"af":{"title":"","short_description":"","full_description":""},"ar":{"title":"","short_description":"","full_description":""},"bn-BD":{"title":"","short_description":"","full_description":""},"bg":{"title":"","short_description":"","full_description":""},"ca":{"title":"","short_description":"","full_description":""},"hr":{"title":"","short_description":"","full_description":""},"cs-CZ":{"title":"","short_description":"","full_description":""},"da-DK":{"title":"","short_description":"","full_description":""},"nl-NL":{"title":"","short_description":"","full_description":""},"et":{"title":"","short_description":"","full_description":""},"fil":{"title":"","short_description":"","full_description":""},"fi-FI":{"title":"","short_description":"","full_description":""},"el-GR":{"title":"","short_description":"","full_description":""},"iw-IL":{"title":"","short_description":"","full_description":""},"hu-HU":{"title":"","short_description":"","full_description":""},"is-IS":{"title":"","short_description":"","full_description":""},"id":{"title":"","short_description":"","full_description":""},"it-IT":{"title":"","short_description":"","full_description":""},"ja-JP":{"title":"","short_description":"","full_description":""},"ko-KR":{"title":"","short_description":"","full_description":""},"lv":{"title":"","short_description":"","full_description":""},"lt":{"title":"","short_description":"","full_description":""},"ms":{"title":"","short_description":"","full_description":""},"no-NO":{"title":"","short_description":"","full_description":""},"fa":{"title":"","short_description":"","full_description":""},"pl-PL":{"title":"","short_description":"","full_description":""},"ro":{"title":"","short_description":"","full_description":""},"ru-RU":{"title":"","short_description":"","full_description":""},"sr":{"title":"","short_description":"","full_description":""},"sk":{"title":"","short_description":"","full_description":""},"sl":{"title":"","short_description":"","full_description":""},"sw":{"title":"","short_description":"","full_description":""},"sv-SE":{"title":"","short_description":"","full_description":""},"ta-IN":{"title":"","short_description":"","full_description":""},"th":{"title":"","short_description":"","full_description":""},"tr-TR":{"title":"","short_description":"","full_description":""},"uk":{"title":"","short_description":"","full_description":""},"vi":{"title":"","short_description":"","full_description":""}}
```

## Android Excel format

The Android Excel export follows the same structure as the JSON format, with languages as rows and fields (title, short\_description, full\_description) as columns.

{% hint style="info" %}
The export formats are also the ones the App Store Manager can import.
{% endhint %}

## Export file templates

Download the templates from the [File Templates](/documents/import-and-export/file-templates) page.

{% hint style="info" %}
Custom implementations are available if you require a different file format. [Contact us](https://www.iwantanelephant.com/contact/).
{% endhint %}


# File Templates

Download the official App Store Manager templates to import metadata, screenshots, and assets.

***

## Metadata Templates

Use these templates to import or export app metadata (titles, descriptions, keywords, etc.).

| Platform | Format | Download                                                                                 |
| -------- | ------ | ---------------------------------------------------------------------------------------- |
| Android  | JSON   | [androidTemplate.json](https://www.iwantanelephant.com/file-assets/androidTemplate.json) |
| Android  | Excel  | [androidTemplate.xlsx](https://www.iwantanelephant.com/file-assets/androidTemplate.xlsx) |
| iOS      | JSON   | [iosTemplate.json](https://www.iwantanelephant.com/file-assets/iosTemplate.json)         |
| iOS      | Excel  | [iosTemplate.xlsx](https://www.iwantanelephant.com/file-assets/iosTemplate.xlsx)         |

***

## Custom Product Pages Template (iOS)

Use this template for App Store Connect Custom Product Pages. It covers promotional texts for CPPs.

| Platform  | Format | Download                                                                               |
| --------- | ------ | -------------------------------------------------------------------------------------- |
| iOS (CPP) | JSON   | [iosCppTemplate.json](https://www.iwantanelephant.com/file-assets/iosCppTemplate.json) |

***

## Screenshot and Asset Templates

Use these ZIP templates to bulk upload screenshots, icons, and feature graphics. The folder structure must be maintained exactly.

| Platform | Contents                             | Download                                                                                                                                       |
| -------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Android  | Screenshots, icons, feature graphics | [AppStoreManager-Android-Screenshot-Template.zip](https://www.iwantanelephant.com/file-assets/AppStoreManager-Android-Screenshot-Template.zip) |
| iOS      | Screenshots                          | [AppStoreManager-iOS-Screenshot-Template.zip](https://www.iwantanelephant.com/file-assets/AppStoreManager-iOS-Screenshot-Template.zip)         |

***

## Template Usage Notes

### Metadata templates

* Keep the file structure intact
* Keywords (country codes, field names) are mandatory
* The order of languages can vary
* Omit unnecessary languages or fields by leaving them blank

### Screenshot templates

1. Download and unpack the template
2. Add images to the corresponding language and resolution folders
3. Name files from `1.png` to `8.png` (Android) or `1.png` to `10.png` (iOS)
4. Both PNG and JPG formats are supported
5. Create a ZIP archive from the language folders (not the parent folder)

See [File import and export](/documents/import-and-export/file-import-and-export) for detailed preparation instructions.

{% hint style="info" %}
Custom file formats or structures are available for Business customers. [Contact us](https://www.iwantanelephant.com/contact/).
{% endhint %}


# Release Notes Creation


# Android Release Notes creation

Each new Android app release requires release notes. They contain up to 500 characters about new features and changes in the corresponding release.\
\
The Google Play Store requires a release description for all configured languages. This can sometimes be over 90 tongues. In addition, the descriptions and languages are provided within a particular XML-styled format.

```
<am>
- ማሻሻያ
- ትኋን ያስተካክላል
- አዲስ ደረጃዎች
- What's New
- መኪናዎች
- አንዳንድ ትኋኖች የተስተካከሉ ...
</am>

<az-AZ>
- Yenilənmə
- Bug düzəlişləri
- Yeni səviyyələr
- Yeni nədir
- Maşınlar
- Bəzi böglər sabitdi...
</az-AZ>

<bg>
- Актуализация
- Поправки на грешки
- Нови нива
- Какво е новото
- Автомобили
- Поправени са някои грешки...
</bg>

<en-CA>
- Update
- Bug fixes
- New levels
- What's New
- Cars
- Some bugs fixed...
</en-CA>

<fr-CA>
- Mise à jour
- Correction de bugs
- Nouveaux niveaux
- Nouveautés
- Voitures
- Quelques bugs corrigés...
</fr-CA>

<nl-NL>
- Bijwerken
- Bug fixes
- Nieuwe levels
- Wat is er nieuw?
- Auto's
- Enkele bugs verholpen...
</nl-NL>

```

## Create release notes

Select the Android Release Notes Creator from the frontpage.\
\
First, select the source language of your description. I.e., the language you want to provide the initial description of the current version.

<figure><img src="/files/8WUCSlrHrcEKDh7AXkvp" alt=""><figcaption><p>Release Notes Creation</p></figcaption></figure>

In the second step, enter the description in the selected source language. Then, create the description in App Store Manger at this place, or copy it to this place from another application.\
The description must not exceed 500 characters.\
**Our tip**: concentrate on the essential innovations and highlight them accordingly.

Next, select the target languages you need. The App Store Manager offers an extensive list of languages for automatic translation.

<figure><img src="/files/hsaDM05AEZOsfSQ38pGC" alt=""><figcaption><p>Provide a description and select target languages</p></figcaption></figure>

Start the automatic translation for the selected languages. The translation may take a few minutes.

The formatted result is displayed in the App Store Manager. Validate it; if the result is as desired, it can be exported.

<figure><img src="/files/qEZOJQdVAw72GhDUxUsO" alt=""><figcaption><p>Release notes result</p></figcaption></figure>

Export the result either to a text file or to the clipboard.

<figure><img src="/files/0zJPuVnpwQnHoOXuZDp1" alt="Android Release Notes Export Result"><figcaption><p>Export result to file</p></figcaption></figure>

Manually transfer the result to the Google Play Console and publish your new release as soon as you are ready.

<figure><img src="/files/zNrkIllKg7t9r8GTRqg9" alt="Google Play Console New Release"><figcaption><p>Google Play Console – new release</p></figcaption></figure>

**Essential**: Languages you have not set in the Store Presence cannot be imported. Conversely, all set languages are required.


# Phrase and Lokalise


# Typical use cases

[Phrase](http://phrase.com/) and [Lokalise](https://lokalise.com/) are tools to make and manage translations of any kind.\
App Store Manager works excellently with both of them (and similar tools).

In an increasingly globalized world, localization has become vital to software and content development.&#x20;

Adapting products, websites, and applications to different languages, cultures, and markets is crucial for reaching a diverse audience. Developers and content creators often use potent tools like Phrase and Lokalise to streamline the localization process.

The App Store Manager links App Store Connect/ Google Play Console and translating tools.\
\
Typical use cases are:

* Creation and maintenance of App Store and Google Play Store translations in Phrase and Lokalise.
* Transfer of metadata translations via App Store Manager into the respective store
* Initial loading of app metadata into Phrase and Lokalise


# Export Phrase translations to the Stores

Translations for App Store Connect (name, subtitle, description, keywords, version description, promo text) and Google Play Console (title, short description, description) can be created and managed in services like [Phrase](http://phrase.com/).\
The question then is, how do these translations get into the stores? The App Store Manager takes care of this task.

The steps to do this are:

* Create and manage the translations in Phrase
* Export the translations to an Excel file
* Import into the App Store Manager
* Transfer and upload to the desired store

### Export of translations in Phrase

Change to phrase in the "Languages" tab. Select all or only the desired languages and click "Export".

<figure><img src="/files/PaU5OYXfW1k1olD4wC9s" alt=""><figcaption><p>Language export in Phrase</p></figcaption></figure>

The default settings are just right for an export. Select "Include Headers". Click "Download".

<figure><img src="/files/46bC9keTlii77lr5tDmj" alt=""><figcaption><p>Phrase language export</p></figcaption></figure>

The created file looks like this:

<figure><img src="/files/tyJE4CBbdqz1nbGNjwL2" alt=""><figcaption><p>Exported Excel file</p></figcaption></figure>

Hint: the language codes must be named according to the specifications. These usually correspond to the phrase conventions.

<details>

<summary>App Store Connect import language codes</summary>

```
ar-SA	zh-Hans	zh-Hant	hr	cs	da	nl-NL	en-AU	en-CA	en-GB	en-US	fi	fr-CA	fr-FR	de-DE	el	he	hi	hu	id	it	ja	ko	ms	no	pl	pt-BR	pt-PT	ro	ru	sk	es-ES	es-MX	sw	sv	th	tr	uk	vi
```

</details>

<details>

<summary>Google Play Console import language codes</summary>

```
af	am	ar	hy-AM	az-AZ	eu-ES	be	bn-BD	bg	my-MM	ca	km-KH	zh-CN	zh-HK	zh-TW	hr	cs-CZ	da-DK	nl-NL	en-AU	en-CA	en-IN	en-SG	en-GB	en-US	et	fil	fi-FI	fr-CA	fr-FR	gl-ES	ka-GE	de-DE	el-GR	iw-IL	hi-IN	hu-HU	is-IS	id	it-IT	ja-JP	kn-IN	ky-KG	ko-KR	lo-LA	lv	lt	mk-MK	ms	ml-IN	mr-IN	mn-MN	ne-NP	no-NO	fa	pl-PL	pt-BR	pt-PT	ro	rm	ru-RU	sr	si-LK	sk	sl	es-419	es-ES	es-US	sw	sv-SE	ta-IN	te-IN	th	tr-TR	uk	vi	zu
```

</details>

### Upload and transfer metadata

After the export is done, switch to the App Store Manager. Create an app and a description package there.

<figure><img src="/files/XWiUusla8E4boQMeSsFM" alt=""><figcaption><p>App description package setup</p></figcaption></figure>

Go to the "App Description" section and select "Import/Import from File". Select the file exported from Phrase.

<figure><img src="/files/Xo4imG6Hh0kySrHiKGgm" alt=""><figcaption><p>Select file for an import</p></figcaption></figure>

The import starts, and the imported translations are displayed as soon as it is finished. Select all of them and add them to the description package using "Add to descriptions".

<figure><img src="/files/JntHBaMTwkFYKBuPgohW" alt=""><figcaption><p>Choose from imported languages</p></figcaption></figure>

Now all translations are ready for upload in the App Store Manager. Select the "Upload" button and submit the credentials for the respective store.

<figure><img src="/files/pih1oYucdLHdZgTSpLRM" alt=""><figcaption><p>Upload metadata to the stores</p></figcaption></figure>

The upload will start. Usually, it takes a few minutes, and all app descriptions created in Phrase are available in the store.

Hint: Configure App Store Connect and Google Play Console credentials.

### Summary

App Store Manager lets you quickly and reliably upload and transfer translations from [Phrase](http://phrase.com/) to App Store Connect and Google Play Console. This can be easily integrated into recurring maintenance and update processes.


# Import App Store Metadata to Phrase

Follow these steps to import information from an existing Google Play or App Store Connect listing into [Phrase](https://phrase.com/):

* In the App Store Manager, create the app
* Make a fresh package
* Start the import from store mechanism
* Apply the App Store Manager the imported metadata
* Export the metadata to an Excel file
* In Phrase, start a new project
* File import into Phrase

### App Store Manager setup

You can manually enter the app's details or create a new app in the App Store Manager by searching for it (if it has already been published).

<figure><img src="/files/zd8jgvRYM2yF5l6iuqnT" alt=""><figcaption><p>Create a new app</p></figcaption></figure>

Create a new package in the newly formed app.

<figure><img src="/files/CyFlY1mjpTAKA6HmuICk" alt=""><figcaption><p>Create a new app package</p></figcaption></figure>

Give the app a proper name before editing the description.

<figure><img src="/files/LCxyEXe3FVKODlFleiLS" alt=""><figcaption><p>Name the package</p></figcaption></figure>

In the top right corner, click the "Import/Import from Playstore" (Android) or "Import/Import from App Store" (Apple) option.

Add the necessary permissions.

You can find tutorials on the access and permission requirements here: [Google Play Console](/documents/access/google-play-console-access) and [App Store Connect](/documents/access/app-store-connect-access).

<figure><img src="/files/2ycbCkFLEFrUHskQuhJI" alt=""><figcaption><p>Import from store function</p></figcaption></figure>

Start importing the metadata from the store and wait for it to finish.

Once the process is completed, click "OK" and add all metadata to your package in the following dialog.

<figure><img src="/files/zpSveopjjaS382kh8WiK" alt=""><figcaption><p>Select imported metadata</p></figcaption></figure>

This allowed us to import all of the app's existing metadata into the App Store Manager.

The metadata may now be readily exported, edited in Phrase, and then imported again.

### Export metadata to file

Select the function "Export/ Export as XSLT" and save the metadata in an Excel file locally.

<figure><img src="/files/MK7XXjIfyfcCWUzqKeAV" alt=""><figcaption><p>Export metadate to file</p></figcaption></figure>

The generated file contains all maintained languages and keys (titles, descriptions, and so on).

<figure><img src="/files/OXb1ulIIE7viIItPowtN" alt=""><figcaption><p>App Store metadata Excel export</p></figcaption></figure>

### Phrase setup

Switch to Phrase now and start a new project there. Choose a name for the project and the primary target language.

<figure><img src="/files/1wYP9gLyKK7T9l3LuTFm" alt=""><figcaption><p>Phrase project setup</p></figcaption></figure>

Add an initial source and target language.

<figure><img src="/files/i6wDCwjDDwh8Ti84dzo8" alt=""><figcaption><p>Language setup</p></figcaption></figure>

Create the project and then switch to the "Upload" tab. And choose "Upload a file" next.

<figure><img src="/files/btqdBnPGJUS1Y8mu7zGw" alt=""><figcaption><p>File upload to Phrase</p></figcaption></figure>

### Import to Phrase

Select the Excel file you created in the App Store Manager and choose "Excel XLSK (.xlsx)" as a format.

Hit "Proceed to Preview".

<figure><img src="/files/F68sDpkHFrZpziWoPdTV" alt=""><figcaption><p>File upload</p></figcaption></figure>

The preview dialog allows you to view and associate additional information.

* First, the first column must be declared as Keynames. To do this, select the corresponding value in the upper select box.
* The other languages must be assigned manually, i.e., this must be done for all columns. Phrase can not recognize this automatically. I.e., selects the appropriate country abbreviation for each column.
* In the last step, the counter for "Content starts in row" is set to "2".

Press "Import" once you are done.

<figure><img src="/files/DEEtGpl97xBeO6cLGpIH" alt=""><figcaption><p>Import setup and preview</p></figcaption></figure>

The imported result is displayed in Phrase and can now be edited further.

<figure><img src="/files/qUREUOvvmatJJNvCz4mH" alt=""><figcaption><p>App Store metadata in Phrase</p></figcaption></figure>

This completes the import into Phrase and the export of the app's metadata from the relevant store.

### Summary

Using App Store Manager, you can easily import app metadata into [Phrase](https://phrase.com/) from App Store Connect and Google Play Console.

The associated texts can be further changed in [Phrase](https://phrase.com/) utilizing collaborative tools.

Once the editing is finished, Phrase export, App Store Manager import, and upload may be used to quickly and efficiently republish the modified translated information in the stores.


# Import App Store Metadata to Lokalise

To import data from an existing App Store Connect or Google Play listing into [Lokalise](https://lokalise.com/), follow these steps:

* Create the app in the App Store Manager
* Create a new package
* Start the import from store mechanism
* Transfer the imported metadata to the App Store Manager
* Export the metadata to an Excel file
* Create a new project in Lokalise
* Import the file into Lokalise

### App Store Manager setup

Create a new app in the App Store Manager via search (if already published) or manually enter the app information.

<figure><img src="/files/zd8jgvRYM2yF5l6iuqnT" alt=""><figcaption><p>Create a new app</p></figcaption></figure>

Open the app you just created and create a new package.

<figure><img src="/files/CyFlY1mjpTAKA6HmuICk" alt=""><figcaption><p>Create a new app package</p></figcaption></figure>

Assign a suitable name and then switch to edit the app description.

<figure><img src="/files/LCxyEXe3FVKODlFleiLS" alt=""><figcaption><p>Name the package</p></figcaption></figure>

Select the "Import/Import from Playstore" (Android) or "Import/Import from App Store" (Apple) function in the upper right corner.

Enter the appropriate permissions. The setup of the permissions for the respective store.

You can find tutorials here: [Google Play Console](/documents/access/google-play-console-access) and [App Store Connect](/documents/access/app-store-connect-access).

<figure><img src="/files/2ycbCkFLEFrUHskQuhJI" alt=""><figcaption><p>Import from store function</p></figcaption></figure>

Start importing the metadata from the store and wait for it to finish.

Once the process is completed, click "OK" and add all metadata to your package in the following dialog.

<figure><img src="/files/zpSveopjjaS382kh8WiK" alt=""><figcaption><p>Select imported metadata</p></figcaption></figure>

With this, we have imported all the existing metadata of an existing app into the App Store Manager. Now we can easily export the metadata to create it in Lokalise and import it again.

### Export metadata to file

Select the function "Export/ Export as XSLT" and save the metadata in an Excel file locally.

<figure><img src="/files/MK7XXjIfyfcCWUzqKeAV" alt=""><figcaption><p>Export metadate to file</p></figcaption></figure>

The generated file contains all maintained languages and keys (titles, descriptions, and so on).

<figure><img src="/files/OXb1ulIIE7viIItPowtN" alt=""><figcaption><p>App Store metadata Excel export</p></figcaption></figure>

### Lokalise setup

Now switch to Localise and create a new project there. Assign a name and choose an initial target language.

<figure><img src="/files/H9ZXBxmVhpL5QRTn2VEt" alt=""><figcaption><p>Lokalise project setup</p></figcaption></figure>

Create the project and then switch to the "Upload" tab.

<figure><img src="/files/5GMWiw8M7gNLUgpWe9GH" alt=""><figcaption><p>Upload tab in Lokalise</p></figcaption></figure>

### Import to Lokalise

Select the Excel file you created in the App Store Manager in the upload tab.

Localise directly shows all recognized languages and keys/values in it.

Hit "Apply" and then "Import files."

<figure><img src="/files/AttDaqCc6kb3DNiNUhhV" alt=""><figcaption><p>Import preview</p></figcaption></figure>

Lokalise then starts to import the information accordingly and displays all keys and languages in the editor view.

<figure><img src="/files/wzrjzGUjkRY5Ha7ftr99" alt=""><figcaption><p>Imported app store metadata</p></figcaption></figure>

The two languages selected during the Lokalise project creation can be removed, as these are usually empty (provided no further adjustments have been made).

This completes the export of the app metadata from the respective store and the import into Lokalise.

### Summary

With a few steps, you can import app metadata from App Store Connect and Google Play Console into [Lokalise](https://lokalise.com/) using App Store Manager.

In [Lokalise](https://lokalise.com/), the corresponding texts can be further edited using collaborative tools.

When the editing is complete, the adapted translated metadata can be easily and quickly published in the stores again using Lokalise export, App Store Manager import, and upload.


# Account and Subscriptions


# User account

## General information

A user account is required to use the App Store Manager and Android Release Notes Creator. The configurations created are saved under this account. An e-mail address and a password are required to create an account. The e-mail address is confirmed and validated via a verification e-mail. If you have not received an e-mail after successful registration, check your SPAM folder first and contact our support if necessary.

It is also possible to register via social accounts. Google, X (formerly Twitter), and Github accounts are supported here. These accounts can be managed via the platform provider.

## Account deletion

User accounts and all associated data can be deactivated and deleted upon request via the e-mail address used in the account settings.\
To delete your account and all information and configuration, please contact the support team <support@appstoremanager.net>.


# Subscriptions

## General information

A paid subscription is required to use the App Store Manager and all included functions (including Android Release Notes Creator).

The current details of our subscriptions can be found on our[ website](https://appstoremanager.net/index.html#pricing).

* Small - is preferred by users who want to install a few apps a few times a month
* Basic - for frequent users who also want to upload app screenshots
* Business - for users with individual requirements and a need for premium translation

We have provided a payment provider for all paid subscriptions. All payment transactions and subscription administrations are carried out via this provider.

## Manage or cancel a subscription

* In the Subscriptions/Manage section, you can manage your subscription, download invoices, and cancel your subscription.
* You can also change your subscription and update your payment information in the customer portal.


# How to create API access to Google Play Console

{% embed url="<https://youtu.be/Ls2wkAwXftk>" %}
Set up Google Play Console access
{% endembed %}

How to set up an API access or service account for Google Play Console? Applications like [https://appstoremanager.net](https://www.youtube.com/redirect?event=video_description\&redir_token=QUFFLUhqbnZRc2dCVEh2QVYteER0NzFDUEQ1UDVHOGJ6QXxBQ3Jtc0trVzI0a0dtUGNwU3N4VTg4OUtTTE13R0pqZDkwLXdMTjlnYW43SFc2M0RtcEZ0ZHNrNVVxZ2ZtVWpNWmNkNktObWtaTF9yX3l4aHlfWVE2UHZfdDMyMV9MNHNyUkRXcmJEZEhyZ2NZWjdhallYOUs3RQ\&q=https%3A%2F%2Fappstoremanager.net%2F\&v=Ls2wkAwXftk) (just our example here, other similar applications) require technical access to Google Play Console for their tasks (e.g., upload of app icons, feature graphics, screenshots, descriptions, etc.). This tutorial describes the main steps of the setup. What to do in Google Play and Google Cloud Console and how to get the JSON or P12 key file. In addition, how to configure specific access rights.


# How to grant API key access to Apple App Store Connect

{% embed url="<https://youtu.be/CmhNHNCorIY>" %}
Set up App Store Connect access
{% endembed %}

Various applications, such as the App Store Manager ([https://appstoremanager.net](https://www.youtube.com/redirect?event=video_description\&redir_token=QUFFLUhqbEJBb1RDa1dZblpPYWVka2xlWDFUV19ieUhWd3xBQ3Jtc0tuZERaWEZwSDd5SUNLQTNpb2k1UzFEVEkyNTFacjBRVFdHTUpnZ3JzY3ZzSEdKTXh6T05sV2xDQ3phanYtdnF2Y3VkajBMZWRQUkd4YTBwZ2FFdzlhSU1VclhaMFZjUGZTajM3T1RaYldvYzRrSDgzQQ\&q=https%3A%2F%2Fappstoremanager.net%2F\&v=CmhNHNCorIY)), require App Store Connect access to upload or download metadata. API access is the official way that Apple provides to third-party applications. In this tutorial, I will quickly guide you through the required steps.


# How to upload my app descriptions

{% embed url="<https://youtu.be/ftyroMHQXEs>" %}
Upload app descriptions
{% endembed %}

App updates are undoubtedly crucial for the discoverability of App Store Connect and Google Play apps. But not only from ASO aspects, but also to announce and describe innovations, new features, and app functions.

However, keeping the descriptions up to date is tiring and annoying. Everything has to be done manually via copy & paste. There is no bulk or batch mechanism. There is not? At least not in the two big stores. We fill this gap with our App Store Manager. Import or create your app descriptions in the App Store Manager and transfer everything to the store with one click. This functionality saves an incredible amount of time. Moreover, it’s reliable and lets you focus on more critical tasks.


# How to create Android Release Notes

{% embed url="<https://youtu.be/DpV9nkJYyy4>" %}
Create Android Release Notes
{% endembed %}


# Team Management

{% embed url="<https://youtu.be/zo9Nj5j6Ld8?feature=shared>" %}
Work in teams
{% endembed %}

Account owners can easily invite team members to collaborate on app store management. \
Invited users receive a join link via email. \
They can access the account owner's App Store Manager without needing their own subscription, or use their personal account if they have one. \
Owners also assign specific permissions, defining each member's role and access. \
\
This feature, available with Basic or Custom subscriptions, streamlines teamwork and ensures efficient app management.


# FAQ

Find answers to common questions about the App Store Manager.

***

## Getting Started

### Which stores are supported?

App Store Manager supports both major app stores:

| Store                       | Features                                                  |
| --------------------------- | --------------------------------------------------------- |
| **Apple App Store Connect** | Metadata, screenshots, app previews, Custom Product Pages |
| **Google Play Console**     | Metadata, screenshots, app icons, feature graphics        |

### What can I upload with App Store Manager?

| Content Type         | iOS | Android              |
| -------------------- | --- | -------------------- |
| Title & descriptions | Yes | Yes                  |
| Keywords             | Yes | —                    |
| Screenshots          | Yes | Yes                  |
| App preview videos   | Yes | — (YouTube URL only) |
| App icons            | —   | Yes                  |
| Feature graphics     | —   | Yes                  |
| Release notes        | —   | Yes                  |
| Custom Product Pages | Yes | —                    |

### Do I need a developer account?

Yes. You need:

* **Apple Developer Program** membership for App Store Connect
* **Google Play Developer** account for Google Play Console

The app must already exist in the store (draft or published state).

### What is a Store Listing?

A Store Listing (formerly called "package") is a container for your metadata and screenshots. You can create multiple store listings for:

* Regular operation
* Seasonal campaigns (Christmas, Summer, etc.)
* A/B testing different messaging
* Archiving previous versions

***

## Store Access & Credentials

### How do I set up App Store Connect access?

1. Go to [App Store Connect](https://appstoreconnect.apple.com) → Users and Access → Keys
2. Generate an API key with **App Manager** role
3. Download the `.p8` key file
4. Note your **Issuer ID** and **Key ID**
5. Enter these in App Store Manager under Credentials

{% hint style="warning" %}
Keep your API key secure. It provides full access to your App Store Connect account.
{% endhint %}

See [App Store Connect access](/documents/access/app-store-connect-access) for detailed instructions.

### How do I set up Google Play Console access?

1. Go to [Google Cloud Console](https://console.cloud.google.com)
2. Create a Service Account
3. Download the JSON key file
4. In Google Play Console, grant the service account these permissions:
   * View app information
   * Edit and delete draft apps
   * Manage store presence
5. Upload the JSON key in App Store Manager

See [Google Play Console access](/documents/access/google-play-console-access) for detailed instructions.

### Can I use multiple credentials?

Yes. You can assign different credentials to different apps. This is useful if you:

* Manage apps for multiple clients
* Have separate developer accounts for different apps
* Work with a team where credentials are managed per-project

### Are my credentials stored securely?

Yes. API keys and credentials are encrypted and stored securely. They are only used for API communication with the stores and are never shared.

### Is two-factor authentication supported?

App Store Connect no longer uses username/password authentication. API key authentication (which App Store Manager uses) is separate from your Apple ID login and doesn't require 2FA interaction.

### Can I use multiple Apple Developer teams?

Yes. If your Apple ID is associated with multiple teams, you can create separate apps in App Store Manager and assign different API keys for each team.

***

## Screenshots & Assets

### How does the Screenshot Manager work?

The Screenshot Manager uses drag & drop with **Smart Recognition**:

1. Drop files or folders into the manager
2. The engine automatically detects:
   * **Language** from folder names (e.g., `en-US`, `german`, `deutsch`)
   * **Slot position** from filenames (e.g., `1.png`, `en-US_3_1290x2796.png`)
   * **Device size** from actual image dimensions

### What screenshot dimensions are supported?

**iOS (App Store Connect):**

| Device         | Portrait    | Landscape   |
| -------------- | ----------- | ----------- |
| iPhone 6.9"    | 1320 × 2868 | 2868 × 1320 |
| iPhone 6.7"    | 1290 × 2796 | 2796 × 1290 |
| iPhone 6.5"    | 1242 × 2688 | 2688 × 1242 |
| iPhone 5.5"    | 1242 × 2208 | 2208 × 1242 |
| iPad Pro 13"   | 2064 × 2752 | 2752 × 2064 |
| iPad Pro 12.9" | 2048 × 2732 | 2732 × 2048 |

**Android (Google Play):**

| Asset           | Requirements             |
| --------------- | ------------------------ |
| Phone/Tablet    | Min 320px, max 3840px    |
| App Icon        | 512 × 512 px, 32-bit PNG |
| Feature Graphic | 1024 × 500 px            |

### How many screenshots can I upload?

| Store   | Minimum      | Maximum       |
| ------- | ------------ | ------------- |
| iOS     | 3 per device | 10 per device |
| Android | 2 per device | 8 per device  |

### Can I replace individual screenshots?

Yes. The Screenshot Manager uses position-based replacement. Uploading to Position 4 only affects that slot — all others remain unchanged.

### What image formats are supported?

* PNG (recommended)
* JPEG/JPG
* For Google Play icons: 32-bit PNG required

### How long do uploaded assets stay in App Store Manager?

Assets are stored for **180 days** on Basic and Premium plans before automatic deletion. This does not affect your live store listings.

***

## App Previews (Videos)

### Can I upload app preview videos?

Yes, for **iOS only**. App Store Manager supports bulk upload of app preview videos to App Store Connect with the same drag & drop workflow as screenshots.

**Requirements:**

* Duration: 15–30 seconds
* Max file size: 500 MB
* Formats: `.mov`, `.m4v`, `.mp4`
* Max 3 previews per device size per locale

### What about Google Play videos?

Google Play uses YouTube URLs for promo videos, which must be set directly in the Google Play Console. App Store Manager does not transfer video URLs to Google Play.

***

## Metadata & Translations

### How does automatic translation work?

1. Enter your content in one language
2. Click **Translate**
3. Select source and target languages
4. Review and adopt translations

Translations use:

* **Microsoft Azure** (Basic plan)
* **DeepL** (Premium plan) — neural network-based, higher quality

### How many languages are supported?

* **App Store Connect:** 50 languages
* **Google Play Console:** 87 languages

See [Supported languages](/documents/edit-translate-and-upload/supported-languages) for the full list.

### Will translations exceed character limits?

Translations may be longer or shorter than the original. The App Store Manager:

* Shows character count for each field
* Marks fields that exceed limits with **!** icon
* Provides a **Retranslate** function to iteratively shorten content

{% hint style="info" %}
Shorten your source text, then retranslate — the target will also be shorter.
{% endhint %}

### What are the character limits?

**iOS:**

| Field            | Limit |
| ---------------- | ----- |
| Name             | 30    |
| Subtitle         | 30    |
| Keywords         | 100   |
| Promotional Text | 170   |
| Description      | 4000  |

**Android:**

| Field             | Limit |
| ----------------- | ----- |
| Title             | 30    |
| Short Description | 80    |
| Full Description  | 4000  |

### Can I import translations from Phrase or Lokalise?

Yes. Export translations from your localization platform, format them as App Store Manager Excel/JSON templates, and import. See:

* [Import to Phrase](/documents/phrase-and-lokalise/import-app-store-metadata-to-phrase)
* [Import to Lokalise](/documents/phrase-and-lokalise/import-app-store-metadata-to-lokalise)

***

## Upload & Publishing

### Does uploading immediately publish my changes?

**Android:** Changes may go live after Google's review, depending on your settings.

**iOS:** Changes are staged in App Store Connect. You must manually submit for review in App Store Connect for changes to go live.

### Will empty fields overwrite store data?

No. Only fields with content are transferred. Empty fields in App Store Manager do not overwrite existing store data.

### What release tracks are supported for Android?

* Production
* Beta
* Alpha
* Internal testing

### Can I upload to apps that aren't published yet?

Yes. Apps in draft state are supported. For Android, select the appropriate release track (internal, alpha, beta).

### How long does an upload take?

* **Metadata only:** A few minutes
* **Full upload (all screenshots, all languages):** Up to 1 hour

Business customers receive prioritized processing.

### What if an error occurs during upload?

1. Check the error message in the activity log
2. Common issues:
   * Missing required fields (Android: title, short description, description)
   * Text exceeds character limit
   * Invalid credentials or expired API key
   * Screenshot dimensions don't match requirements
3. Fix the issue and retry

***

## Custom Product Pages (iOS)

### What are Custom Product Pages?

Custom Product Pages (CPPs) are alternate versions of your App Store listing. Use them to:

* Target different audiences
* A/B test messaging
* Create campaign-specific landing pages
* Highlight different features

### How many CPPs can I create?

App Store Connect supports up to **35 Custom Product Pages** per app.

### What can I customize in a CPP?

* Promotional text
* Screenshots
* App previews

The app name, icon, and description remain the same as your default listing.

### Can I submit CPPs for review from App Store Manager?

Yes. When you upload a CPP, you can check the option to submit directly for Apple review.

### Which plan includes CPP support?

Custom Product Pages are available for **Premium Plan** subscribers.

***

## Team Management

### Can multiple users work on the same account?

Yes. Team Management (v4.0.0+) allows you to:

* Invite team members
* Assign roles (Viewer, Editor, Admin)
* Lock store listings to prevent conflicts
* Track changes with audit logs

### What user roles are available?

| Role       | Permissions                                       |
| ---------- | ------------------------------------------------- |
| **Viewer** | Read-only access                                  |
| **Editor** | Edit metadata and screenshots                     |
| **Admin**  | Full access including uploads and team management |

### How does locking work?

When editing a store listing, you can lock it to prevent other team members from making conflicting changes. Unlock when finished.

***

## Subscriptions & Billing

### What plans are available?

| Plan         | Key Features                                                        |
| ------------ | ------------------------------------------------------------------- |
| **Tiny**     | Android Release Notes only                                          |
| **Basic**    | Metadata, screenshots, translations                                 |
| **Premium**  | Everything + Custom Product Pages, App Previews, DeepL translations |
| **Business** | Priority processing, custom integrations                            |

### Do translations have limits?

Yes. Each plan includes a monthly character allowance for translations:

* **Basic:** 1,000,000 characters
* **Premium:** Higher limits

Characters reset monthly.

### Can I change my plan?

Yes. Upgrade or downgrade anytime through the subscription settings.

***

## Troubleshooting

### My screenshots aren't being recognized

Check that:

* Image dimensions exactly match supported sizes
* Folder names use recognizable locale codes (e.g., `en-US`, `de-DE`, `german`)
* Filenames include position numbers (e.g., `1.png`, `2.png`)

Unrecognized files appear in "Uncategorized" where you can manually assign them.

### Upload fails with "permission denied"

Your API credentials may lack required permissions:

**Google Play:** Ensure service account has:

* View app information
* Edit and delete draft apps
* Manage store presence

**App Store Connect:** Ensure API key has **App Manager** role.

### Translations are too long

Use the **Retranslate** function:

1. Shorten your source text
2. Retranslate to target languages
3. Repeat until within limits

### App not found when searching

* Verify the app is published (draft apps won't appear in search)
* Check spelling and platform selection
* For unpublished apps, add manually using the package name/bundle ID

### Changes not appearing in the store

**iOS:** Changes are staged. Submit for review in App Store Connect.

**Android:** Check if your app is under review. Changes may take time to propagate after approval.

***

## File Templates

### Where can I download the file templates?

All official templates are available on the [File Templates](/documents/import-and-export/file-templates) page:

| Template Type              | Formats     |
| -------------------------- | ----------- |
| Metadata (Android)         | JSON, Excel |
| Metadata (iOS)             | JSON, Excel |
| Custom Product Pages (iOS) | JSON        |
| Screenshots (Android)      | ZIP         |
| Screenshots (iOS)          | ZIP         |

### What is the CPP template for?

The `iosCppTemplate.json` is specifically for **Custom Product Pages** in App Store Connect. Use it to import or export promotional texts for your CPPs.

### Can I modify the template structure?

The file structure must remain intact for imports to work. You can:

* Leave fields blank or omit them entirely
* Change the order of languages
* Remove languages you don't need

Custom file formats are available for Business customers.

***

## Still Need Help?

* Check the [detailed walkthrough](/documents/readme/how-to-work-with-the-app-store-manager)
* Review the [changelog](/app-store-manager/changelog) for recent updates
* [Contact us](https://www.iwantanelephant.com/contact/) for direct support


# Changelog

All notable changes to the App Store Manager are documented here.

***

## Version 4.2.2

**Release Date:** April 2026

### New iOS Languages

Added support for 11 new App Store Connect languages:

* Bangla (bn)
* Gujarati (gu)
* Kannada (kn)
* Malayalam (ml)
* Marathi (mr)
* Odia (or)
* Punjabi (pa)
* Slovenian (sl)
* Tamil (ta)
* Telugu (te)
* Urdu (ur)

All new languages support MS Translation. DeepL (Advanced Translation) is available for Bangla, Gujarati, Marathi, Punjabi, Slovenian, Tamil, Telugu, and Urdu.

### Screenshot Manager Updates

* Added locale recognition for all new iOS languages
* Smart Recognition now supports native script aliases (e.g., `বাংলা`, `தமிழ்`, `తెలుగు`)

***

## Version 4.2.0

**Release Date:** March 23, 2026

### App Previews for iOS (Premium)

Bulk upload app preview videos directly to App Store Manager and transfer them to App Store Connect.

* Upload all videos at once or replace individual previews
* Drag & drop support with Smart Recognition
* Available for Premium subscription users

### Screenshot Manager for iOS

New drag & drop Screenshot Manager with enhanced control over your App Store Connect assets.

* Upload single images or entire folders
* Reorder screenshots by dragging within slots
* Replace individual images without affecting others
* Available for Basic subscription and above

### Other Changes

* Unified UI across menus and loading screens

***

## Version 4.1.0

**Release Date:** October 27, 2025

### Custom Product Pages

Create, edit, upload, and publish Custom Product Pages to App Store Connect.

* Prepare everything in advance with bulk-upload for metadata and screenshots
* Submit directly for Apple review from within App Store Manager

### Fixes

* Improved stability for retry mechanism when uploading images to App Store Connect
* Packages renamed to "Store Listings"
* General performance and UI improvements

***

## Version 4.0.2

**Release Date:** May 20, 2025

### UI Improvements

* **App Overview Page:** Timestamps now display in the correct format
* **App Description:** Warning icon correctly right-aligned next to clear button
* **Pricing Plan:** User Management feature corrected in comparison table

### Features

* **Log Groups:** Each asynchronous process now displays in its own dedicated log group
* **Firebase Storage (Beta):** Direct upload available for testing

### Fixes

* Navigation after exiting async jobs now correctly displays relevant logs
* Minor error message improvements

***

## Version 4.0.1

**Release Date:** March 31, 2025

### Performance

* Faster Cloud Functions start time
* Reduced data load

### User Management

* Fixed audit log recording inconsistencies
* Improved error messages for deleted invitations
* Locked store listings cannot be deleted (data integrity)

### Error Handling

* Clearer error messages during Apple metadata upload
* Fixed en-GB locale exception
* Resolved server-side 'no data' error display

***

## Version 4.0.0

**Release Date:** February 24, 2025

### Team Management

* Invite users to collaborate as a team
* Define user roles with granular permissions
* Lock and unlock store listings to prevent conflicts
* Navigate between teams and personal profiles
* Audit logs for user change tracking

### Other Features

* Notifications auto-delete after 30 days
* Language filter shows filled attribute count

### Fixes

* Standardized UI modalities
* Optimized application load time
* Fixed blank page issue in notifications
* Notifications deleted with associated apps/packages
* Fixed sort order on overview pages
* Support form submission fixed

***

## Version 3.3.3

**Release Date:** January 17, 2025

### Features

* iOS screenshot upload for 6.7" and 6.9" displays

### Fixes

* Password reset page access issue resolved
* Improved error handling for metadata import with empty production track

***

## Version 3.3.2

**Release Date:** May 16, 2024

### Features

* **macOS & tvOS support:** Upload metadata to App Store Connect for additional platforms
* **Faster uploads:** Google Play Console screenshot upload \~10x faster (2 GB archive in \~15 minutes)

### Improvements

* Optimized Stripe integration for subscriptions

***

## Version 3.3.1

**Release Date:** April 7, 2024

### Features

* **Export release notes:** Android release notes exportable as file or via clipboard

***

## Version 3.3.0

**Release Date:** February 25, 2024

### Features

* **Credential management:** Assign, change, reuse, reset, and remove credentials per app

### Improvements

* Modal behavior improved (no accidental closing)
* Better breadcrumb navigation
* Enhanced error information display

***

## Version 3.2.1

**Release Date:** January 22, 2024

### Features

* **Advanced translation:** New DeepL languages — Turkish, Ukrainian, Indonesian, Korean

### Improvements

* Minor UI/UX updates and refactoring

***

## Version 3.2.0

**Release Date:** January 15, 2024

### Subscription Changes

* **Tiny Plan:** New plan for Android Release Notes Creator users
* **Free Plan discontinued:** Contact us for individual options

***

## Version 3.1.0

**Release Date:** December 5, 2023

### Features

* **Reimplemented iOS screenshot upload:** 50% faster transfers and validation
* **New upload UI:** More informative and transparent logging

***

## Version 3.0.2

**Release Date:** October 18, 2023

### Infrastructure

* Backend performance improvements
* UI consistency fixes

***

## Version 3.0.1

**Release Date:** June 27, 2023

### Fixes

* Subscription feature availability corrected
* UI irregularities fixed
* XLSX/JSON template download buttons corrected
* Subscription page transparency improved

***

## Version 3.0.0

**Release Date:** June 5, 2023

### Complete Redesign

* New UX design and GUI
* Integrated app icons
* Reworked login page
* New menu structure and dialogs
* Updated theme
* Redesigned async job/log pages
* Updated documentation

***

## Version 2.1.4

**Release Date:** November 26, 2022

### Features

* **Android metadata upload:** Performance optimizations
* **Version code support:** Publish release notes to specific tracks with multiple releases
* **JPEG support:** Screenshot upload now accepts JPEG format
* **List sorting:** App and package lists sortable (order saved per user)

***

## Version 2.1.3

**Release Date:** September 26, 2022

### Features

* **Android release notes:** Upload directly from App Store Manager
* **Release notes management:** Import, translate, and manage Android release notes
* **Apple ZIP support:** App assets now support Apple ZIP format

### Changes

* Facebook login discontinued
* Various UI fixes

***

## Version 2.1.2

**Release Date:** July 11, 2022

### Features

* **Clear function:** Reset individual language selections

### Improvements

* Performance optimizations
* Bug fixes for app search and templates

***

## Version 2.1.1

**Release Date:** May 12, 2022

### Features

* **App icon upload:** Bulk upload Android app icons to Google Play Console
* **Feature graphic upload:** Bulk upload for all languages

***

## Version 2.1.0

**Release Date:** April 13, 2022

### Features

* **Duplicate packages:** One-click duplication for better content management
* **Description fields:** Add notes to packages
* **Filters:** Find apps and packages faster

### Fixes

* iOS screenshot sorting fixed
* Performance and error handling improvements

***

## Version 2.0.10

**Release Date:** March 28, 2022

### Features

* **Excel import:** Import metadata from Excel templates
* **File export:** Save metadata to JSON or Excel files

{% hint style="info" %}
Import/export requires Basic Plan or above.
{% endhint %}

***

## Version 2.0.9

**Release Date:** February 28, 2022

### Features

* **Android Release Notes Creator:** Integrated into the App Store Manager

### Fixes

* App Store Connect access issues resolved
* Screenshot bulk upload improvements

***

## Version 2.0.8

**Release Date:** January 25, 2022

### Features

* **Guided tour:** Quick onboarding help
* **Reworked start screen:** Clear entry points and quick help

### Improvements

* Additional tooltips
* Improved error handling

***

## Version 2.0.7

**Release Date:** January 9, 2022

### Improvements

* Better app search navigation
* Separate upload UI for metadata/screenshots
* Save credentials from any screen
* New "empty languages" filter
* Improved "select all" button
* Android title length adjusted to 30 characters

***

## Version 2.0.6

**Release Date:** December 11, 2021

### Pricing Updates

* **Small Plan:** €2.99/month with 300,000 translation characters
* **Basic Plan:** 50% price reduction to €14.99/month

### Changes

* Android title length adjusted (50 → 30 characters)
* Simplified import/translation UI

***

## Version 2.0.5

**Release Date:** August 23, 2021

### Features

* **Google Play screenshot upload:** Bulk upload to Google Play Console
* **Neural Network translation:** Premium quality for 30+ languages
* **iOS version info:** Upload and transfer version information

***

## Version 2.0.4

**Release Date:** July 27, 2021

### Features

* **App Store Connect screenshot upload:** Bulk upload with folder structure templates

***

## Version 2.0.3

**Release Date:** May 10, 2021

### Subscription Plans

* New plans: Free, LaunchMatic Transfer, Basic, Business
* Existing users assigned to Free Plan
* LaunchMatic image upload to Google Play Console

***

## Version 2.0.2

**Release Date:** February 22, 2021

### Changes

* **New App Store Connect authentication:** API key-based connection
* Minimum character visualization in text fields

***

## Version 2.0.1

**Release Date:** February 4, 2021

### Notice

* App Store Connect import/upload temporarily unavailable due to Apple's 2FA requirement
* Alternative authentication in development

***

## Version 2.0.0

**Release Date:** December 27, 2020

### Major Release

* Rebranded from "App Store Localizer" to **App Store Manager**
* Completely reworked UI
* Improved app and package overview
* Enhanced usability
* Import and translate anytime
* New notification feature
* Performance and stability improvements

***

## Version 1.0.5

**Release Date:** May 6, 2020

* Support for all Android release tracks (production, beta, alpha, internal)
* JSON key file validation on entry
* Backend stability improvements

***

## Version 1.0.4

**Release Date:** April 16, 2020

* Search and add apps by title
* Log access via description status link
* Backend stability improvements

***

## Version 1.0.3

**Release Date:** March 19, 2020

* Direct log access from app status field
* Error handling improvements
* FAQ updates

***

## Version 1.0.2

**Release Date:** February 24, 2020

### New Login Providers

* Google
* Facebook (requires attached email)
* GitHub
* Twitter

***

## Version 1.0.1

**Release Date:** February 18, 2020

* Redesigned login/register page
* Removed KK (Kazakh) and PA (Punjabi) until store support
* Error handling for empty credentials
* Production track support only for Google Play Console

***

## Version 1.0.0

**Release Date:** January 31, 2020

### Initial Release

* New user interface
* App and description management
* Store and save configurations
* Import from stores or files
* Integrated help, tutorials, and FAQ


