Building a custom checkout and donation-based sponsor-matching system


“I hired Gio and his team at Datos to help me launch an online course. From the beginning I found Gio (and his team) to be professional and stellar communicators. Beyond that was his knowledge of a world I could not have navigated on my own. Gio was able to put resources together that had a tremendous impact on the course and created a user experience that helped people feel included and involved in what they were purchasing. His whole team worked well together and with me to keep everything up to date and delivered with excellence. I felt as though I had a partnership with Gio through this experience. I can not say enough how much I trust him. He is always three steps ahead of knowing what needs to be done and effectively rolling that out before I catch up. We are now working on our second project together. There will be many, many more.”

Nate Postlethwait

With an Instagram following quickly passing the 100k mark, our client wanted to launch a course to help guide fellow trauma survivors through inner child work.

The client was business savvy and had a good plan in place, but little knowledge about how to launch a successful online course. We only had one month to build and start selling the course from scratch, so we got to work.

One of the key things they wanted to have is the ability to have people pay to sponsor someone else for the course. The idea is that these sponsors would be matched directly with a sponsee, and both would receive email confirmations upon a successful match.

In addition, they wanted to collect additional information for each course student aside from name, email, and payment information.

Out of the box, most checkout systems don’t support this extra information, and none would support matching purchasers with people who have requested sponsorship. With existing systems not available as an option, we decided to build a custom checkout system using Typeform and Bubble.

Building a checkout system with Typeform

Typeform is a well-known form building tool, but most people aren’t aware that you can collect payments using Typeform. You can also make the payment amount dynamic based on the answers people give.

We built a Typeform flow that allowed the user to choose to pay for another person to take the course in addition to themselves. They could choose to pay for up to 10 other people, which influenced the price at checkout.

By using Typeform, we were able to create a checkout experience that feels like a conversation rather than a transaction.

Building a WordPress sales page with multiple ways to engage

Because the client has a large and loyal following, the sales page didn’t need to be especially long or complicated. But it needed to provide 3 ways of engaging:

  1. Purchasing the course
  2. Sponsoring someone for the course
  3. Signing up to be sponsored for the course

We were able to build a simple but beautiful page that fit the client’s existing branding and provided easy access to these important steps.

Creating a custom sponsor matching system with Bubble

We created an initial version of this sponsor matching system, then improved on it for the second course launch.

Bubble is a tool that allows you to quickly build and use a web app without using any code. It’s a great tool for filling in the gaps left by your other systems.

V1 was a simple dashboard where the client could manually match sponsors with sponsees. He could also see stats for the launch in real time, track announcements to make on Instagram, and view a list of sponsors and how many people they sponsored.

When he completed a match, ActiveCampaign would be updated and both parties would immediately receive confirmation emails. The emails were dynamic and depending on their sharing preferences, would contain some information so they could connect.

Here is a view of the test data on the dashboard:

V2 took it a step further and allowed sponsors to actually select who they wanted to sponsor directly. They could select multiple, then hit checkout and pay. As soon as a successful payment came through, confirmation emails were sent to all parties.

The client could still see the statistics on a dashboard, but didn’t need to be the middleman anymore.

This is what the sponsoring page looked like on a mobile device:

Tying it all together with N8N and Zapier

Whenever you are sending users between different tools, it’s important to make sure they’re all carefully integrated to talk to each other as needed.

In all, their tech stack included:

  • Kajabi
  • WordPress
  • Typeform
  • Bubble
  • AddEvent
  • ActiveCampaign

We initially used Zapier to integrate the systems, but we ran into a couple of issues.

  1. The Zapier integration in Bubble was buggy and would sometimes silently fail
  2. Zapier’s cost quickly ballooned with a high volume of transactions

Using N8N, we were able to replicate and improve upon all the functionality in Zapier and bring the cost down to $5/mo.

Plus, we were able to set up live Slack alerts whenever there was an error. N8N ended up being more dependable than Zapier, especially when working with Bubble.

When to build custom systems vs. use pre-built tools

Before building anything custom, it’s important to evaluate whether it’s worth it.

When possible and financially feasible, using tools that are designed to solve these problems out of the box is best. Usually, only larger companies with complex needs have a good reason to develop their own custom solutions.

However, no-code tools like Bubble have made it more practical to create your own systems. They’re easier for people to learn, you can create something faster, and you can pivot faster if needed.

In this case, we didn’t know of any tools that could set up this sponsorship system, and preliminary research didn’t turn up any results.

We were able to create the MVP of the sponsorship matching system in about 5 hours, which made it far more affordable and customized to our needs than trying to find something that would do it for us.

Whatever you decide to do, make sure your system collects enough data in an organized fashion (data tables or a spreadsheet) so that you can import that data elsewhere in the future if needed.


Never miss a post from Datos