Đổi một URL · Không SDK · Xác minh Apache 2.0

Bảo hiểm webhook Stripe
cho SaaS AI.

Handler (đoạn code xử lý webhook trên server của bạn) mất 45 giây cho một lệnh gọi mô hình ngôn ngữ lớn (LLM). Stripe bị timeout sau khoảng 20 giây rồi thử lại. Khách hàng của bạn bị xử lý đơn hàng hai lần: bạn giao hàng, cộng credit hoặc gửi email hai lần.

AnyHook đứng giữa bên gửi và handler của bạn. Lưu, thử lại, ghi nhật ký và phát lại mọi thứ, mà không đụng tới code handler của bạn.

Free10 nghìn sự kiện/tháng
$20Pro · 50 nghìn sự kiện
$90Scale · 250 nghìn
stripe, webhooks
live
FAILED20.04s

evt_3Pk2X3b1Lcx

Request timed out. Stripe retries with backoff for up to 3 days.

~ stripe-cli
$ stripe webhooks update we_1234
    --url in.anyhook.net/u/app
✓ Endpoint updated
✓ Delivering to AnyHook
anyhook · delivered
200 OK

evt_3Pk2X3b1Lcx

attempt 1 · sender acked · 47.2s handler

0dropped
·
100%delivered
handler.ts
// before
await llm.run(evt); /* 45s */

// after
return Response.json({ ok: true });
example

sender retries avoided

127

01

Ba kiểu timeout ăn mòn tiền của bạn.

StripeWebhooks
20s

Lệnh gọi LLM quá ~20 giây → Stripe đánh dấu thất bại, thử lại → handler chạy hai lần → xử lý đơn hàng trùng lặp.

/v1/webhook_endpoints · status: failed

SlackEvents
3s

Bot phải trả lời trong 3 giây. AI agent mất 30 giây → Slack thử lại 3 lần → bot của bạn có thể trả lời tối đa 4 lần.

ShopifyWebhooks
5s

Trả lời muộn là bị tính thất bại: 8 lần thử lại trong 4 giờ, rồi thất bại lặp lại sẽ xóa subscription. Đơn hàng ngừng đổ về.

02

Chọn gói hợp với giai đoạn của bạn.

Pro

Khuyên dùng
$20/ tháng

Lưu lượng webhook production. Rẻ hơn 2 tuần tự xây cơ chế thử lại.

  • 50.000 sự kiện / tháng
  • 10 App · phát lại được 30 ngày, lưu 1 năm
  • 5 lần gửi · timeout gửi 120 giây
  • Phí vượt hạn mức $0.15 / 1.000 sự kiện, không âm thầm bỏ sự kiện
  • Cảnh báo qua email, Slack hoặc Discord · mọi lượt gửi đều được ký

Bạn không bao giờ phải tin lời chúng tôi về một lượt gửi. Thư viện xác minh chữ ký và MCP server theo giấy phép Apache 2.0: github.com/gba3124/anyhook-mcp. Bản thân dịch vụ chuyển tiếp thì không phải mã nguồn mở.

03

Ba bước. Ba mươi giây.

  1. Bước 1

    Đăng ký. Lấy URL nhận của bạn.

    Đăng ký bằng email hoặc Google. AnyHook cấp cho bạn một URL nhận (inbound URL) như https://in.anyhook.net/you/app. Gói Free không cần thẻ thanh toán.

  2. Bước 2

    Đổi URL trong Stripe (hoặc bất cứ đâu).

    Mở Stripe Dashboard → Webhooks → sửa endpoint → dán URL AnyHook. Cách đổi này cũng dùng được cho GitHub, Shopify, Events API của Slack và Paddle. Code handler của bạn giữ nguyên.

  3. Bước 3

    Xem sự kiện đổ về. Phát lại bất cứ sự kiện nào.

    AnyHook lưu sự kiện, trả về 200 cho bên gửi sau khoảng 1 giây và chuyển tiếp tới handler của bạn kèm cơ chế thử lại (ít nhất một lần; chống trùng lặp theo X-AnyHook-Delivery). Sự kiện thất bại nằm trong dashboard với nút Replay chỉ cần một cú bấm.

04

Một tình huống cụ thể.

Phù hợp

  • SaaS indie hoặc B2B có lưu lượng production thật
  • Sản phẩm thu tiền qua Stripe (Checkout, Subscriptions, Connect)
  • Handler làm việc AI thực sự, như LLM, RAG, chạy agent
  • Logic thử lại tự viết mà bạn không hoàn toàn tin tưởng
  • Bạn đổi được một URL trong dashboard của nhà cung cấp

Không phù hợp

  • Chưa có doanh thu, độ tin cậy của webhook chưa phải rủi ro lớn nhất của bạn
  • Đã chạy Inngest / Hookdeck / Svix trên production
  • Cần workflow engine (durable function, lập lịch): hãy dùng Inngest
  • Doanh nghiệp on-prem với chính sách nghiêm cấm dữ liệu đi ra cloud
  • Nhu cầu streaming sự kiện thời gian thực (Kafka, websocket, SSE)
05

Những câu trả lời thẳng thắn.

Sao không dùng luôn Inngest hay Hookdeck?

Nếu bạn có đủ nhân lực kỹ thuật để cài SDK và viết lại handler thành durable function, Inngest rất tốt. AnyHook dành cho những team muốn giải quyết vấn đề mà không đổi cấu trúc handler: đổi một URL webhook, giữ nguyên code hiện có.

Gói Free có thật sự miễn phí không? Mãi mãi?

Có. 10.000 sự kiện / tháng (tối đa 1.000 / ngày), 1 App, không cần thẻ thanh toán. Chúng tôi giữ gói này đủ rộng để các dự án cá nhân chạy được, nhưng đủ chặt để lưu lượng production tự nhiên sẽ nâng cấp. Không mánh khóe, không hết hạn.

Còn webhook không phải từ Stripe thì sao?

GitHub, Shopify, Events API của Slack, Paddle, Linear, Clerk: cùng cách đổi URL này dùng được cho tất cả. Việc xác minh chữ ký được tự nhận diện từ các header gửi tới.

AnyHook có phải mã nguồn mở không?

Một phần, và nên nói chính xác là phần nào. Thư viện xác minh chữ ký và MCP server theo giấy phép Apache 2.0 tại github.com/gba3124/anyhook-mcp, nên bạn có thể kiểm tra mọi lượt gửi chúng tôi ký mà không cần tin chúng tôi và không phụ thuộc vào chúng tôi. Dịch vụ chuyển tiếp nhận, lưu và thử lại thì không phải mã nguồn mở, và hiện chưa có bản tự host.

AnyHook có thấy payload webhook của tôi không?

Chúng tôi lưu payload ở dạng mã hóa khi lưu trữ (AES-256-GCM). Payload phát lại được trong thời hạn phát lại của gói (3 / 30 / 90 ngày); sau đó sự kiện của gói Free bị xóa, còn các gói trả phí giữ một kho lưu trữ mã hóa, chỉ đọc (1 năm trên Pro, 7 năm trên Scale). Khóa không bao giờ rời khỏi hạ tầng của chúng tôi. Trên Pro và Scale, bạn cũng có thể bật zero retention: header và body của sự kiện được xóa khỏi nhật ký sau khi sự kiện được gửi đi; kho lưu trữ mã hóa vẫn giữ bản sao của nó.

Nếu tôi dùng vượt gói Free giữa tháng thì sao?

Trên gói Free, sự kiện vượt hạn mức hằng tháng được tạm giữ trong nhật ký (thêm tối đa 20% hạn mức đó), chưa được gửi đi, và phát lại được sau khi bạn nâng cấp; vượt mức đó, hoặc vượt giới hạn hằng ngày, edge (lớp máy chủ biên của Cloudflare) trả về mã 429, không lưu gì và bạn nhận được một email. Nâng cấp lên Pro gỡ giới hạn ngay lập tức; phí vượt hạn mức của Pro là $0.15 / 1.000 sự kiện, kèm trần chi tiêu tùy chọn trong dashboard, vượt trần đó thì sự kiện được tạm giữ thay vì bị tính phí.

30 giây. Không cần thẻ.

Đổi một URL.
Đêm nay ngủ ngon hơn.

Đăng ký miễn phí, lấy URL nhận, đổi nó trong Stripe. AnyHook gánh các lần thử lại, handler của bạn vẫn chạy đúng như hôm nay.