Rebuilding Devmystify: Our Deep Dive into Dodo Payments Integration
If you read our last update , you know the drama: after a frustrating search involving Lemon Squeezy and Paddle, we finally settled on Dodo Payments as our new Merchant of Record (MoR) to sell our books, Modular Rails and Master Ruby Web APIs. The initial decision was about pricing and customer service, a move away from Gumroad's costly 10% cut.
The next step was integration, and it quickly became apparent that moving to a powerful, developer-first MoR meant embracing an entire platform rebuild. Here is the full story of the technical journey, the lessons we learned, and the massive improvements we brought to Devmystify's user experience.
The Core Decision: Payment Only, Content Hosted
The first major pivot in our development plan was realizing the fundamental difference between Dodo Payments and our old platform, Gumroad.
Gumroad was an all-in-one solution: it handled the payment, tax compliance, and, crucially, digital file delivery. Dodo, being a pure MoR, is payment-centric. We quickly found that the default file links Dodo served were insecure. This meant one thing: we couldn't just rely on Dodo for fulfillment.
We made the strategic decision to only use Dodo Payments as the checkout and MoR service, and handle the content delivery ourselves. We set up an isolated, secure environment on Amazon S3 to host the books and course contents. This gave us full control, better security, and, most importantly, allowed us to create brand-new, bespoke landing pages for Modular Rails and Master Ruby Web APIs that reflected the quality of our content.
This simple switch, hosting content ourselves and only using Dodo for payment, was the catalyst for the entire platform overhaul.
Building Our Own Authentication System
When you host your own content, you can't just send an email with a download link anymore. That would be a security risk. To securely grant a verified purchaser access to the S3-hosted content, we had to build an authentication layer.
This led us to create proper user accounts in Devmystify from the ground up. Our new system supports:
- Standard Email/Password accounts, complete with a robust verification email process.
- Easy Google SSO login for users who prefer convenience.
This was a massive infrastructure upgrade that fundamentally changed how users interact with our platform.
The Developer Experience with Dodo's API
The good news is that Dodo's API made the checkout side of this transition surprisingly smooth. They offer a comprehensive API with various endpoints and its own SDKs to easily manage products, customers, and discounts.
The documentation at https://docs.dodopayments.com/api-reference/introduction is excellent, it provides everything we needed to manage everything on our end via API, from creating a new product to generating a checkout session. We were particularly impressed with the range of official SDKs available, including TypeScript, Python, and Go, which allowed us to integrate efficiently with our backend.
- Test & Live Modes: Dodo neatly separates development and production environments with distinct API keys for Test Mode and Live Mode. The helpful feature is the ability to easily copy products we created and configured in the Test environment directly into Live Mode.
We initially attempted to use their React overlay component for checkout but found it to be too high-level for our needs, relying on an iframe approach that felt restrictive and difficult to customize. We ultimately decided to stick to an API plus Webhook integration, which gave us the control we needed over the checkout flow.
Webhooks and The ngrok Headache
To connect the payment event back to our authentication system, we needed webhooks. When a Dodo payment succeeds, it sends a payload to a specific URL on our server, which triggers the process of creating a user account and granting content access.
The most annoying, yet necessary, part of the development process was using ngrok to expose our local development site securely to the internet. This was one way Dodo's webhook to talk to our local machine, ensuring we could properly test the end-to-end purchasing and fulfillment flow before deployment. It’s an essential step in any webhook integration, but constantly setting up and configuring the ngrok tunnel was a minor development friction point.
A Better User Experience
The integration of Dodo Payments and the resulting creation of an authentication system delivered huge benefits directly to our users.
With proper account management, we were able to deliver a better UI interface. Now, every user has their own dedicated page where they can:
- Manage their profile details.
- Instantly view all their purchased books and courses.
Finally, we built a fully modern and reliable proper account management experience:
- Flexible Login: Google SSO, Magic Link, and traditional email/password.
- Robust Security: We implemented a complete forget password and reset password email feature, ensuring users can always recover access to their purchases securely and easily.
The transition to Dodo Payments was more than a change in fee structure; it forced us to evolve Devmystify into a full-fledged, secure, and user-friendly content platform. We moved from simply selling books to managing a true member experience.
Final Thoughts: Integration Complete and Lessons Learned
Integrating Dodo Payments was far more than a simple swap; it forced us to evolve Devmystify. By using Dodo purely for the MoR and payment gateway, we gained full control over the user experience, a massive step up from our old platform, Gumroad.
The key takeaway: Choosing a developer-focused MoR like Dodo shifts the responsibility of content delivery and user experience entirely back to the creator.
This led to the full platform rebuild: custom authentication (Google SSO, Magic Link, etc.), secure Amazon S3 hosting for content, and dedicated user profile pages.
Dodo's excellent API documentation and clear Test/Live modes made the payment side of the integration efficient. Despite the minor friction points (like setting up ngrok for webhooks), the outcome is a better platform for selling Modular Rails and Master Ruby Web APIs.
We moved from selling books to managing a secure, full-featured member experience. Dodo handles the compliance; we handle the customer.

