---
title: Submit a Build to a Store
description: Submit a native build to the Apple App Store (TestFlight) or Google Play Store with Capawesome Cloud, from the CLI or the Console.
---

# Submit a Build

Submitting a build sends a finished [native build](../native-builds/index.md) straight to the Apple App Store (TestFlight) or Google Play — no manual uploads through Xcode or the Play Console. Under the hood, each submission creates a **deployment** to a [destination](destinations/index.md), so you can submit any build with a single command or click.

## Prerequisites

Before you can submit, you need:

- A successful [native build](../native-builds/builds.md) for the platform you're submitting (a signed build matching the store's requirements).
- A configured [destination](destinations/index.md) — the store credentials and settings the build is submitted to. See [Getting Started](setup.md) to set one up.

## Submit

=== "CLI"

    Use the [`apps:deployments:create`](../cli/commands.md#appsdeploymentscreate) command, identifying the build by its number (or ID) and the destination to submit to:

    ```bash
    npx @capawesome/cli apps:deployments:create --build-number 42 --destination my-destination
    ```

    The CLI prompts for the build and destination if you don't pass them. Add `--detached` to return immediately instead of waiting for the submission to finish — useful in scripts and CI.

=== "Console"

    Open the [Deployments](https://console.cloud.capawesome.io/apps/_/deployments){:target="_blank"} page, click **Create deployment**, select the build to submit and the destination, then confirm.

## After submitting

What happens next depends on the store:

- **Apple App Store** — the build is uploaded to TestFlight. Once App Store Connect finishes processing it (this can take a few minutes), it becomes available to your testers and is ready to promote to an App Store release.
- **Google Play Store** — the build is published to the destination's configured track: **Internal**, **Alpha**, **Beta**, or **Production**.

Keep in mind that the stores run their own processing and review after Capawesome Cloud hands off the build, so a successful deployment means the build was *submitted* — not yet that it's live.

## Track the submission

=== "CLI"

    Follow a deployment's status or stream its logs:

    ```bash
    npx @capawesome/cli apps:deployments:list
    npx @capawesome/cli apps:deployments:logs
    ```

    Add `--json` to `apps:deployments:get` or `apps:deployments:list` for machine-readable output, including timing and the related job — handy for debugging a failed submission in CI.

=== "Console"

    Watch the deployment's status update live on the [Deployments](https://console.cloud.capawesome.io/apps/_/deployments){:target="_blank"} page, and open it to read the logs.

If a submission is still running and you need to stop it, cancel it with `apps:deployments:cancel` or from its detail page in the Console.

## Next steps

- [Submit automatically after a build](submit-automatically.md) — skip this step on every release.
- [Destinations](destinations/index.md) — configure App Store Connect and Google Play credentials.
- [Troubleshooting](troubleshooting.md) — fix a failed submission.
