---
title: "Revenuecat Webhook"
method: POST
path: "/api/webhooks/revenuecat"
tags: ["webhooks"]
---

# Revenuecat Webhook

`POST /api/webhooks/revenuecat`

Single entry point for all RevenueCat webhook events.

RevenueCat sends every event for the app to this one endpoint regardless
of product. Each domain service owns its own product-id/event-type
filtering and no-ops on events that aren't relevant to it, so the event
is simply handed to every domain that consumes RevenueCat events.

Processing is awaited rather than backgrounded, and unexpected errors are
intentionally left to propagate (see each service's handle_* method) so a
genuine failure surfaces as a non-2xx response and RevenueCat retries
delivery. All DB writes here are idempotent, so a retry is always safe --
this also means a crash mid-processing just results in RC redelivering,
rather than the event being silently lost.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/usecreed/apis/creed-api.md) · [All operations](https://skmtc.net/usecreed/apis/creed-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/usecreed/creed-api/versions/523833f9e819/schema)
