• 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
  • Blog
  • Contact
  • FAQ
Product
  • Pricing
  • Demo
  • Security
  • Changelog
  • Status
Compare
  • All comparisons
  • Build vs buy
  • vs Zapier
  • vs Make
  • vs n8n
  • vs Paragon
  • vs Merge
Use Cases
  • All use cases
  • Payment failed
  • User signup fan-out
  • Churn prevention
  • Trial expired events
  • Lesson completion flows
  • Page completion triggers
  • Page visit Intercom flows
Developers
  • Documentation
  • Agents
  • API Reference
  • MCP Server
  • llms.txt
Legal
  • Terms of Service
  • Privacy Policy
  • Acceptable Use Policy
  • Cookie Policy

Use CaseBilling event routing

Payment Failed Notifications - Alert Your Whole Stack

A failed payment is never just a billing event. Ops needs an alert, customer messaging needs context, CS needs a follow-up path, and the customer may need an email right away. Meshes lets your app emit payment.failed once and reliably fan it out to Slack, Intercom, Salesforce, and Resend with retries, replay, and per-destination visibility.

Start freeView documentation

Event: payment.failed · Destinations: Slack, Intercom, Salesforce, Resend

The problem

Why this workflow breaks down without a delivery layer

Your billing system knows the card failed, but the rest of the business usually does not. Support is waiting in Salesforce, Intercom does not have the right context for customer messaging, and ops only finds out when someone notices churn rising or a customer opens a ticket.

The DIY version turns one billing event into four or five delivery paths with different payload requirements. Slack wants a formatted alert, Salesforce wants structured fields, Intercom wants the right tag, and email needs template variables. That is exactly where brittle workers and silent failures start.

Payment failures are one of the highest-urgency events in SaaS. If one downstream system misses the event because of a transient API failure or mapping bug, your revenue recovery workflow drifts out of sync immediately.

The event flow

One event in. Every downstream system stays in sync.

Each use case follows the same product story: Meshes receives the source event once, maps it to the right destinations, and keeps delivery visible when downstream APIs fail.

Event payload

payment.failed

{
  "customer_id": "cus_91ab2",
  "email": "jane@acme.io",
  "amount": 4900,
  "currency": "usd",
  "failure_reason": "card_declined",
  "retry_count": 2,
  "plan": "growth",
  "subscription_id": "sub_91ab2"
}

Slack

Meshes sends a message directly to #billing-alerts with the failed amount, plan, and retry count.

Ops gets immediate visibility into revenue risk and can inspect spikes before customers complain.

Intercom

Meshes tags the user for payment-issue messaging and support segmentation.

Intercom can trigger the right support or recovery messaging with current billing context.

Salesforce

Meshes updates payment-failure fields so Salesforce automation has reason, amount, and retry details.

CS or RevOps can create the right follow-up task without waiting for a manual sync.

Resend

Meshes sends a payment update email template directly with next-step context.

The customer gets a clear billing update fast instead of waiting for a separate worker or cron job.

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

payment.failed enters Meshes once

import MeshesEventsClient from '@mesheshq/events';

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

await meshes.emit({
  event: 'payment.failed',
  resource: 'subscription_plan',
  resource_id: 'growth',
  payload: {
    customer_id: 'cus_91ab2',
    email: 'jane@acme.io',
    amount: 4900,
    currency: 'usd',
    failure_reason: 'card_declined',
    retry_count: 2,
    plan: 'growth',
    subscription_id: 'sub_91ab2',
  },
});

Across destinations

Each downstream tool gets the context it needs

  • • Slack receives a billing alert with the failed amount, plan, and retry count.
  • • Intercom receives payment-issue context so support and lifecycle messaging can react immediately.
  • • Salesforce receives billing failure reason, retry count, and plan context for follow-up workflows.
  • • Resend receives the payment recovery email trigger with the right customer context.

On every delivery

Retries, replay, and delivery history stay built in

  • • Retries use exponential backoff with jitter per destination, so a Salesforce error does not block the Slack alert or the Resend email.
  • • Failed deliveries are captured for replay after you fix a credential, mapping, or downstream outage.
  • • Per-destination event history shows what was delivered, what failed, and which field mappings were applied.

Why this matters

Business impact, not just API plumbing

Recover revenue faster

Payment failures lose money when the signal stalls. Routing the same event to support, CRM, email, and ops at once keeps recovery workflows moving immediately.

Give every team the same context

When Slack, Salesforce, Intercom, and email all react from the same payload, you avoid conflicting customer outreach and stale billing data.

Eliminate silent failure paths

Without a delivery layer, one broken webhook can hide for days. Meshes gives you retries, dead letters, and replay before that becomes lost revenue.

Related

Keep going with docs, integrations, and deeper architecture reading

Docs

Quickstart

See the fastest path from workspace to first routed event.

Open link

Docs

Integrations & Rules

See how Meshes maps one billing event to multiple destinations with reusable actions and rules.

Open link

Integration

Slack Integration

Post billing alerts directly into the channels your team already watches.

Open link

Integration

Salesforce Integration

Update Salesforce contact fields so downstream automation can follow up.

Open link

Blog

Webhook Retry Logic Done Right

Why exponential backoff and jitter matter for revenue-critical delivery paths.

Open link

Blog

Dead Letter Queues for Webhooks

How to avoid losing failed billing events when retries are exhausted.

Open link

Compare

Meshes vs. DIY

See what it costs to own billing-event workers, retries, and replay paths yourself.

Open link

Next stepStart free or view the documentation

Ship payment-failure routing without hand-rolled workers

Route payment.failed through Meshes once and keep billing, support, CRM, and email systems aligned in real time.

Start freeView documentation