manifest.json for Chrome, Edge, Firefox, and Safari, and stops at the package that extension build --zip produces, so the values below feed your own submission tooling.
Automated Chrome Web Store submissions need two identifiers and one credential set:
You need either the OAuth trio or the service account, not both. When both are configured, the service account wins.
extension.dev,
the sponsor of Extension.js, handles publishing, store submission, and sharing
from the same project. Its docs cover the steps after
extension build.Prerequisites
- Register a developer account at the Chrome Web Store Developer Dashboard. Registration has a one-time $5 fee.
- Build a store zip (
npx extension build --browser chrome --zip). - Upload that zip manually in the dashboard to create the item.
- Copy the extension ID from the item’s dashboard URL.
- Copy the publisher ID: it is the UUID in your dev console URL,
chrome.google.com/webstore/devconsole/<UUID>.
Do not use the Google OAuth Playground to mint the refresh token. The
Playground requires a Web application client with its redirect URI, and the
Chrome Web Store flow requires a Desktop app client. Combining them fails with
redirect_uri_mismatch.Create the OAuth client
- Create or choose a project in the Google Cloud Console.
- Enable the Chrome Web Store API for that project.
- On the credentials page, create an OAuth client ID with application type Desktop app. A Web application client does not work here.
- Copy the client ID and the client secret.
- Mint a refresh token for that client with a loopback consent flow on
127.0.0.1, which is the redirect a Desktop app client accepts. The token must authorize thehttps://www.googleapis.com/auth/chromewebstorescope. A service account skips this step, and the next section covers it.
Alternative: a service account
A Google Cloud service account avoids OAuth consent entirely and is the most stable choice for CI:- In the Google Cloud Console, create a service account in the same project that has the Chrome Web Store API enabled.
- Create a JSON key for it and download the file.
- In the Chrome Web Store dev console, open Account and add the service account’s email address to your publisher. One service account per publisher.

