• Use Cases
  • Pricing
  • Security
  • Docs
Sign InStart free

The outbound integration layer for SaaS products: emit once, then let Meshes handle routing, retries, fan-out, and delivery history.

© Copyright 2026 Meshes, Inc. All Rights Reserved.

About
  • About
  • Security
  • Blog
  • Contact
  • FAQ
Product
  • Pricing
  • Demo
  • Integrations
  • Guides
  • Changelog
  • Status
Compare
  • All comparisons
  • Build vs buy
  • vs Paragon
  • vs Merge
  • vs n8n
  • vs Zapier
  • vs Make
Use Cases
  • All use cases
  • Embedded CRM sync
  • Per-tenant Slack
  • HMAC webhooks
  • Multi-env workspaces
  • Payment failed
  • User signup fan-out
  • Churn prevention
  • Trial expired events
Developers
  • Documentation
  • Agents
  • Tools
  • API Reference
  • MCP Server
  • llms.txt
Legal
  • Terms of Service
  • Privacy Policy
  • Acceptable Use Policy
  • Cookie Policy

Use CaseCancellation signals

Churn Prevention - Route Cancellation Signals Per Workspace

Cancellation events are some of the highest-signal inputs your product generates. The problem is not seeing them eventually — it is getting cancellation context into each workspace fast enough to act. Meshes routes subscription.cancelled into every tenant or internal environment with reliable delivery and per-destination history.

Start freeView documentation

Event:subscription.cancelled· Destinations:IntercomSalesforceSlack

The problem

Why this workflow breaks down without a delivery layer

A cancellation signal trapped in your billing system is too late by the time it reaches the workspace owner manually. RevOps wants the revenue context in their CRM, support wants the reason in their messaging tool, and ops wants the signal in their Slack fast enough to start offboarding or a win-back flow — and every tenant wants it in their own stack.

Teams usually patch this together with one CRM webhook, one Slack notifier, and one internal job that writes data somewhere later. The result is inconsistent timing and conflicting data across tools in every workspace, right when the account is most at risk.

If the cancellation event fails to reach one destination in one workspace, that tenant's record stays stale, the alert never lands, and their churn analysis has holes in it. Delivery guarantees belong in the event layer, not in your app.

The event flow

One event in. Every downstream system stays in sync.

Meshes receives the source event once, maps it to the right destinations per workspace, and keeps delivery visible when downstream APIs fail.

Event payload

subscription.cancelled
{
  "customer_id": "cus_5501",
  "subscription_id": "sub_5501",
  "email": "sam@bluebird.app",
  "plan": "pro",
  "reason": "missing_salesforce_sync",
  "cancellation_date": "2026-03-20",
  "mrr_lost": 249,
  "tenure_months": 14
}
Intercom

Meshes tags the user via the workspace's Intercom connection so win-back or offboarding sequences can branch on cancellation state.

Lifecycle messaging in each workspace starts from the real cancellation event instead of an export or support note.

Salesforce

Meshes updates cancellation reason, MRR impact, and date fields using the workspace's Salesforce credentials and mapping.

Whoever owns CS or RevOps inside that tenant can prioritize outreach and analyze churn with current revenue context.

Slack

Meshes sends a structured alert to the channel the workspace owner picked, with plan, reason, tenure, and MRR lost.

Each workspace sees churn signals in its own channel in real time instead of waiting for a report.

How Meshes handles it

What Meshes takes off your team's plate

Instead of maintaining separate workers, retry logic, and visibility per destination, Meshes gives you one event path, destination-aware routing, and built-in delivery guarantees.

From your product

subscription.cancelledenters Meshes once

import MeshesEventsClient from '@mesheshq/events';

const meshes = new MeshesEventsClient(
  process.env.WORKSPACE_PUBLISHABLE_KEY!,
);

await meshes.emit({
  event: 'subscription.cancelled',
  resource: 'subscription_plan',
  resource_id: 'pro',
  payload: {
    customer_id: 'cus_5501',
    subscription_id: 'sub_5501',
    email: 'sam@bluebird.app',
    plan: 'pro',
    reason: 'missing_salesforce_sync',
    cancellation_date: '2026-03-20',
    mrr_lost: 249,
    tenure_months: 14,
  },
});

Across destinations

Each downstream tool gets the context it needs

  • • Each workspace owns the rules that decide which destinations receive cancellation events and how fields get mapped.
  • • Independent retry handling means one CRM outage in one tenant never stops the Slack alert from reaching that tenant.
  • • Replay is scoped to the workspace, so re-delivering a failed cancellation does not duplicate successful deliveries elsewhere.

On every delivery

Retries, replay, and delivery history stay built in

  • • Retries are per workspace and per destination, so a provider outage in one tenant never blocks other tenants.
  • • Delivery history gives each workspace an auditable record of when the churn signal reached each tool and what happened on failure.
  • • Internal environment workspaces can stage cancellation routing against sandbox connections before touching production churn flows.

Why this matters

Business impact, not just API plumbing

Action while the signal is still fresh, in every workspace

If the right team sees the cancellation immediately, they have a chance to recover the account or at least capture the reason while the context is still fresh.

Revenue context intact, per tenant

Slack wants a human alert, Salesforce wants structured revenue fields, and Intercom wants segmentation. Routing one event cleanly keeps those views consistent inside each workspace.

Churn as an observable workflow

Cancellation routing should not be a black box. Meshes makes it clear per workspace which downstream system received the signal and which one needs attention.

Related

Docs, integrations, and deeper architecture reading

Docs

Quickstart

See the same event-routing pattern behind this cancellation workflow.

Open link

Docs

Integrations & Rules

See how Meshes routes one cancellation signal into every workspace it applies to.

Open link

Integration

Intercom Integration

Apply tags so lifecycle and support messaging can react to churn signals in each workspace.

Open link

Integration

Salesforce Integration

Update revenue and cancellation context using each workspace's own Salesforce credentials.

Open link

Integration

Slack Integration

Send churn alerts directly into whichever channel each workspace monitors.

Open link

Blog

Event Routing for SaaS

See how cancellation signals can route to different destinations based on the event itself.

Open link

Compare

Meshes vs. DIY

Compare observable churn routing with maintaining cancellation workers and queue logic yourself across tenants.

Open link

Next stepStart free or view the documentation

Make cancellation signals immediately actionable per tenant

Route subscription.cancelled through Meshes once and let every workspace — tenant or environment — keep its CS, RevOps, and lifecycle systems working from the same churn signal.

Start freeView documentation