I Rebuilt the Same SaaS Integration Layer 6 Times. So I Stopped.
Every new project. Same boilerplate. Different client. Same pain.
After years working as a DevOps engineer — architecting solutions on Azure and AWS, shipping .NET backends, connecting SaaS products to the tools their customers actually use — I noticed a pattern I couldn't shake.
Every project started the same way.
Not with the product. With the plumbing.
Stripe. SendGrid. Twilio. Webhooks. File storage on S3 or Azure Blob. JWT auth. Multi-tenant architecture. Rate limiting. Audit logs.
Six different projects. Six times rebuilding the same foundation. The specifics changed — the stack stayed identical.
So I finally did something about it.
What "the plumbing" actually looks like in production
Let me be specific, because this is where most tutorials stop short.
Webhooks aren't fire-and-forget
Everyone knows how to send a webhook. You POST to a URL. Done.
What most developers underestimate is the retry layer. In production, the receiving end will go down. It will timeout. It will return a 500 at 2am. If you're not handling that, you're losing data.
A production webhook dispatcher needs:
-
Exponential backoff — not fixed retries.
1min → 2min → 4min → 8min → 16min. Linear retries hammer a struggling server. - Delivery tracking — you need to know which events succeeded, which failed, and which are queued.
- Manual retry — operations teams need a button to replay a failed event without re-triggering the source.
- Dead letter handling — after N failures, park it somewhere and alert. Don't silently drop it.
I've seen teams burn two weeks building this correctly. Most don't build it correctly at all.
Multi-tenant isn't just a tenantId column
Adding a tenantId to your tables is the beginning of multi-tenancy, not the end.
A real multi-tenant architecture means:
- Per-tenant database isolation — not just row-level filtering, but the option to physically separate tenant data when compliance requires it
- Per-tenant rate limiting — one noisy tenant shouldn't degrade experience for others
- Per-tenant audit logs — every action logged, attributable, exportable
- Per-tenant API keys — rotation, scoping, revocation, all manageable per customer
This is the stuff that kills SaaS MVPs post-launch when enterprise customers start asking questions.
Data transformation is the unsexy problem nobody talks about
You've connected Shopify to your platform. Now you need to forward that order to your warehouse system — which expects a completely different JSON schema.
You've connected Stripe to your billing layer. Now you need to push that event to your accounting software — which expects yet another format.
This happens constantly in integration work. The standard answer is "write a mapper function." The problem is you end up with dozens of brittle, untestable mapper functions scattered across your codebase.
A better pattern: Liquid templates for JSON-to-JSON transformation. Define the mapping as a template. Test it against sample payloads before deploying. Change the mapping without touching application code.
Shopify order → [Liquid template] → Warehouse API format
Stripe event → [Liquid template] → Accounting platform format
It sounds simple. It changes how you think about integrations entirely.
The stack that actually covers it
After the sixth rebuild, I documented every decision I'd made — and packaged it into a single .NET 8 platform. Here's what ended up in it:
Payments
Stripe integration, PCI compliant, supporting 7+ payment methods (PayPal, iDEAL, Klarna, Bancontact, Giropay, Sofort). Webhook-driven, not polling.
Webhooks
Full dispatcher with exponential backoff retries, delivery tracking, manual retry, and monitoring.
Email & SMS
SendGrid for transactional email (welcome flows, receipts, alerts). Twilio for SMS (security codes, payment confirmations). Template system with delivery history.
File Storage
AWS S3 and Azure Blob — both, so your cloud strategy doesn't lock you in. Tenant-isolated. Full CRUD.
Data Transformation
Liquid template engine. JSON-to-JSON mapping. Testable before deploy.
Security
JWT with refresh tokens. MFA via TOTP. API key management with rotation. SSO via Google, Azure AD, and Okta. Session management. Rate limiting with configurable quotas per tenant.
Subscriptions
Plan management (Basic/Pro/Enterprise). Lifecycle handling. Cancel and refund flows. Metered billing support.
Observability
Complete audit logging. Health checks (liveness, readiness, detailed). Request/response logging. Performance metrics.
61 endpoints total. Docker-ready. SQLite for local development, SQL Server for production. Swagger/OpenAPI docs included. Deployable to Azure App Service or AWS ECS.
Why build this vs. using Zapier or Make?
Fair question. Here's the honest breakdown:
| This platform | Build yourself | Zapier/Make | |
|---|---|---|---|
| Cost | €399 one-time | €30k+ dev time | €500+/month |
| Time to launch | ~10 minutes | 3–6 months | ~1 day |
| Full source code | ✅ | ✅ | ❌ |
| Self-hosted | ✅ | ✅ | ❌ |
| Webhook retries | ✅ built-in | Build yourself | ✅ |
| Custom transforms | ✅ Liquid templates | Build yourself | Limited |
| Multi-tenant | ✅ built-in | Build yourself | ❌ |
| Audit logging | ✅ built-in | Build yourself | ❌ |
Zapier is fine for simple automations. It breaks down fast when you need custom transforms, tenant isolation, or anything that touches compliance.
Who this is for
- SaaS founders who want to ship product, not infrastructure
- Freelancers who deliver .NET backends and are tired of the same setup overhead on every engagement
- Dev teams starting greenfield projects who want a production-ready base, not a tutorial skeleton
It is not for you if you enjoy building webhook dispatchers. Some people do. I respect it.
Try it before you buy it
There's a live Test Hub at localhost:5000/testhub after you clone and run docker compose up. Every one of the 61 endpoints is testable before you spend a cent.
If you want to grab it: API Integration & Automation Platform on Gumroad — €399, one-time, full source code, lifetime updates, commercial license. https://youtu.be/3nQfoa8x_kc?si=IGMg41Tt-98q5VOD
30-day money-back guarantee. No questions asked.
Built on .NET 8 · Runs on Azure & AWS · Part of the BuildMintZ platform
What's the integration you've rebuilt the most times? Drop it in the comments — genuinely curious whether webhook retries or multi-tenant auth is the more universal pain point.
Tags: dotnet devops azure aws webdev saas architecture productivity
Top comments (0)