OTHER

Revoke Discord Access on Stripe Subscription End

When a Stripe subscription is canceled or lapses on payment, removes the member's paid Discord roles and downgrades them to free access.

CategoryOther
Enginesim
Difficultyintermediate
Triggerwebhook
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerStripe subscription canceled or failedStripeStripe
  • ActionResolve Discord ID from PostgresPostgreSQLPostgres
  • LogicBranch cancel-now vs grace period
  • ActionRemove paid roles, restore free roleDiscordDiscord
  • ActionLog downgrade to audit tablePostgreSQLPostgres
  • OutputDM resubscribe instructionsDiscordDiscord

What it does

Closes the access loop: when a member stops paying, it strips their paid Discord roles, restores the free-tier role, and records the downgrade so your gated channels only ever contain current subscribers.

When to use it

Use it alongside any paid-membership grant flow to prevent churned members from lingering with full access. Especially important for revenue-gated communities and cohort programs.

How it works

  1. 1A Stripe webhook fires on `customer.subscription.deleted` or a final failed `invoice.payment_failed`.
  2. 2The flow resolves the Discord user ID from the Postgres linking table.
  3. 3A branch decides cancel-now versus grace-period: hard cancellations revoke immediately, payment failures wait for the dunning window before revoking.
  4. 4Discord removes all paid tier roles from the member and reassigns the free "Member" role.
  5. 5The change is written to the Postgres audit table and the member receives a DM explaining the downgrade and how to resubscribe.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect StripeCustomers, subscriptions, payments.
  2. 2
    Connect DiscordCommunity channels + voice + bots.
  3. 3
    Connect PostgresAny Postgres URL — query, write, migrate.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.