Payments Integration Guide
Test Lemon Squeezy Webhooks Online
Test Lemon Squeezy order created, subscription expired, and license key activated webhooks with instant signature check.
Direct Answer / Quick Summary
To test Lemon Squeezy webhooks, open Lemon Squeezy Dashboard > Settings > Webhooks, create a new webhook endpoint using your SafeWebhook URL, choose your events, and click Send Test Event.
Key Capabilities & Testing Highlights
- •Extract order.created, subscription.created, and license_key.created payloads.
- •Instant HMAC-SHA256 verification of X-Signature headers.
- •Zero-setup testing without configuring DNS or ngrok tunnels.
- •Export payloads to Next.js or Laravel billing handlers with 1 click.
Signature Header
X-Signature
Cryptographic Scheme
HMAC-SHA256
Payload Retention
100% Client-Side
Step-by-Step Lemon Squeezy Webhook Setup
Follow these 4 simple steps to capture real-time Lemon Squeezy events in your browser:
1
Navigate to Lemon Squeezy Dashboard > Settings > Webhooks.
2
Click the "+" button to add a new webhook.
3
Paste your SafeWebhook URL and supply a Signing Secret.
4
Select events and click "Send test event".
Sample Lemon Squeezy Webhook Payload
application/json{
"meta": {
"event_name": "order_created",
"custom_data": {
"user_id": "12345"
}
},
"data": {
"id": "1",
"type": "orders",
"attributes": {
"store_id": 11,
"customer_id": 1,
"identifier": "ec892e39-1029-4928-8921-102938491029",
"order_number": 1,
"user_name": "Jane Doe",
"user_email": "jane@example.com",
"currency": "USD",
"total": 2900,
"status": "paid"
}
}
}Lemon Squeezy Signature Verification Recipes
Copy-paste production-ready HMAC verification code for your backend:
Node.js / Express Recipecrypto.timingSafeEqual
const crypto = require('crypto');
function verifyLemonSqueezy(rawBody, signature, secret) {
const hmac = crypto.createHmac('sha256', secret);
const digest = Buffer.from(hmac.update(rawBody).digest('hex'), 'utf8');
const signatureBuffer = Buffer.from(signature, 'utf8');
return crypto.timingSafeEqual(digest, signatureBuffer);
}Python / Flask / FastAPI Recipehmac.compare_digest
import hmac
import hashlib
def verify_lemon_squeezy(raw_body, signature, secret):
digest = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(digest, signature)Frequently Asked Questions: Lemon Squeezy Webhooks
Does Lemon Squeezy include custom data in webhooks?
Yes, Lemon Squeezy attaches any custom metadata passed during checkout initialization inside `meta.custom_data`.
Ready to test Lemon Squeezy webhooks in real-time?
Get your free, private edge endpoint instantly. Zero signup, zero credit card, 100% free forever.