Early bird discounts live! Claim your offer

n8n

Drive Subscriby from n8n — verified node with a 106-event trigger and a full-parity action node covering every REST endpoint, plus HTTP/Webhook fallbacks.

n8n-nodes-subscriby is a verified community node on n8n, installable on Cloud and self-hosted alike. It ships:

  • A trigger node listing all 106 webhook events from the WebhookEvent catalog.
  • An action node covering every write + read operation across 20 resources — full parity with the live api.subscriby.net/v1 surface.

Coming from n8n-nodes-memberpass? That package is deprecated. Every node type, credential and webhook path changed, so workflows have to be rebuilt rather than upgraded — see the migration guide.

Install

Add the node

Open any workflow, click + to add a node, search Subscriby, and drag it onto the canvas. No package install — verified nodes are available directly from the canvas.

If Subscriby does not appear in search, an admin must enable Verified Community Nodes under Admin Panel → Settings, then restart the instance.

Add the credential

Credentials → New → Subscriby API. Paste an API token minted at app.subscriby.net/settings/tokens. The credential test calls GET /v1/teams/current; a 200 means you're connected.

Required token abilities:

  • team:view — always (credential test relies on it).
  • webhook-endpoint:manage — for the trigger node (registers + deletes endpoints on workflow activation / deactivation).
  • Plus any ability each action operation you drop onto the canvas requires (see the ability catalog).

Production tokens start with sbt_live_; non-production (staging, local) tokens start with sbt_test_. The credential placeholder expects the full Stripe-style token — copy-paste everything after "Bearer ".

Trigger node — 106 events

Subscriby Trigger starts a workflow when one or more events fire. Multi-select the events, optionally scope to a single project, activate the workflow. On activation n8n calls POST /v1/webhook-subscriptions; on deactivation it calls the matching DELETE. Idempotency keys are generated automatically.

Signature verification (SB-Signature HMAC) is enabled by default — the node validates every inbound request and silently drops mismatches. Turn it off only for local debugging.

Action node — 22 resources

Subscriby exposes every mutation and read route on the API. Pick a Resource then an Operation from the sidebar. Every write auto-sends a fresh Idempotency-Key header — re-running a node is safe (Subscriby returns the cached response for replays within 24h).

Resource + operation matrix

ResourceOperations
ProjectList, Get, Create, Update, Archive, Restore, Delete, Find by Handle
PlanList, Get, Create, Update, Publish, Unpublish, Start Next Season, Arrange Storefront Order, Delete, Find by Name
Pass WindowList, Get, Create, Cancel, Remind Queue
SubscriptionList, Get, Cancel, Pause Access, Unpause Access, Reactivate, Remind Pass Holder
MemberList, Get, Ban, Unban, Kick
BroadcastSend, Preview, List Audiences
Support ConversationList, Get, List Messages, Reply, Resolve, Reopen, Assign, Block Contact, Unblock Contact
Canned ReplyList, Get, Create, Update, Delete
Support InboxGet Settings, Update Settings
SubscriberFind by Telegram ID
Access CodeList, Delete, Bulk Generate, Preview
CouponList, Get, Create, Update, Activate, Deactivate, Delete
ResourceList, Get, Create, Update, Activate, Deactivate, Unlink, Delete
Payment MethodList, Get, Activate, Deactivate, Sync Plans, Delete
Webhook EndpointList, Get, Create, Pause, Resume, Rotate Secret, Test, Delete
Webhook DeliveryList (by event type), Get, Retry, Retry Dead
TokenList, Get, Revoke
TeamList, Get, Get Current, Create, Update, Delete
Team MemberList, Get, Invite, Update Role, Remove, Cancel Invitation
RoleList, Get, Create, Update, Delete
GroupList, Get, Create, Update, Delete, Sync Members
ActivityList (by subject)
BotGet Status, Disconnect
DistributionGet Bot Link, Get Portal URL, Get Deep Link
AnalyticsGet Dashboard, Get Earnings, Get Subscribers, Get Transaction Breakdown, Get Plan Performance, List Transactions

Broadcast → Send

The audience is built from three fields that compose. Audience picks a segment, Plan ID optionally narrows it to one plan, and Running Out Within (Days) sets the horizon that Expiring Soon reads.

Thirteen segments are available: the five member statuses (All Users, Customers Only, Trialing Users, Leads, Churned Users), four that describe a subscription (Expiring Soon, Cancelled, Still Inside Their Period, Paused Subscriptions, Trialing Without a Card), and four pass segments that need Time-Limited Passes.

Plan ID narrows rather than replaces: Customers Only plus a plan reaches people paying for it now, Churned Users plus a plan reaches people who held it and left. It is refused for Leads, who never subscribed, and for the pass segments, whose plan is implied by the window.

An auto-renewing subscription is never Expiring Soon. A subscription's end date is rewritten to the new period end on every renewal, so a date alone describes the next invoice rather than an expiry — treating it as one would sweep every monthly subscriber into the segment once a month. A member is counted only once their access genuinely lapses.

Run Preview before Send. A broadcast cannot be recalled, and the Send response reports what was addressed, not what was delivered — watch the broadcast.completed trigger for the tallies.

Error envelope. Any non-2xx response is translated into an n8n NodeApiError whose message carries error.message and whose description carries error.remediation + error.docs_url. Branch on error.code (TOKEN_MISSING_ABILITY, TENANT_MISMATCH, etc.) in downstream IF nodes.

Plan writes and Pass Series — 2.0.0

Plan → Create and Plan → Update now take a Plan Kind, and the fields below it change to match: Recurring Subscription (billing cycle, trial, renewal), Time-Limited Pass (timezone, recurrence, sales cutoff, access windows) or Pass Series (a slate of other pass plans' windows).

Plan → Create did not work before 2.0.0

It sent currency where the API expects currency_id, a billing cycle value outside the API's enum, and never sent the required resources — so every call returned 422. There was no working workflow to break, which is why this change carries no migration.

Building a Pass Series

A series points at windows that already exist on your pass plans:

  1. Pass Window → List — the new resource. Returns each window's ID, local range, status, on-sale state and holder count. Filter by plan, status, on-sale-only or date range.
  2. Plan → Create with Plan Kind → Pass Series, pasting those IDs into Pass Window IDs as a comma-separated list.
  3. Optionally add Automatic Inclusion Rules — a repeating collection. A rule keeps matching after the save: a window scheduled later joins the slate and is granted to everyone already holding the series, at no charge.

Resource IDs is optional on a series and means a lounge the holder keeps for the whole span; each window already grants its own plan's resources.

Fallback with built-in nodes

If you cannot use the Subscriby node (a locked-down instance, a policy that disables community nodes entirely, or an older n8n version), the integration still works with n8n's built-in HTTP Request + Webhook nodes.

  1. Start the workflow with a Webhook node; copy its production URL.
  2. In Subscriby: Settings → Webhooks → New endpoint. Paste the n8n URL, pick events, save. Store the plaintext secret.
  3. After the Webhook node add a Function node that verifies SB-Signature against the secret:
const crypto = require("crypto");
const header = $json.headers["sb-signature"] || "";
const [tPart, v1Part] = header.split(",");
const t = tPart.split("=")[1];
const v1 = v1Part.split("=")[1];
const expected = crypto
  .createHmac("sha256", "whsec_your_secret")
  .update(`${t}.${JSON.stringify($json.body)}`)
  .digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1))
  ? [$json]
  : [];

Caveat: n8n re-serializes the body. For strict signature verification enable the Webhook node's Raw Body option so you can verify against the exact bytes Subscriby signed.

Recipes

Prebuilt workflow ideas combining the Subscriby Trigger and action nodes with common downstream integrations. Swap the destination node for whatever service fits your stack.

Revenue ops

New subscriber → welcome email

  • Trigger node: subscription.created.
  • Action: Mailjet / Resend / Postmark node → send a "Welcome" email using the subscriber's email field. Most members have no email — they join through a bot and are never asked for one. billing_email is often the only address on file, and it is unverified, so treat it as identification rather than a consented mailing address.

New subscriber → CRM upsert

  • Trigger node: subscription.created.
  • Action: HubSpot / Pipedrive / Attio node → create-or-update contact; map plan name + MRR fields.

Churn → Slack alert

  • Trigger node: subscription.cancelled or subscription.expired.
  • Action: Slack node → post in #churn-watch with subscriber handle, plan, and days-subscribed.

Failed payment → Slack + follow-up email

  • Trigger node: payment.failed.
  • Action 1: Slack node → post in #revenue-ops.
  • Action 2: Wait node (12 hours) → Subscriby action node Get Subscription to re-check state. If still unpaid, send a Mailjet reminder with a payment-update link.

Past due → automated drip

  • Trigger node: subscription.past_due.
  • Action: Mailjet / ActiveCampaign node → enroll in a sequence: day 1 "payment failed", day 3 "reminder", day 7 "last chance".

Trial converting → personal nudge

  • Trigger node: subscription.trial_converting.
  • Action: Slack node → DM the creator with the subscriber's profile link so they can intervene before the trial flips to paid.

Access codes

Access-code batch generated → Airtable export

  • Trigger node: access_code.generated.
  • Action: Airtable node → append a row with batch metadata (plan, count, expiry).

Access-code redeemed → Google Sheet log

  • Trigger node: access_code.redeemed.
  • Action: Google Sheets node → append a row with subscriber id, plan id, masked code, timestamp.

Gift campaign → generate + DM

  • Trigger: Airtable trigger on a new "Influencer List" row.
  • Action 1: Subscriby action node Bulk Generate Access Codes (1 code, export_type=file).
  • Action 2: Subscriby action node Get Deep Link with access_code=<code>.
  • Action 3: Slack / Gmail node → send the influencer the one-tap bot link.

Team + audit

Member banned → Telegram ops chat

  • Trigger node: member.banned.
  • Action: Telegram node → send to an ops chat with reason + the ban-issuing admin's name.

Team role changed → audit trail

  • Trigger node: team.member.role_changed.
  • Action: Notion node → append a database entry with old/new role, actor, timestamp.

Suspicious activity → auto-revoke token

  • Trigger: Schedule trigger (hourly).
  • Action 1: Subscriby action node List Activity, filter for actor_kind = 'mcp' entries on high-value resources using an IF node.
  • Action 2: If count exceeds threshold, Subscriby action node Revoke Token on the flagged token id + Slack alert.

Billing

Grace-period warning → creator heads-up

  • Trigger node: billing.grace_period_warning.
  • Action: Gmail / Mailjet node → email the account owner with a link to /settings/billing before the grace window elapses.

Account locked → ops escalation

  • Trigger node: billing.account_locked.
  • Action 1: PagerDuty node → create incident.
  • Action 2: Slack node → post in #oncall with tier cycle and last successful payment date.

Tier upgraded → CRM annotation + welcome pack

  • Trigger node: billing.tier_upgraded.
  • Action 1: HubSpot node → update lifecycle stage to "paid".
  • Action 2: Gmail / Notion node → send the creator the tier-specific onboarding playbook.

Analytics & reporting

Weekly revenue digest

  • Trigger: Schedule trigger (every Monday 09:00).
  • Action 1: Subscriby action node Get Dashboard with period=7d.
  • Action 2: Subscriby action node Get Transaction Breakdown with dimension=payment_provider, period=7d.
  • Action 3: Gmail / Slack node → send digest combining both results.

Plan performance → Google Sheet

  • Trigger: Schedule trigger (daily).
  • Action 1: Subscriby action node Get Plan Performance for each active project (loop with SplitInBatches node).
  • Action 2: Google Sheets node → append rows (one per plan) for the finance dashboard.

Month-end close → earnings statement

  • Trigger: Schedule trigger (1st of each month 06:00).
  • Action 1: Subscriby action node Get Earnings with granularity=day for the previous month.
  • Action 2: HTTP Request node (DocRaptor) → generate PDF → Gmail node to accounting.

Integrations hygiene

Onboarding checklist

  • Trigger node: member.trial_joined.
  • Action 1: HubSpot node → start "Trial onboarding" sequence.
  • Action 2: Wait node (3 days).
  • Action 3: Subscriby action node Get Member to check status; if still trialing, send a reminder.

Test webhook endpoint on deploy

  • Trigger: GitHub trigger (release published).
  • Action: Subscriby action node Test Webhook Endpoint against every active endpoint (loop with SplitInBatches). Slack node → post summary.

Rotate webhook secret → secret manager

  • Trigger: Schedule trigger (every 90 days).
  • Action 1: Subscriby action node Rotate Webhook Secret on the endpoint.
  • Action 2: HTTP Request node → write the fresh secret into HashiCorp Vault / AWS Secrets Manager.
  • Action 3: Slack node → notify #platform that the rotation landed.

Source

The node package is maintained at github.com/envigoinnovations/subscriby-n8n and published to npm as n8n-nodes-subscriby. See the CHANGELOG for per-version deltas.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request