CLI Reference
whatalo deploy
Build and deploy a new version of your plugin to the Whatalo marketplace.
Syntax
whatalo deploy [options]Options
| Flag | Type | Description |
|---|---|---|
--force | boolean | Skip the confirmation prompt (required in CI/CD) |
--no-build | boolean | Skip the build step |
--message <msg> | string | Changelog entry or release note for this version |
--set-version <ver> | string | Override the version (default: reads from package.json) |
--json | boolean | Output results as JSON |
--portal-url <url> | string | Developer Portal URL |
Deployment Flow
- Auth check — Verifies your session. Unlike
whatalo dev, there is no auto-login; runwhatalo loginif your session has expired. - Read config — Loads
whatalo.app.tomlfrom the current directory. - Build — Runs the command defined in
build.build_commandin your config. Timeout: 120 seconds. The CLI verifies theoutput_direxists after the build completes. - Determine version — Uses
--set-versionif provided, otherwise reads theversionfield frompackage.json. - Confirm — Shows a summary and asks for confirmation (skipped with
--forceor--json). - Deploy — Sends
POST /api/plugins/{plugin_id}/deploywith the version, manifest, and message.
Version Rules
- Must be a valid semver string (e.g.,
1.0.0,1.2.0-beta.1) - Cannot be lower than the current deployed version
Status After Deployment
Deployment does not automatically publish your plugin. The status transition depends on the current state:
| Current status | Status after deploy |
|---|---|
draft | draft (submit via dashboard when ready) |
approved | pending_review (changes trigger re-review) |
rejected | pending_review |
CI/CD Usage
In non-interactive environments (GitHub Actions, Railway, etc.), always use --force:
whatalo deploy --force --message "Fix order sync bug"Without --force, the CLI will hang waiting for confirmation input that never comes in a CI environment.
Example GitHub Actions step
- name: Deploy plugin
run: whatalo deploy --force --message "${{ github.event.head_commit.message }}"
env:
WHATALO_DEVELOPER_PORTAL_URL: ${{ secrets.PORTAL_URL }}Examples
Deploy with a message and skip build (already built):
whatalo deploy --no-build --message "Add bulk order export"Deploy a specific version:
whatalo deploy --set-version 2.0.0 --message "Major rewrite — new UI"Deploy with JSON output for scripting:
whatalo deploy --force --jsonRelated Commands
whatalo validate— Validate before deployingwhatalo dev— Test locally before deploying