---
title: "Dub Conversion Webhook"
method: POST
path: "/v1/embedders/webhooks/dub/conversion"
tags: ["embedders"]
---

# Dub Conversion Webhook

`POST /v1/embedders/webhooks/dub/conversion`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/v1/embedders/webhooks/dub/conversion`
- Auth: none declared

P3c · Dub conversion webhook receiver.

Dub sends a signed payload when a click → signup → qualifying-deposit
conversion happens. The ``polymarket_subid`` carries the ``ref={embedder_slug}``
token we threaded into the affiliate URL, so we look up the embedder
by slug and persist an ``EmbedderRevenueEvent`` row.

HMAC verification against ``DUB_WEBHOOK_SECRET`` (env). Idempotent via
the ``dub_event_id`` UNIQUE constraint — replay is a no-op. Settlement
(rolling events into payout batches) is a SEPARATE concern handled by
the monthly settlement cron, NOT this webhook.

## Response `200`

Successful Response

- object

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
