Early Access: Webhook payload normalization is currently in active development. Payment normalization is available now via
@hookflo/tern
. Additional categories (Auth, Database, Infrastructure) are coming soon.The Problem
Your app integrates with Stripe for payments. Then a customer wants Razorpay. Another wants PayPal. Each platform sends webhooks in completely different formats:The Solution
Hookflo’s@hookflo/tern
normalizes all webhook payloads into consistent schemas:
Benefits
1. Switch Platforms Without Code Changes
The Impact: Migrate from one provider to another in minutes, not months. Testing a new payment processor? Want to switch auth providers? With normalized payloads, your webhook handlers work with any platform immediately. Before Hookflo:- 2-3 weeks of development per migration
- High risk of bugs in rewritten handlers
- Business disruption during transition
- Vendor lock-in due to switching costs
- Change a config value
- Zero code modifications
- Test in staging instantly
- True multi-vendor freedom
2. Reduce Bandwidth by 40-70%
The Impact: Significant cost savings at scale, faster processing, better performance. Raw webhooks include dozens of unnecessary fields. Stripe sends 50+ fields per payment webhook — you need maybe 8. That’s 80% waste.- Raw data: ~2.5 TB/month
- Normalized: ~0.4 TB/month
- Savings: 2.1 TB/month
3. Integrate New Platforms in Hours, Not Weeks
The Impact: 10x faster time-to-market for new integrations. Traditional approach: Study docs → Parse responses → Map fields → Write tests → Deploy → Repeat for next platform. With normalized schemas: Install package → Use existing handlers → Done.Payments
Stripe, PayPal, Razorpay, Polar
Authentication
Auth0, Okta, Clerk, Firebase Auth, Cognito
Database
MongoDB, Supabase, PostgreSQL
Infrastructure
AWS, Vercel, Railway, Render
4. Crystal Clear Data, Zero Ambiguity
The Impact: Write less code, prevent bugs, onboard developers faster. Different platforms use different field names for the same concept:- Amount:
amount
vsvalue
vstotal
- Status:
status
vsstate
vspayment_status
- User ID:
customer_id
vsuser_id
vscustomer
- Payments Schema
- Auth Schema
- Database Schema
- Type-safe across all platforms
- Self-documenting code
- Predictable behavior
- No more “wait, which field has the amount?” moments
5. Keep Raw Payloads When You Need Them
The Impact: Get normalization benefits without losing flexibility. Sometimes you need platform-specific data. Hookflo gives you both:Smart Migration: Transition legacy systems gradually by keeping raw payloads accessible while moving to normalized data.
Supported Categories
Payments
Payments
Platforms: Stripe, PayPal, Square, Razorpay, Adyen, Braintree, Paddle, MollieNormalized Fields:
- Transaction ID & amount
- Currency (ISO 4217)
- Status (succeeded, failed, pending, refunded)
- Customer ID
- Payment method type
- Timestamp (ISO 8601)
Authentication
Authentication
Planned Platforms: Auth0, Okta, Clerk, Firebase Auth, AWS Cognito, WorkOSPlanned Normalized Fields:
- User ID
- Event type (login, logout, signup, password_reset, mfa_enabled)
- Success indicator
- IP address & device type
- Timestamp
Database
Database
Planned Platforms: MongoDB, Supabase, PostgreSQL, PlanetScale, Firebase, NeonPlanned Normalized Fields:
- CRUD operation type
- Collection/table name
- Record ID
- Change summary
- Actor (user_id)
- Timestamp
Infrastructure
Infrastructure
Planned Platforms: AWS, Google Cloud, Azure, Vercel, Railway, Render, Fly.ioPlanned Normalized Fields:
- Resource identifier
- Event type (deployment, scaling, failure)
- Status & severity level
- Region/zone
- Timestamp
Want to influence our roadmap? Join our Discord or open a discussion on GitHub to request specific platforms or categories.
Getting Started
1
Install the package
2
Normalize your first webhook
3
Use consistent data everywhere
Before vs After
Without Hookflo
- Separate handler per platform
- 2-3 weeks per integration
- Platform migrations = full rewrites
- 100% payload size
- Vendor lock-in
- Complex testing
With Hookflo
- Single unified handler
- Hours per integration
- Change config to migrate
- 30-60% payload size
- Zero vendor lock-in
- Simple, consistent tests
FAQ
Which platforms are supported right now?
Which platforms are supported right now?
Payment platforms are fully supported including Stripe, PayPal, Square, Razorpay, Adyen, and Braintree. Auth, Database, and Infrastructure categories are in development.
What if I need platform-specific data?
What if I need platform-specific data?
Use
mode: 'hybrid'
to get both normalized and raw payloads. You get the convenience of normalized data with full access to platform-specific fields when needed.Does this work with custom webhook schemas?
Does this work with custom webhook schemas?
Yes! While we provide pre-built schemas for 50+ platforms, you can define custom normalization rules for internal services or less common platforms.
What's the performance impact?
What's the performance impact?
Negligible. Normalization adds ~1-2ms of processing time but saves significantly more through reduced payload size and faster parsing.
Can I gradually migrate to normalized payloads?
Can I gradually migrate to normalized payloads?
Absolutely. Use hybrid mode to keep raw payloads while transitioning your codebase. Migrate endpoint by endpoint at your own pace.
How do you handle breaking changes from platforms?
How do you handle breaking changes from platforms?
We monitor platform APIs and update normalization rules automatically. Your code stays unchanged even when providers change their webhook formats.
Can I request a specific platform or category?
Can I request a specific platform or category?
Yes! We’re actively building our roadmap based on user feedback. Join our Discord or open a GitHub discussion to request features.