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

Google Workspace Marketplace lists your add-on and lets you label it Paid or Free with paid features, but we found no sign that it processes payments. You bring your own checkout (Stripe, Paddle, Lemon Squeezy), identify the user by their Google email, and keep the entitlement on your own server. Freemium with a usage cap is the model used by the add-ons we checked, such as Mailmeteor and YAMM.

Editorial title card reading "How to Monetize a Google Workspace Add-on (Sheets, Docs, Gmail)" beside the orange ZeroRaised mark.

Key takeaways

  • 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. We found no Google documentation saying the Marketplace takes payments for you.
  • Public apps need Marketplace review, which Google says typically takes several days, and OAuth verification. Restricted scopes add a security assessment at least every 12 months, and that verification can take several weeks.
  • Freemium with a usage cap is the common model: Mailmeteor's free plan allows 50 emails a day and paid plans start at $5.99 per user per month; YAMM's free plan allows 20 recipients a day.
  • Vance Lucas wrote that his Google Sheets add-on BudgetSheet was making $1.6k MRR, with a 4% free to paid conversion rate, when the free tier allowed one connected account.
  • Never trust a flag inside Apps Script. Identify the user by email, look up their plan on your own server, and update it from Stripe or Paddle webhooks.
On this page 23
  1. TL;DR
  2. What Google does and does not do for you
  3. The hidden cost: OAuth scopes and the security assessment
  4. Pricing models that work for add-ons
  5. Choosing a payment tool
  6. The technical side: entitlements you can trust
  7. 1. Identify the user
  8. 2. Store the plan on your server
  9. 3. Check it on the server, not the client
  10. 4. Watch the quotas
  11. 5. Licence keys, if you need them
  12. Decision table
  13. Worked example (illustrative)
  14. Mistakes to avoid
  15. Launch checklist
  16. Frequently asked questions
  17. Does Google Workspace Marketplace handle payments for add-ons?
  18. Is there a fee to publish a Google Workspace add-on?
  19. Do I need a CASA security assessment?
  20. How do I know which user has paid?
  21. Should I use Stripe or a merchant of record like Paddle?
  22. Launch your add-on
  23. Sources

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). 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), and "App review typically takes several days" (Google: app review).
  • Avoid restricted scopes if you can. They trigger a security assessment "at least every 12 months" (Google: 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).
  • 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, 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). 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).
  • Distribution. Vance Lucas put it plainly: "Google has over 3 billion users and provides a built-in marketplace and distribution channel" (Vance Lucas).

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). 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; 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). 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). 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).

Pricing models that work for add-ons#

ModelHow it worksReal example (own pages, 10 Nov 2026)Best for
Freemium with a usage capFree up to N actions per day or month, paid lifts the capMailmeteor: free 50 emails a day, Starter $5.99 per user per month at 250 a day (pricing)Tools where usage maps to value: mail merge, exports, AI calls
Freemium with a feature capFree for one account, source or sheetBudgetSheet's early free version "allowed users to connect 1 account" (Vance Lucas)Data connectors and sync tools
Free trial then subscriptionTime-limited full accessBudgetSheet today: 15-day free trial, paid from $6/month or $59/year (BudgetSheet)Tools with obvious value in the first week
Per-user subscription, priced by account typeHigher price for Workspace accountsYAMM: 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)Tools whose limits differ by account type
Tiered by connectionsPrice by data sources and refreshCoupler.io: free plan with manual refresh, Starter $32/month or $24/month billed annually (Coupler.io)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:

ToolFeeMerchant of record?
Stripe (US)2.9% + 30¢ per successful domestic card charge (Stripe US pricing)No, sales tax and VAT are on you
Paddle5% + 50¢ "per Checkout transaction" (Paddle)Yes (Paddle vs Gumroad)
Lemon Squeezy5% + 50¢ per transaction; "Transactions made outside of the US may encounter small additional fees" (Lemon Squeezy)Yes (Lemon Squeezy tax docs)
Gumroad10% + $0.50 on direct sales, 30% via its Discover marketplace (Gumroad)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. 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). 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), 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):

// 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). "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 situationOur pick
Add-on calls an AI API or your server per actionFreemium with a monthly usage cap, paid per user
Add-on is pure Apps Script, no backend costFree plus a paid tier, or a one-off licence
Buyers are mostly gmail.com usersLow price, annual billing
Buyers are Workspace teamsPer-user monthly, plus a domain plan by invoice
You need a restricted scopeRedesign the scope first, or price in the assessment
You do not want to handle VATPaddle 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); 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 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 for free. For more guides on making money from small software without investors, join the ZeroRaised newsletter.

Sources#

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.