# How to Monetize a Google Workspace Add-on (Sheets, Docs, Gmail)

> How to monetize a Google Sheets, Docs or Gmail add-on: Marketplace rules, OAuth and CASA costs, pricing models, Stripe or Paddle, and a safe licence check.

- Canonical: https://zeroraised.com/blog/how-to-monetize-a-google-workspace-add-on
- Published: 2026-11-10T17:30:00Z
- Author: ZeroRaised Team (https://zeroraised.com/blog/authors/zeroraised)
- Publisher: ZeroRaised (https://zeroraised.com/)
- Section: Revenue
- Tags: developer-tools, marketplaces, revenue, bootstrapping

**Short answer:** Google Workspace Marketplace will list and distribute your Sheets, Docs or Gmail add-on, but it does not appear to collect money for you. You charge through your own checkout (Stripe, Paddle or Lemon Squeezy), tie each payment to the user's Google email, and check that entitlement on your own server every time a paid feature runs. Our pick for most add-ons is freemium with a usage cap.

Every limit, price and quote below comes from Google's developer docs or the vendor's own page, checked on 10 Nov 2026. The advice in between is ours and is marked as such.

## TL;DR

- **No built-in payments.** The Marketplace listing has a **Pricing** field with four options, "Free of charge", "Free of charge trial", "Free of charge with paid features" and "Paid" ([Google: create a listing](https://developers.google.com/workspace/marketplace/create-listing)). We found nothing in Google's Marketplace docs saying it processes payments.
- **Review comes first.** "Public apps require a review from the Marketplace team" ([Google: publish](https://developers.google.com/workspace/marketplace/how-to-publish)), and "App review typically takes several days" ([Google: app review](https://developers.google.com/workspace/marketplace/about-app-review)).
- **Avoid restricted scopes if you can.** They trigger a security assessment "at least every 12 months" ([Google: restricted scope verification](https://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verification)).
- **Freemium with a cap is common.** Mailmeteor gives 50 emails a day free and charges from $5.99 per user per month ([Mailmeteor pricing](https://mailmeteor.com/pricing)).
- **Keep entitlements on your server,** updated by payment webhooks, never in a client-side flag.

**Disclosure:** ZeroRaised publishes this guide and is a launch site for bootstrapped products. ZeroRaised has no commercial relationship with Google, Stripe, Paddle, Lemon Squeezy, Gumroad, Mailmeteor, YAMM, BudgetSheet or Coupler.io. Facts come from the linked sources as checked on 10 Nov 2026.

## What Google does and does not do for you

If you have shipped a [VS Code extension](https://zeroraised.com/blog/how-to-monetize-a-vs-code-extension), the Workspace Marketplace will feel familiar: Google gives you a listing, a review gate and distribution, and leaves the business side to you.

What Google provides:

- **A listing with a pricing label.** The Pricing field is optional, but Google says "We recommend that you include pricing information for your app" ([create a listing](https://developers.google.com/workspace/marketplace/create-listing)). Pick "Free of charge with paid features" for freemium; a "Free of charge" label on a paywalled add-on invites one-star reviews.
- **Review.** Google "reviews your app and its listing to make sure they meet Google's design, content, and style guidelines", and the criteria include that "The app has passed OAuth verification, uses the narrowest OAuth scopes possible" ([app review](https://developers.google.com/workspace/marketplace/about-app-review)).
- **Distribution.** Vance Lucas put it plainly: "Google has over 3 billion users and provides a built-in marketplace and distribution channel" ([Vance Lucas](https://vancelucas.com/blog/how-i-built-a-google-sheets-extension-making-1-6k-mrr/)).

What Google does not provide, as far as its docs show:

- **Checkout, subscriptions or licensing for your add-on.** The only billing reference we found is a warning on the SDK setup page that the Marketplace API "is a different tool used to integrate with Google's licensing and billing services" ([enable the SDK](https://developers.google.com/workspace/marketplace/enable-configure-sdk)). It is not a payment flow for indie add-ons.
- **A publishing fee we could find.** The same page notes "If you create a Google Cloud project, you might need to turn on billing for the project." That is Google Cloud billing, not a Marketplace cut. Google's developer distribution agreement is linked from the [Marketplace terms](https://developers.google.com/workspace/marketplace/terms); read it before you publish.

Our read: compared with app stores, this is good news. We found no platform revenue share in the docs, and you own the customer relationship. The cost is that you build checkout, tax and licensing yourself.

## The hidden cost: OAuth scopes and the security assessment

Before you think about price, look at your scopes, because they decide how expensive it is to stay listed.

Google's help centre says apps requesting sensitive or restricted scopes "must complete Google's OAuth app verification before being granted access", and restricted scopes need an "annual security assessment from a Google empanelled group of security assessors" ([Google Cloud help](https://support.google.com/cloud/answer/13464321)). The developer docs add that apps must "complete a security assessment at least every 12 months after your assessor's Letter of Assessment (LOA) approval date", and that "the restricted scopes verification process can potentially take several weeks to complete" ([restricted scope verification](https://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verification)). Google's page does not say who pays for the assessment, so price that out with an assessor before you commit.

Our read: for a small add-on, a recurring assessment can eat a big share of year-one revenue. Ask for the current document rather than the whole Drive, and list every scope next to the feature that needs it. Google's own advice: "Do not request access to data you do not need" ([Google Cloud help](https://support.google.com/cloud/answer/13464321)).

## Pricing models that work for add-ons

| Model | How it works | Real example (own pages, 10 Nov 2026) | Best for |
|---|---|---|---|
| Freemium with a usage cap | Free up to N actions per day or month, paid lifts the cap | Mailmeteor: free 50 emails a day, Starter $5.99 per user per month at 250 a day ([pricing](https://mailmeteor.com/pricing)) | Tools where usage maps to value: mail merge, exports, AI calls |
| Freemium with a feature cap | Free for one account, source or sheet | BudgetSheet's early free version "allowed users to connect 1 account" ([Vance Lucas](https://vancelucas.com/blog/how-i-built-a-google-sheets-extension-making-1-6k-mrr/)) | Data connectors and sync tools |
| Free trial then subscription | Time-limited full access | BudgetSheet today: 15-day free trial, paid from $6/month or $59/year ([BudgetSheet](https://budgetsheet.com/)) | Tools with obvious value in the first week |
| Per-user subscription, priced by account type | Higher price for Workspace accounts | YAMM: free 20 recipients a day; in the US, Pro for gmail.com is 6 USD a month billed annually at 72 USD, Pro for Workspace 12 USD a month billed at 144 USD ([YAMM](https://yamm.com/pricing)) | Tools whose limits differ by account type |
| Tiered by connections | Price by data sources and refresh | Coupler.io: free plan with manual refresh, Starter $32/month or $24/month billed annually ([Coupler.io](https://www.coupler.io/pricing)) | Integrations and reporting |

Two other models have no verified public example in this post: a **domain-wide licence** (one invoice for a whole Workspace domain) and a **lifetime licence**. YAMM's page has a detail worth copying: it sets prices per billing country (its "every other country" row is half the US price), and Workspace accounts pay more and get a higher cap (1,500 recipients a day against 400 for gmail.com).

Our read: a usage cap beats a feature cap when your costs scale with usage, as they will if your add-on calls an AI API or your own server. A lifetime deal only makes sense if your add-on runs fully in Apps Script with no backend bill.

## Choosing a payment tool

Fees from each vendor's own page, checked 10 Nov 2026:

| Tool | Fee | Merchant of record? |
|---|---|---|
| Stripe (US) | 2.9% + 30¢ per successful domestic card charge ([Stripe US pricing](https://stripe.com/us/pricing)) | No, sales tax and VAT are on you |
| Paddle | 5% + 50¢ "per Checkout transaction" ([Paddle](https://www.paddle.com/pricing)) | Yes ([Paddle vs Gumroad](https://www.paddle.com/compare/gumroad)) |
| Lemon Squeezy | 5% + 50¢ per transaction; "Transactions made outside of the US may encounter small additional fees" ([Lemon Squeezy](https://www.lemonsqueezy.com/pricing)) | Yes ([Lemon Squeezy tax docs](https://docs.lemonsqueezy.com/help/payments/sales-tax-vat)) |
| Gumroad | 10% + $0.50 on direct sales, 30% via its Discover marketplace ([Gumroad](https://gumroad.com/pricing)) | Yes since 1 Jan 2025, "in regions where it has tax obligations" (same page) |

Add-ons are global from the first install, so you will sell into countries where you owe VAT or GST from the first sale. That is the core trade-off covered in our guide to [merchant of record vs payment processor](https://zeroraised.com/blog/merchant-of-record-vs-payment-processor). Our read: start with Paddle or Lemon Squeezy unless you already handle tax registrations, and move to Stripe once the fee gap pays for an accountant.

## The technical side: entitlements you can trust

### 1. Identify the user

Google says `Session.getActiveUser()` returns a blank string "If security policies do not allow access to the user's identity", and that "the user's email address is not available in any context that allows a script to run without that user's authorization", naming "a simple `onOpen(e)` or `onEdit(e)` trigger, a custom function in Google Sheets, or a web app deployed to "execute as me"" ([Session reference](https://developers.google.com/apps-script/reference/base/session)). `getEffectiveUser()` returns the trigger creator under an installable trigger and otherwise usually the same account.

Our read: run paid features from a sidebar, dialog or menu action, and treat a blank email as "free tier" rather than an error.

### 2. Store the plan on your server

Google describes user properties as for "User-specific settings, like metric or imperial units" ([Properties guide](https://developers.google.com/apps-script/guides/properties)), so use them as a short cache at most. The source of truth for "is this person paying?" is a table on your server keyed by email, updated by your payment provider's webhooks (`checkout.session.completed` and `customer.subscription.deleted` on Stripe, or the equivalent subscription events on Paddle and Lemon Squeezy).

### 3. Check it on the server, not the client

A minimal pattern (ours):

```javascript
// Apps Script: runs from a sidebar button the user clicked
function runPaidExport() {
  const email = Session.getActiveUser().getEmail();
  const res = UrlFetchApp.fetch('https://api.example.com/v1/export', {
    method: 'post',
    contentType: 'application/json',
    headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
    payload: JSON.stringify({ email: email, sheetId: SpreadsheetApp.getActive().getId() }),
    muteHttpExceptions: true
  });
  if (res.getResponseCode() === 402) {
    return { upgrade: true, url: 'https://example.com/pricing?email=' + encodeURIComponent(email) };
  }
  return JSON.parse(res.getContentText());
}
```

Your server verifies the OAuth token with Google to confirm whose email it is, checks the plan, counts usage, and only then does the paid work. If the valuable step happens on your backend, nobody can flip a flag to get it.

### 4. Watch the quotas

Every server check is a `UrlFetchApp` call, limited to "20,000 / day" for consumer accounts and "100,000 / day" for Google Workspace accounts, with "6 min / execution" script runtime ([Apps Script quotas](https://developers.google.com/apps-script/guides/services/quotas)). "Quotas are per user", says Google. Our read: one check per paid action is fine; one per cell edit is not, so cache the plan for a few minutes.

### 5. Licence keys, if you need them

If buyers pay on a separate site with a different email (common with company cards), add a "Have a licence key?" field in the sidebar. Generate a random key in your webhook handler and email it to the buyer. On activation, your server binds the key to the user's Google email, or to the email domain for a domain-wide licence.

## Decision table

Our editorial advice, based on the facts above.

| Your situation | Our pick |
|---|---|
| Add-on calls an AI API or your server per action | Freemium with a monthly usage cap, paid per user |
| Add-on is pure Apps Script, no backend cost | Free plus a paid tier, or a one-off licence |
| Buyers are mostly gmail.com users | Low price, annual billing |
| Buyers are Workspace teams | Per-user monthly, plus a domain plan by invoice |
| You need a restricted scope | Redesign the scope first, or price in the assessment |
| You do not want to handle VAT | Paddle or Lemon Squeezy |

## Worked example (illustrative)

Our numbers, not anyone's real results. Say your Sheets add-on has 2,000 active installs. Vance Lucas reported "my free to paid conversion rate was 4%" for BudgetSheet ([Vance Lucas](https://vancelucas.com/blog/how-i-built-a-google-sheets-extension-making-1-6k-mrr/)); assume you get half that, 2%, which is 40 paying users at $8 a month.

- Gross: 40 x $8 = $320 a month.
- On Paddle at 5% + 50¢ per transaction: each $8 charge costs $0.40 + $0.50 = $0.90, so you keep $7.10, or $284 a month.
- On Stripe US at 2.9% + 30¢: each charge costs about $0.23 + $0.30 = $0.53, so you keep about $7.47, or about $299 a month before you deal with sales tax yourself.
- Switch to annual at $79: one Paddle charge costs about $3.95 + $0.50 = $4.45, so the flat fee matters far less. Our read: push annual billing on low-price add-ons, because the 50¢ flat fee hurts most on small monthly charges.

## Mistakes to avoid

- **Labelling the listing "Free of charge"** when it has a paywall.
- **Requesting broad Drive or Gmail scopes** for one feature, then discovering the security assessment.
- **Gating custom functions by email,** which Google says is not available there.
- **Trusting a client flag** or user property as proof of payment.
- **Forgetting cancellation webhooks,** so churned users keep Pro forever.

## Launch checklist

1. Audit scopes and drop anything restricted you can live without.
2. Pass OAuth verification and Marketplace review.
3. Set the Pricing field to match your model and link your pricing page.
4. Build the server entitlement table, webhook handlers and licence key field.
5. Cache plan checks to stay inside quotas.
6. Run through our [product launch checklist for bootstrapped makers](https://zeroraised.com/blog/product-launch-checklist-for-bootstrapped-makers) before you announce it.

## Frequently asked questions

### Does Google Workspace Marketplace handle payments for add-ons?

We found no Google documentation saying it does. The listing has a Pricing field (Free of charge, Free of charge trial, Free of charge with paid features, Paid), but payment itself happens on your own checkout, such as Stripe, Paddle or Lemon Squeezy.

### Is there a fee to publish a Google Workspace add-on?

We found no Marketplace publishing fee in Google's developer docs. Google's SDK setup page says that if you create a Google Cloud project you might need to turn on billing for the project. The larger cost is a security assessment if your add-on uses restricted scopes.

### Do I need a CASA security assessment?

Only if your add-on requests restricted scopes. Google says apps with verified restricted scopes must be reverified and complete a security assessment at least every 12 months. Most Sheets, Docs and Gmail add-ons can avoid it by using narrower scopes such as the current document only.

### How do I know which user has paid?

Use `Session.getActiveUser().getEmail()` in a context the user has authorised, such as a sidebar or menu action, and look that email up on your server. Google's docs warn the email can be blank in simple triggers, custom functions and web apps that run as the developer, so do not gate those paths on email.

### Should I use Stripe or a merchant of record like Paddle?

Stripe US charges 2.9% + 30¢ per domestic card charge but leaves sales tax and VAT to you. Paddle and Lemon Squeezy charge 5% + 50¢ per transaction and act as merchant of record. Add-ons sell worldwide from day one, so a merchant of record is the simpler start for most solo developers.

## Launch your add-on

ZeroRaised is a launch directory for products built without institutional VC. Once your add-on is live on the Marketplace, [submit it to ZeroRaised](https://zeroraised.com/submit) for free. For more guides on making money from small software without investors, [join the ZeroRaised newsletter](https://zeroraised.com/newsletter).

## Sources

- [Google Workspace Marketplace: publish an app](https://developers.google.com/workspace/marketplace/how-to-publish), last checked 10 Nov 2026
- [Google Workspace Marketplace: about app review](https://developers.google.com/workspace/marketplace/about-app-review), last checked 10 Nov 2026
- [Google Workspace Marketplace: create a store listing](https://developers.google.com/workspace/marketplace/create-listing), last checked 10 Nov 2026
- [Google Workspace Marketplace: enable and configure the SDK](https://developers.google.com/workspace/marketplace/enable-configure-sdk), last checked 10 Nov 2026
- [Google Workspace Marketplace terms](https://developers.google.com/workspace/marketplace/terms), last checked 10 Nov 2026
- [Google Cloud help: OAuth app verification](https://support.google.com/cloud/answer/13464321), last checked 10 Nov 2026
- [Google: restricted scope verification](https://developers.google.com/identity/protocols/oauth2/production-readiness/restricted-scope-verification), last checked 10 Nov 2026
- [Apps Script quotas](https://developers.google.com/apps-script/guides/services/quotas), last checked 10 Nov 2026
- [Apps Script Session reference](https://developers.google.com/apps-script/reference/base/session), last checked 10 Nov 2026
- [Apps Script Properties guide](https://developers.google.com/apps-script/guides/properties), last checked 10 Nov 2026
- [Vance Lucas: How I Built a Google Sheets Extension Making $1.6k+ MRR](https://vancelucas.com/blog/how-i-built-a-google-sheets-extension-making-1-6k-mrr/), last checked 10 Nov 2026
- [BudgetSheet](https://budgetsheet.com/), last checked 10 Nov 2026
- [Mailmeteor pricing](https://mailmeteor.com/pricing), last checked 10 Nov 2026
- [YAMM pricing](https://yamm.com/pricing), last checked 10 Nov 2026
- [Coupler.io pricing](https://www.coupler.io/pricing), last checked 10 Nov 2026
- [Stripe US pricing](https://stripe.com/us/pricing), last checked 10 Nov 2026
- [Paddle pricing](https://www.paddle.com/pricing), last checked 10 Nov 2026
- [Lemon Squeezy pricing](https://www.lemonsqueezy.com/pricing), last checked 10 Nov 2026
- [Gumroad pricing](https://gumroad.com/pricing), last checked 10 Nov 2026
- [Lemon Squeezy: sales tax and VAT](https://docs.lemonsqueezy.com/help/payments/sales-tax-vat), last checked 10 Nov 2026
- [Paddle: Gumroad comparison](https://www.paddle.com/compare/gumroad), last checked 10 Nov 2026

## Frequently asked questions

### Does Google Workspace Marketplace handle payments for add-ons?

We found no Google documentation saying it does. The listing has a Pricing field (Free of charge, Free of charge trial, Free of charge with paid features, Paid), but payment itself happens on your own checkout, such as Stripe, Paddle or Lemon Squeezy.

### Is there a fee to publish a Google Workspace add-on?

We found no Marketplace publishing fee in Google's developer docs. Google's SDK setup page says that if you create a Google Cloud project you might need to turn on billing for the project. The larger cost is a security assessment if your add-on uses restricted scopes.

### Do I need a CASA security assessment?

Only if your add-on requests restricted scopes. Google says apps with verified restricted scopes must be reverified and complete a security assessment at least every 12 months. Most Sheets, Docs and Gmail add-ons can avoid it by using narrower scopes such as the current document only.

### How do I know which user has paid?

Use Session.getActiveUser().getEmail() in a context the user has authorised, such as a sidebar or menu action, and look that email up on your server. Google's docs warn the email can be blank in simple triggers, custom functions and web apps that run as the developer, so do not gate those paths on email.

### Should I use Stripe or a merchant of record like Paddle?

Stripe US charges 2.9% + 30¢ per domestic card charge but leaves sales tax and VAT to you. Paddle and Lemon Squeezy charge 5% + 50¢ per transaction and act as merchant of record. Add-ons sell worldwide from day one, so a merchant of record is the simpler start for most solo developers.


