Jump to content

Recommended Posts

Posted

Hey folks, fun fact: this module was already featured in this week’s ProcessWire Weekly – even before we managed to post it here in the forum. So, here we are, finally giving it a proper introduction! 😅


TL;DR:

This module connects Stripe Payment Links with ProcessWire and provides a simple checkout integration for sites that don’t need a full shop. 🎯

Drop a Stripe buy button anywhere

Redirect back to PW thank-you or delivery pages

Buyers get accounts, purchases are logged, access is granted

Access mails are sent automatically

✴️ New in v 1.0.7: Sync existing purchases and buyers from Stripe to PW with test/write option


First things first: What are Stripe Payment Links?

Stripe Payment Links are basically hosted checkout pages that you can create directly in the Stripe Dashboard – no coding required.

  • You define a product (or multiple line items) in Stripe.

  • Stripe gives you a unique URL (the “Payment Link”).

  • You can drop this URL behind any button, on any landing page, newsletter, or social media bio.

When a customer clicks the link, they’re taken to a secure Stripe Checkout page (PCI compliant, supports all major payment methods, Apple Pay, etc.). After payment, Stripe redirects them back to your success URL.

Super simple. But… on its own, Stripe has no idea about your ProcessWire site, your users, or your gated content. That’s where this module jumps in. 🚀
 


Why another payment module?

We at frameless Media often work on small client projects where setting up a full e-commerce shop would be complete overkill. Think:

  • Coaches selling a few courses or workshops

  • Businesses offering a handful of digital products or subscriptions

  • Creators who just need a buy button on a landing page

Stripe Payment Links are perfect for this. But: ProcessWire on its own doesn’t handle redirects, user handling, or gated delivery pages.

So we built StripePaymentLinks – a lightweight drop-in module to connect Stripe with PW.
 


What it does

  • Handles the redirect back from Stripe Checkout that contains the session id

  • Creates or updates the buyer’s user account

  • Records purchases in a repeater field

  • Manages access to “delivery pages” (only available after purchase)

  • Auto-sends access mails (configurable: never / new users only / always)

  • Provides Bootstrap-based modals for login, password reset, set-password


Usage examples

Example 1: Sales page + delivery page

Sales page has a “Buy now” button (Stripe Payment Link). After checkout, the user is redirected to the delivery page, which is access-protected.

→ Module logs them in, grants access, and if they’re new: a set-password modal pops up.

→ An access mail with product links is sent.
 

Example 2: Product without a delivery page

Some products don’t need protected pages (e.g. a consulting slot or voucher).

→ The success redirect goes to a generic thank-you page.

→ The module shows an access summary block with purchased products and sends the mail.
 

Example 3: Mixed purchase (thank-you + delivery page)

A checkout with multiple items: e.g. a “simple product” plus an addon that has its own delivery page.

→ Thank-you page shows the addon link(s).

→ The access mail lists all purchased products.
 


Source & License

The module is open-source under the MIT License.

👉 GitHub: https://github.com/frameless-at/StripePaymentLinks

👉 ProcessWire modules directory: https://processwire.com/modules/stripe-payment-links/



So yes: if you or your clients just need a few low-barrier buy buttons, not a full-blown webshop, this might be the module you’ve been looking for. If needed we can provide some screenshots and visual examples next week 😉

Happy to hear your thoughts, ideas, and testing feedback!

Cheers, Mike

  • Like 9
  • Thanks 3
Posted

Because this question came up: No, the user does not have to enter any data before checkout. All user data is pulled via Stripes PHP SDK (included with the module). Therefore the only thing needed for the module to work is that the redirect link configured in Stripe contains the session_id param. You configure this directly in the Stripe backend by simply adding 

?session_id={CHECKOUT_SESSION_ID}

to your desired redirect-URL:

image.thumb.png.4f7f14dee508fcdaeea647bdaf3744d1.png

Thats all. With this session id  the module has access to all data of this specific purchase. 

Cheers, Mike

  • Like 2
Posted

With new version 1.0.4 it is possible now to set multiple Stripe API Keys in the modules config. This is especially useful for testing. 

Unfortunatly the module still has the "pending" status, so you will not be able to upgrade via the backend. See: 

 

  • Like 1
Posted

In case you are using this module and want to sync customers/purchases to Mailchimp – we just released an add-on for this module:

 

  • Like 1
  • Thanks 1
Posted

New feature in StripePaymentLinks (v 1.0.7) 🎉

Hi, everyone! We’ve just added a sync helper to the modules config screen that can pull past Stripe Checkout Sessions into ProcessWire.

Super handy if you want to…

  • backfill older purchases

  • migrate existing users

  • or just double-check what’s in Stripe vs. what’s in PW

Bildschirmfoto2025-09-29um21_38_03.thumb.png.918d2f7a2014cc6320502f2ceff51869.png

How it works:

  • Scans Stripe sessions (with date range + email filter if you like)

  • Matches them to PW users by email

  • Creates missing users (optional)

  • Creates/updates purchase repeater items exactly like live checkouts

  • Has a test-run mode so you can preview before writing

You get a nice report right on the config screen (below "Sync now") with totals and per-session actions (SKIP, LINKED, UPDATE, CREATE) plus the line items. Makes it a lot easier to keep things in sync — especially if you had sales before installing the module. 

Note: since each run fetches sessions and line items directly from Stripe’s API, the total duration depends on network + Stripe’s response times. In our tests with ~120 sessions the sync took about 15 seconds.

Grab the latest version and give it a spin. We already tested this version on some live projects and everything works fine, but always backup before you mess with data 😉 Feedback welcome! 🙌
Cheers, Mike

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...