1. Documentation
  2. Developers
  3. Webhooks

Selling platforms

Gumroad, Lemon Squeezy, Paddle, Shopify.


Beyond the generic webhook and Stripe, Bao can receive events directly from several selling platforms. Each source is configured and enabled separately in the dashboard.

PlatformWhat Bao expects
GumroadA token generated by Bao, to put in Gumroad's ping
Lemon SqueezyYour webhook's signing secret
PaddleThe signing secret, and an API key for verification
ShopifyYour webhook's signing secret

The common principle

Whatever the platform:

  1. You enable the source in Bao and collect the webhook URL.
  2. You paste that URL into the platform.
  3. You copy the platform's secret into Bao. Secrets are stored encrypted and never shown again in the clear.
  4. You choose the default tier, and optionally a product-to-tier mapping.

A purchase opens an entitlement, a refund or a cancellation closes it, with the configured grace period.

Identifying the buyer

As with Stripe, these platforms know an email, rarely a Discord ID. The behaviour is the same: without a Discord ID, Bao creates a pending entitlement, which the buyer collects through claiming in Discord.

This is normal operation, not a degraded mode. Most servers only ever use this one.

Several sources at once

Nothing stops you having Stripe, Gumroad and the direct webhook active at the same time. Each entitlement keeps a record of its source, and the role is only removed when no source justifies it any more.