Automated Firefox Add-ons (AMO) submissions need one credential pair and, in
most cases, one identifier:
Prerequisites
- Create a Firefox account and sign in at
addons.mozilla.org.
- Accept the Firefox Add-on Distribution Agreement. The API key page stays
locked behind this acceptance, even for accounts that have published
add-ons through the web UI for years.
Generate the API credentials
- Open the
AMO API key page.
- Generate new credentials.
- Copy the JWT issuer. Its shape is
user:12345678:987. This is the
value most tools call the API key.
- Copy the JWT secret immediately.
The JWT secret is shown only once. If you lose it, generate new credentials,
which revokes the old pair everywhere it is in use.
The add-on GUID and the first submission
The GUID rules depend on the release channel:
- Listed (public listing on AMO): an existing GUID is required. Do the
first submission by hand in the
Developer Hub, then automate
updates.
- Unlisted (signed for self-distribution): leave the GUID empty on the
first submission and AMO creates a new add-on, assigning a GUID.
The empty-GUID convenience is a one-time event, and nothing writes the
assigned GUID back for you. After the first unlisted submission, open the
add-on’s page in the Developer Hub, copy the assigned GUID, and save it in
your store settings. Every later submission with an empty GUID creates another
brand-new add-on instead of updating the first one.
Set the release channel explicitly. An unset channel falls back to listed
at submission time, which either fails (no GUID) or publishes a public
listing you may not have intended (GUID set).
Manifest requirement for new add-ons
New add-ons must declare data collection permissions in the manifest, or AMO
rejects the submission:
Use ["none"] only when the extension transmits nothing. The declaration,
the privacy section of STORE.md, and the
code must agree. See
Firefox store readiness
for the full rules.
Source zip for bundled builds
AMO requires a source zip when the upload is minified or bundled, which an
Extension.js production build is. Build it with:
Explain how to build from source in the reviewer notes section of STORE.md.
Blast radius and rotation
AMO API credentials are account-wide. The issuer and secret can upload to
every add-on your account controls. If you manage add-ons for several clients,
keep each client’s add-ons under that client’s own AMO account.
AMO credentials have no scheduled expiry. Rotate by generating a new pair on
the API key page, which revokes the old one, then re-enter the new values
wherever they are stored.
Name map
The same values wear different names on each surface: