The first guide got an extension running on your own computer through Developer mode. This one puts it in the Chrome Web Store, so colleagues or clients can install it in one click and get updates automatically. We did every step below with Client Time, our free HubSpot time tracker, in our own developer account.
The short version: zip it, list it, declare what it does with data, choose who can see it, submit. Allow an hour for the first one. Most of that is the privacy section.
Use the same folder you loaded with Load unpacked, with four checks first.
Also check there is no remote code: nothing loaded from another website at runtime, and no eval. Claude will not write that unless asked, but it is worth confirming.
I want to publish this Chrome extension to the Chrome Web Store. Check the manifest is ready (version, icons, narrow permissions, no remote code) and give me a zip with manifest.json at the top level. Then draft: a store description of about 200 words, a single-purpose statement in one sentence, a one-line justification for each permission, which data-usage boxes I should tick and why, and a plain-English privacy policy.
Review what comes back. The justifications and the data answers are declarations you are making to Google, so they must be true of your code.
In the Developer Dashboard, go to Items and click New item. Drop the zip in or use Select file. The item is created as a draft straight away, and you land on its Store listing tab.
The left-hand menu has the tabs you need to complete: Package, Store listing, Privacy, Distribution, and Test instructions if a reviewer needs a login to try it. Save draft saves as you go. Submit for review stays greyed out until nothing required is missing.
The title and summary come from your manifest and cannot be edited here. Change them in the manifest and upload again if you need to.
| Field | What to put |
|---|---|
| Description | What it does and why someone would install it, in plain words. Up to 16,000 characters; a few short paragraphs is plenty. Say clearly if it is not made by or affiliated with a brand it works with. |
| Category | Client Time went in Workflow & Planning, under Productivity. |
| Language | English (United Kingdom), for us. |
| Store icon | 128 x 128 PNG. The artwork should be about 96 x 96 with transparent padding, and work on light and dark backgrounds. |
| Screenshots | At least one, up to five. 1280 x 800 or 640 x 400, JPEG or 24-bit PNG with no transparency. Show the extension actually doing its job. |
| Small promo tile | 440 x 280, JPEG or 24-bit PNG. Optional, but listings without one rank lower in search. |
| Marquee promo tile | 1400 x 560. Only needed if you want to be considered for featuring. |
| Official URL, homepage, support | Optional. An official URL has to be a site you have verified in Google Search Console. |
This tab is shared with the review team, and the data answers are shown publicly on your listing. Be accurate rather than reassuring.
One sentence that says what the extension is for. Ours: "Client Time logs how long you spend in each HubSpot portal, so that time can be billed to the right client."
One box per permission. Say what it is used for, in terms of the single purpose. Ours, for example:
If you ask for site access, the dashboard warns that it may mean an in-depth review. That is normal. Narrow host patterns keep it short.
Answer No unless your extension loads JavaScript or WebAssembly that is not in the package.
Tick every category the extension handles, even if the data never leaves the user's computer. Google's own FAQ is clear that local-only handling still has to be disclosed. Client Time reads the address of HubSpot tabs and records time against it, so we ticked Web history and nothing else. Then certify the three statements: you do not sell data, do not use it for unrelated purposes, and do not use it for credit decisions.
Required if the extension handles any user data, which in practice is almost always. It has to be a public web page. Ours explains what is handled, that it stays in Chrome on the user's computer, that nothing is collected or shared, how to export and delete, and who to contact. Ask Claude to draft one from your code, then publish it on your own site.
If Submit for review is greyed out, click Why can't I submit?. It lists exactly what is missing. For us, before the privacy page went live, it said only that the privacy policy link was needed.
When you submit, you can untick automatic publishing. The item is then held after approval for up to 30 days, and you publish it when you are ready.
Most reviews finish within a few days. First submissions, new accounts, broad permissions and large or hard-to-read code take longer. If you hear nothing after three weeks, contact developer support.
You get an email naming the policy. Fix it and resubmit, or appeal from the item's page in the dashboard with more context. Appeals usually get a response within about three days.
Avoid adding permissions in an update if you can. New permissions that trigger a warning make Chrome disable the extension for existing users until they accept them.
HubSpot's App Marketplace does not allow apps that overlay the HubSpot platform. The Chrome Web Store is a separate route: an extension like Client Time can be listed there and installed by your team, but it is not a HubSpot Marketplace app. Say in your description that it is independent of HubSpot.