Skip to main content

Patreon Integration

Dispatch integrates with Patreon to receive webhook events when patrons join, pledges change, or posts are published on your campaign.

Connecting Patreon

  1. Navigate to your project's Sources page
  2. Click Add Source and pick Patreon
  3. Authorize the Dispatch Patreon app (scopes: identity, campaigns, w:campaigns.webhook)
  4. Pick the campaign you want to receive events from
  5. Choose which triggers to receive (members, pledges, posts)

Dispatch will:

  • Create a webhook on your Patreon campaign pointing at the Dispatch ingress URL
  • Persist the per-webhook signing secret returned by Patreon so signatures can be verified
  • Create a provider = "patreon" endpoint configured for the selected triggers

Supported Triggers

The event type is extracted from the X-Patreon-Event header on each delivery.

TriggerDescription
members:createA new patron joins (only fires the first time there is no prior payment with the creator)
members:updateMembership state changes — including renewal, payment status, or tier change
members:deleteMembership is removed (only when no prior payment exists)
members:pledge:createA pledge is created
members:pledge:updateAn existing pledge is upgraded, downgraded, or otherwise modified
members:pledge:deleteA pledge is cancelled
posts:publishA new post is published on the campaign
posts:updateA post is edited
posts:deleteA post is removed

Signature Verification

Patreon webhooks include an X-Patreon-Signature header containing an HMAC-MD5 hex digest of the request body, signed with the per-webhook secret returned by the Patreon API when the webhook was created. Dispatch verifies this on every delivery; requests with a missing or invalid signature are rejected.

X-Patreon-Signature: <hex-encoded-hmac-md5>
X-Patreon-Event: members:pledge:create

The signing secret is set automatically when you connect Patreon through Dispatch.

Auto-Formatted Embeds

When no custom template is assigned, Dispatch auto-detects Patreon payloads and renders specialised embeds covering every field documented in the Patreon API v2 reference.

Member events

Field surfacedSource attribute
Title / namefull_name (falls back to email)
Statuspatron_status (Active / Declined / Former) or is_follower
Membership typeis_free_trial / is_gifted (rendered as headline)
Pledgecurrently_entitled_amount_cents + pledge_cadence (monthly / annual)
Next charge amountwill_pay_amount_cents (only shown when it differs from current pledge — e.g. mid-cycle upgrade)
Lifetimecampaign_lifetime_support_cents (with legacy fallback to lifetime_support_cents)
Last chargelast_charge_status — every documented status (Paid, Declined, Deleted, Pending, Refunded, Refunded by Patreon, Partially Refunded, Fraud, Free Trial, Refund Pending, Refund Declined, Other)
Charged onlast_charge_date
Next chargenext_charge_date
Pledged sincepledge_relationship_start
Emailemail (when the campaigns.members[email] scope is granted)
Tiersresolved from relationships.currently_entitled_tiers via the included array

Pledge events

FieldSource attribute
Title / patronresolved from relationships.patron via included
Amountamount_cents
Cappledge_cap_cents
Createdcreated_at
Declineddeclined_since (turns the embed red)
Feespatron_pays_fees

Post events

FieldSource attribute
Title (linked)title + url
Descriptioncontent with HTML tags stripped and entities decoded; falls back to teaser_text when empty
Authorresolved from relationships.user via included
Publishedpublished_at
Visibilityis_public → Public / Patrons only
Billingis_paid (post incurs a charge)
Processingapp_status when not published
Tiersresolved from relationships.tiers via included
Embedembed_url

Disconnecting

To disconnect a Patreon campaign:

  1. Open Sources and find the Patreon endpoint
  2. Click Disconnect
  3. Dispatch deletes the webhook from your Patreon campaign and removes the endpoint