CtrlK
BlogDocsLog inGet started
Tessl Logo

paddle-webhooks

Receive and verify Paddle webhooks in a Next.js Route Handler — signature verification, idempotency, retry semantics, and local testing.

87

1.13x
Quality

80%

Does it follow best practices?

Impact

99%

1.13x

Average score across 3 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Fix and improve this skill with Tessl

tessl review fix ./skills/webhooks/SKILL.md
SKILL.md
Quality
Evals
Security

Evaluation results

99%

21%

Paddle Webhook Receiver for SaaS Billing

Webhook route handler with signature verification

Criteria
Without context
With context

SDK singleton file location

100%

100%

Imports from correct package

50%

87%

LogLevel.error set

0%

100%

PADDLE_API_KEY guard

100%

100%

Route handler location

100%

100%

Raw body read with request.text()

100%

100%

Reads paddle-signature header

100%

100%

400 for missing inputs only

37%

100%

Uses unmarshal for verification

100%

100%

Single catch, single non-2xx

30%

100%

No 2xx on verification failure

100%

100%

WEBHOOK_SECRET from env

100%

100%

100%

2%

Subscription Lifecycle Event Router

TypeScript event routing with idempotent handlers

Criteria
Without context
With context

Correct output file path

66%

100%

Imports from @paddle/paddle-node-sdk

100%

100%

EventName enum for routing

100%

100%

Typed handler parameters

100%

100%

Handles all 6 event types

100%

100%

Default case returns without throwing

100%

100%

UPSERT idempotency strategy

100%

100%

eventId for non-idempotent effects

100%

100%

DESIGN.md explains type narrowing

100%

100%

No string literal comparisons

100%

100%

processEvent accepts EventEntity

100%

100%

100%

13%

High-Volume Webhook Processing with Background Jobs

Fast acknowledgment with background queue pattern

Criteria
Without context
With context

Raw body via request.text()

100%

100%

unmarshal for verification

0%

100%

PDF generation is queued

100%

100%

Email sending is queued

100%

100%

Paddle API call is queued

100%

100%

Fast 200 acknowledgment

100%

100%

Verify then queue pattern

100%

100%

Non-2xx catch block

37%

100%

ARCHITECTURE.md: 5-second constraint

100%

100%

ARCHITECTURE.md: queue rationale

100%

100%

enqueueJob used correctly

100%

100%

Repository
PaddleHQ/paddle-agent-skills
Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.