Selling an add on through G Suite Marketplace

1,889 views
Skip to first unread message

Belisario Peró

unread,
Jun 19, 2020, 7:34:08 AM6/19/20
to google-apps-sc...@googlegroups.com
Hi!
I'm developing an add on for Google Sheets and it will be published to G Suite Marketplace.
I have read G Suite Marketplace Developer Agreement and found that refers to the posibility of selling through the Marketplace:

In order to charge a fee for your Products using the Market payment processing services, you must have a valid Payment Account under a separate agreement with a Payment Processor.

I also read this post "Is it possible to create an add-on to sheets to sell" but I can't get clarity if it's possible to sell through G Suite Marketplace or this must be done outside the markeplace.

These are my doubts:
  1. Does anyone knows if it's possible to sell through the Marketplace?
  2. If it's possible, can you please share some link to documentation?
  3. If it's not possible, ca you please share an addon link which has embedded the payment process?
Regards!



Alan Wells

unread,
Jun 19, 2020, 8:25:19 AM6/19/20
to Google Apps Script Community
There are many developers who charge a fee or subscription for their add-on, but they have developed their own payment system.  There is no "built-in" payment system in the GSuite Marketplace that I know of.  I think that the Chrome Web Store might have a built-in payment system, but that's different.  You can't use the Chrome Web Store for an add-on.
There is no documentation that I know of to build your own payment system.  There are pieces of information about payment systems, but I don't know of any comprehensive information about creating a complete payment system.
A book could probably be written on this subject, so there is no simple, easy explanation.
The vast majority of developers probably use PayPal, but many use Stripe.
You could spend weeks (months?) developing and tweaking your payment system.

Belisario Peró

unread,
Jun 19, 2020, 8:43:57 AM6/19/20
to Google Apps Script Community
Thanks for you reply, is very helpful!

If the addon will charge user for some of it's functionality, imagine 3 features of the addon free and other 5 features paid, that logic will be inside app script and will consume some data from outside which will have the users subscriptions to paid addon features so can be used by the user, right?

Regards

Stefano

unread,
Jun 19, 2020, 9:19:20 AM6/19/20
to Google Apps Script Community
 I asked myself the same question, so I think some solutions could be: insert a key to some function (and sell it),insert code adsense in html, link to donations.....and I don't know, have you got any other idea? :)

Alan Wells

unread,
Jun 19, 2020, 9:46:08 AM6/19/20
to Google Apps Script Community
What you want to do is possible.
There are infinite possibilities to how you could structure the logic of your program flow.
Of course, there are only a few good possibilities for how to do it correctly.
Yes, you need something external to your add-on to store customer payment status information.
You can access that database either through your "gs" server code, or from client side code,
like with a Firebase database.
I'd recommend a Firebase database for your customer information, unless your add-on already
needs to use UrlFetchApp.fetch(url) and requires the user to authorize an external request.
Although, do that can cause problems getting your add-on approved if you need access to the users
Drive or their Email.
How you separate out or integrate the code for paid customers and free customers or different payment levels,
is probably something where you'll be mostly "on your own"
unless you have a specific question about a specific line of code.
I mean, if you wanted to pay someone to help you, that's a different story.
(I'm not looking for work.)

Alan Wells

unread,
Jun 19, 2020, 9:52:47 AM6/19/20
to Google Apps Script Community
Using a license key is a great idea if you want a simple system, that is not integrated directly into your app. (add-on)
It obviously requires less automation and more work for the user.
But, for most people that probably won't be a deterrent if they want to use you add-on.

For donations, you don't need any direct connection to your add-on.
You could take donations at your website, totally separate from the add-on.

I've never done anything with adsence, I don't know how that works.

Belisario Peró

unread,
Jun 19, 2020, 10:13:32 AM6/19/20
to Google Apps Script Community
Thanks man! Very clear you reply.
You made me laugh with you "im not looking for work"

So it's clear that subscription, payments, etc must be done otuside, that's what I was looking to understand.

The firebase approach, do you know if will create a new scope in project to be approved?

Thanks again!

Belisario Peró

unread,
Jun 19, 2020, 10:15:07 AM6/19/20
to Google Apps Script Community
I believe that firebase approach which was shared by Alan can be a good workaround.

Perhaps somebody else can share another high level approach, if you find something, please share it,

Alan Wells

unread,
Jun 19, 2020, 10:40:01 AM6/19/20
to Google Apps Script Community
If your add-on has any UI at all, sidebar, dialog box, then the user needs to approve a permission (scope) for:


That scope will cover calls to your Firebase database from the client side code.
You'll need to use the Firebase SDK which runs in your html script tag.
Of course, you can't make a call to the Firebase database from your server side code
from the client side Firebase SDK.

So, you'll need to save some kind of setting to User Properties.  You wouldn't want to use Script Properties or
document properties.

Belisario Peró

unread,
Jun 19, 2020, 11:33:30 AM6/19/20
to Google Apps Script Community
Thanks Alan, always very clear!

Craig Pearce

unread,
Jun 19, 2020, 12:46:10 PM6/19/20
to Google Apps Script Community
I can share my workaround for this.
I use Stripe on my website to sign up users (I use a nice wordpress plugin for that).

Then when the user tries to use the add-on I just check Stripe to see if they have an active subscription.  I wrote the below code to do this.  Feel free to use it.  As mentioned above, this uses an external request so you have to enable that scope (and the user would have to agree to this), however, I use external requests already, so that scope was already enabled.  Also, it assumes the user signs up with the same email address they use to access the add-on, which could cause issues.

PM if you want to discuss more.


function checkSub() {
 
 
 
//THIS IS LIVE STRIPE KEY
 
var secretKey = "your live key here";
 
 
//gets the current users email address
 
var userEmail = Session.getActiveUser().getEmail();
 
 
var options = {};
  options
.headers = {Authorization: 'Bearer ' + secretKey}
 
 
var response = UrlFetchApp.fetch('https://api.stripe.com/v1/customers?email=' + userEmail, options);
 
var jsonObject = JSON.parse(response.getContentText());
 
 
 
if (jsonObject["data"] == "" ){
   
//Stripe has no record of that customer
   
return false;
 
} else {
   
//Stripe has returned a customer, now check if they have an active subscription
   
//totalSub is 0 if they have no active subscription, is 1 if they have an active subscription
   
var totalSub = jsonObject["data"][0]["subscriptions"]["total_count"]
   
   
if (totalSub > 0) {
     
Logger.log("user has a subscription");
     
return true;
     
//continue with actions
   
} else {
     
Logger.log("user does not have a subscription");
     
return false;
   
}
 
}
}

Belisario Peró

unread,
Jun 19, 2020, 1:01:52 PM6/19/20
to Google Apps Script Community
Great help Craig, thanks a lot!

This code can help other and me on what we are trying to achieve!!

Thanks again!

Andrew Apell

unread,
Jun 21, 2020, 8:10:16 AM6/21/20
to Google Apps Script Community
I went through this a few months ago. This post by Romain got me started.


It uses PayPal, not Stripe but, as I quickly found out, PayPal is quite robust.

Belisario Peró

unread,
Jun 22, 2020, 2:19:51 PM6/22/20
to Google Apps Script Community
Thanks Andrew, this info is very helpful!

Regards

Ed Bacher

unread,
Jun 23, 2020, 1:12:57 PM6/23/20
to Google Apps Script Community
Has anyone experimented with adding a "Buy me a coffee" link for donations? 

I have a free, open-source add-on that is popular. I'd like it to remain free, but solicit donations to charity.

I may eventually explore some of the suggestions here to charge for more usage or advanced functionality -- thanks for all the information!

Andrew Apell

unread,
Jun 23, 2020, 1:26:25 PM6/23/20
to Google Apps Script Community
I tried it; it didn't work at all. In a year (or 2?) I made about 7$.
During that time, I had thousands of people using the app on a daily basis.

I'm not going to discourage you from trying it out, but I will not be returning to that model any time soon.
Maybe it was down to execution... who knows?

One remarkably better option is: Keep what you currently have free and then charge of extra features you might develop in the future.

Alan Wells

unread,
Jun 23, 2020, 1:33:21 PM6/23/20
to Google Apps Script Community
Different add-ons (apps) can have very different success with donations.
It's depends on your users.
The only way to find out is to try it.
If your users are underpaid teachers, that is a very different user group than small
business owners who would need to pay lots of money for
a comparable service, but are getting it for free.

But, basic human nature is to not pay for anything if you can get it for free.
The business model that is very prevalent, is to provide a free service, but
to mine data.  So, we have a culture where people expect things for free,
knowing that the cost is that their data is being collected.
If you know anyone other than God who can change human nature,
please get me in touch with them immediately.

Craig Pearce

unread,
Jun 23, 2020, 1:41:47 PM6/23/20
to google-apps-sc...@googlegroups.com
Another model is that employed by Power Tools (https://gsuite.google.com/marketplace/app/power_tools/1058867473888).  It used to be totally free but they switched to a model where you can use the add-on once per day, after that you have to be a subscriber.  It still allows users to use the add-on and discover the features but restricts free heavy users.
I used it a TON while cleaning data a number of years ago.  This was before the pay for use model but it would have been worth it to pay for it.  It's a great add-on.

Craig

--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-apps-script-community/09f7f086-0e2f-4baa-9a27-d4af145cb336o%40googlegroups.com.

Andrew Apell

unread,
Jun 23, 2020, 1:48:32 PM6/23/20
to Google Apps Script Community
I like this model... I'm actually finishing a procedure that does much the same.
My philosophy is that the free version should be for testing not using...
Previously, I had failed to find a satisfactory way of implementing the daily quota but I think I have finally got it.

On the surface, it looks like a winning formula all round

Kim Nilsson

unread,
Jun 24, 2020, 12:13:24 PM6/24/20
to Google Apps Script Community
Hey, Craig!

I see no reference of the once-per-day model you mention for Power Tools.
Only their 30 day trial.

Craig Pearce

unread,
Jun 24, 2020, 12:32:08 PM6/24/20
to google-apps-sc...@googlegroups.com
I've had it installed for quite a while, so perhaps I have a different version?



image.png

--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.

Gitesh Kohli

unread,
Jun 24, 2020, 1:12:55 PM6/24/20
to google-apps-sc...@googlegroups.com
One very basic method we are using is tokens.
Since the we wanted to keep everything in our code, we with token with their own attributes.
And then every functions works only on token. One pretty straight forward way, one can build multiple token types for differant users with differant rights to the same piece of code. We are looking at integrating with gPay and paypal...Will keep you posted.

Kim Nilsson

unread,
Jun 24, 2020, 1:15:28 PM6/24/20
to Google Apps Script Community
Ah, cool!
I'll check that out next time I have the need for such a special function, and don't know how to code it myself. :-)

Gitesh Kohli

unread,
Jun 24, 2020, 1:18:03 PM6/24/20
to google-apps-sc...@googlegroups.com
if you can wait we have all intentions to release it here first, before our users as our contribution to the community.

--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.

Andrew Apell

unread,
Jun 24, 2020, 1:18:20 PM6/24/20
to Google Apps Script Community
What tokens?
How does your process look?

Gitesh Kohli

unread,
Jun 24, 2020, 1:22:42 PM6/24/20
to google-apps-sc...@googlegroups.com
The way bank works. Every function is a service worker, which works on the basis of token issued to it. Token consists of all the info for any service worker to process any action [ within rights] on any entity. We log every consumed Token, via state management.
For our alpha users, we are planning to connect the number of token to the total number of users of our product in real time...You can call it a marketing gimmick. I hope it works.
Ciao,
Gitesh aka bronzwik 
found in&around
jungle Studio | shunya.ek
today's thought : "Iife is a sales pitch"


Ed Bacher

unread,
Jun 27, 2020, 8:07:28 PM6/27/20
to Google Apps Script Community
Thanks so much for all the useful suggestions!

As an experiment, I've added a Coffee? button to my add-on, which links to my Buy Me a Coffee page. I'll let you know what happens.

If I eventually look to commercialize this or other add-ons, there's lots of good information on this thread.

Ed Bacher

unread,
Jun 27, 2020, 8:09:20 PM6/27/20
to Google Apps Script Community
Thanks so much for all the useful suggestions!

As an experiment, I've added a Coffee? button to my add-on, which links to my Buy Me a Coffee page. I'll let you know what happens.

If I eventually look to commercialize this or other add-ons, there's lots of good information on this thread.



On Tuesday, June 23, 2020 at 10:48:32 AM UTC-7, Andrew Apell wrote:

Robert Wigmore

unread,
Apr 5, 2023, 7:51:25 PM4/5/23
to Google Apps Script Community
Craig has this method stood up over time? Also how are you handling subscription management? I know stripe now have payment links and customer portal links to make it a bit easier. 
Message has been deleted

Brett Kelly

unread,
Apr 16, 2023, 7:48:37 AM4/16/23
to Google Apps Script Community
Thanks @Nerio, 

The links you posted appear dead. Can you please repost??

Many Thanks!

On Tuesday, April 11, 2023 at 4:20:02 AM UTC-4 Nerio Villalobos wrote:
Yes, it is possible to sell your add-on through the G Suite Marketplace. You can find more information about this on the Google Developers website:

https://developers.google.com/gsuite/marketplace/sell

To sell your add-on, you will need to have a valid Payment Account with a Payment Processor, as mentioned in the Developer Agreement. Google provides support for various Payment Processors including Stripe, Braintree, and PayPal.

Once you have set up your Payment Account, you can then configure your add-on to use the Google Marketplace Licensing API and integrate with the Google Marketplace Payments API to handle the sale and licensing of your add-on.

You can find more information on how to integrate these APIs into your add-on on the Google Developers website:

https://developers.google.com/gsuite/marketplace/integrate

Additionally, you may want to consider using the Google Workspace Developer Console to manage your add-on and its listing on the G Suite Marketplace:

https://developers.google.com/gsuite/marketplace/manage-your-apps

I hope this helps!

El vie, 19 jun 2020 a la(s) 08:34, Belisario Peró (belisar...@kwargentina.com) escribió:
Hi!
I'm developing an add on for Google Sheets and it will be published to G Suite Marketplace.
I have read G Suite Marketplace Developer Agreement and found that refers to the posibility of selling through the Marketplace:

In order to charge a fee for your Products using the Market payment processing services, you must have a valid Payment Account under a separate agreement with a Payment Processor.

I also read this post "Is it possible to create an add-on to sheets to sell" but I can't get clarity if it's possible to sell through G Suite Marketplace or this must be done outside the markeplace.

These are my doubts:
  1. Does anyone knows if it's possible to sell through the Marketplace?
  2. If it's possible, can you please share some link to documentation?
  3. If it's not possible, ca you please share an addon link which has embedded the payment process?
Regards!



--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.


--
__________________________
Nerio Enrique Villalobos Morillo
Buenos Aires, Argentina

Nerio Villalobos

unread,
Apr 16, 2023, 11:59:46 PM4/16/23
to google-apps-sc...@googlegroups.com
Yes indeed now they changed it to this: https://cloud.google.com/marketplace/docs/partners?hl=es-419

There you will find everything related to google marketplace

Sorry for the inconvenience, I had old data from old projects

John McGowan

unread,
Apr 17, 2023, 6:46:44 AM4/17/23
to Google Apps Script Community
@Brett,
None of that posted above by ner...@gmail.com is correct. It is generated by ChatGPT as shown in other posts where it hallucinates and creates non-existent methods and information.
Currently you can sell a license to a published Addon but you need to create the licensing and payment system all on your own. You cannot charge the user to install it (against the T&C of the Google Marketplace), but you can license the users once they have installed it to give them functionality with a license. One way to consider starting would be using Stripe payment links (you can create a link with a pre-filled email to share to the user to buy a license) and then you will need to use either the Properties Service to store the license information or another backend database. I use Firebase for that (so they pay with Stripe and then I have the licensed email recorded in Firebase and when they open the Addon, I see if they are licensed and give the user the licensed features).
Here is a blog post where I show an example of how to restrict the number of times a feature can be used: https://automagicalapps.com/blog/restricting-the-number-of-times-to-use-a-feature-in-a-google-addon-sidebar
Good luck with selling your Addon!

Kim Nilsson

unread,
Apr 17, 2023, 7:32:13 AM4/17/23
to google-apps-sc...@googlegroups.com
This is starting to get annoying, people responding to others' questions with AI generated texts in forums all over the place.

If the requester wanted such a response, they would use Bing or any of the other garbage methods.

I'm hoping that moderators will be unforgiving when such content is reported. 😡

--
Kim Nilsson, IKT-pedagog
Lomma Kommun, Serviceenheten
281 34 Lomma
0733-41 15 20
kim.n...@edu.lomma.se

Romain Vialard

unread,
Apr 17, 2023, 9:15:19 AM4/17/23
to Google Apps Script Community
haha, ok I'm blocking him :)
Reply all
Reply to author
Forward
Message has been deleted
0 new messages