Buy button on Apps (Pages) or workaround

Hi there,

Does anyone knows if the “Buy button” available on Classic Apps will be soon implemented on Apps ?
Waiting this, I’m trying to make a link with Make and Stripe, but I have to build products on Stripe, which don’t allow me to have a “dynamic” basket to cutsomize the amout to pay …

Anyone working on that kind of stuff ?


Watch this tutorial by @Robert_Petitto

Uzo has a solution!

1 Like

… and this is new!
New Stripe checkout for Apps (Pages), with simplified options, no cart, no stack adjustment:

Stripe DEMO single

Single Stripe payment integration


@Uzo Great app, suggest you add the Stripe email pre-fill parameter for vlookup in the tracking sheet.

Thanks but that’s the old app “Classic” which I know is working :wink:

Robert’s method does not use the built-in buy button functionality, so it should work regardless if it’s a Classic App or a New App.

Payhere charges 2% on top of Stripes fee!

1 Like

Here’s an extensive response since other folks have raised the same questions.

There are three workarounds I can think of, each with its own set of compromises.

  1. Stripe payment links

You don’t need PayHere to create payment links for you. Stripe has this function now out of the box. And you can pass URL parameters as part of the payment link URL - most importantly, “client_reference_id”. This is how you can link a purchase to the row identifier of the user who made the purchase and write the data back to Glide using Make.

The drawback is that if your app is based on Glide tables, you’ll need to pass Row ID as a client_reference_id when your users click the “buy” button and are sent to the Stripe payment link URL. The problem with using Glide’s Row ID is that it often includes special characters - square brackets ([ or ]), or dots (.). Stripe doesn’t accept those as client_reference_id.

The solution is to maintain a mapping/bridge table for your users - for example, in your Make Data Store. In this table, you must link a Row ID in Glide with a record ID in Make. Using this mapping table, you can trigger Stripe’s payment links using the Make record ID as the client_reference_id, look up the Glide Row ID, and write the data back to Glide tables (to your users’ table).

If your backend is Airtable or Google Sheets, you’ll lose the buttery UX of everything syncing and updating in near-real-time (unless you’re using a Google script), but you can pass any other field - like an email address - as the Stripe’s client_reference_id and that’s it.

  1. Thrivecart
    Thrivecart is a 3rd-party checkout software that is something like PayHere but it doesn’t take any commission on your revenue (it doesn’t process your payments either - it’s a gateway to Stripe and PayPal). The beauty of Thrivecart is that it, too, takes URL parameters, and it doesn’t seem to care about special characters in the URL string. The drawbacks of Thrivecart are: (1) it comes with a hefty one-time price (it paid itself back for me many times over, but it’s definitely. not for everyone) and (2) its customer hub does not (yet) allow customers to change subscription tiers (Stripe’s customer hub DOES allow for upgrades/downgrades). This should not concern you if you’re selling products for one-time payments.

  2. Stripe invoices or checkout sessions
    You can construct a chain of actions in Glide that will trigger a Make workflow that generates a Stripe Invoice or a CheckOut Session. Both - invoice or a checkout session - come with a Stripe-hosted URL.

Here’s a demo from one of the apps I’m building:

The problem, as you would have heard in the Loom vid, is that Glide will try to open a pop-up with the checkout session URL. And while it works well in Desktop browsers (without fancy pop-up blockers), if your users are on mobile Safari, they won’t see the checkout page. Safari on iOS, from what I can tell, has a super strong pop-up blocker that comes enabled by default.

I’ve raised this with Glide support, and their tech team has this issue in their backlog. No ETA on the fix.

Happy to help if you need something more in-depth. Feel free to DM.



Yes, you can have real-time sync from Google Script :wink:
Your payment confirmation is almost instant.


Edited my response to reflect the truth :slight_smile:


Here’s a demo of the all Google Script alternative!

By the way - how does Google Script help sync data between GSheets and Glide? When I mentioned delays with syncing, I was referring to the time it takes for changes in data in GSheets to reflect in Glide (it’s unpredictable). Do Google Scripts fix this?

By fetch JSON… do not count on Glide refresh :wink:

1 Like

@Evgeny_B what about using the Glide Web Embed component?

An alternate solution for real-time data in Glide while using Sheets is pushing the data to the user via the Glide Tables API (which is available even while using Sheets)

1 Like

If you’re on a plan that includes the API - this could work!

1 Like