Broadcast one drop to many fans
Guides

Broadcast one drop to many fans

Send the same drop to many fans with one checkout link each, and match every payment back to the fan who paid.

View as MarkdownUpdated Oct 17, 2026

One drop can be sold to any number of fans. Give each fan a personal checkout link that carries a reference of your choice, such as your id for the fan or the conversation. When the fan pays, the order comes back with that reference, so you know who paid and where to deliver the content.

Same price only

One drop has one price. If fans should pay different amounts, create one drop per price.

1. Create the drop once#

curl -X POST "https://www.dropfans.io/api/external/drops" \
  -H "Authorization: Bearer $DROPFANS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Friday set","price":25,"vaultItemIds":["clxv1a2b30001item","clxv1a2b30002item"]}'

Keep the productId.

Pick a reference per recipient: your own id for the conversation, 1–32 characters of A-Z a-z 0-9 _ -. On the web it goes in the short m parameter; in Telegram it follows the product id. Fill it into the templates from GET /links:

WhereLink
Webhttps://www.dropfans.io/buy/{productId}?m={externalRef}
Telegram Mini Apphttps://t.me/<bot>/app?startapp=b_{productId}_{externalRef}

Telegram limits the whole start parameter to 64 characters, so with a 25-character product id the 32-character reference always fits. The reference survives the whole checkout: card, saved card, 3-D Secure and wallet credits.

3. Match the payment#

Each paid order carries the reference as externalRef:

  • Push: set a webhook and handle drop.paid. data.externalRef tells you which fan paid. Use data.orderId as your idempotency key.
  • Poll: GET /api/external/orders?externalRef=… answers "did this fan pay?", and ?productId=…&since=… sweeps a whole broadcast.
Node
// drop.paid handler (after verifying the signature)
const { orderId, externalRef, productId, buyer } = event.data;
if (await alreadyDelivered(orderId)) return;
const chat = await findConversationByRef(externalRef);   // your lookup
await deliverMedia(chat, productId);
await markDelivered(orderId);

Good to know#

  • A fan who already owns the drop gets it unlocked without paying again, so no new order is created. Keep showing them the content.
  • The reference is not proof of identity. A fan can edit the link, and would then pay to deliver to someone else's chat. For extra safety, compare buyer.telegramUserId (set when they paid inside Telegram) with the chat you expect.
  • Refunds and chargebacks arrive as drop.refunded with the same orderId and externalRef.

Next: Webhooks & polling or Creator sign-up from your platform.

Questions? [email protected]