payment.failedtrial.expireduser.signup|Actionssend_messageThe event names shown here are examples. In Meshes, event types are fully customized for each organization.
What you can do
Create the Discord connection in Meshes with the bot authorization flow. Meshes uses that server authorization to load the available text and announcement channels so rules can target the live channel you want.
Discord works well when the next action starts with a human seeing the signal. Billing alerts, signup activity, trial deadlines, and escalation-worthy events all become more useful when they land in the channel the right team already watches.
Meshes keeps that Discord routing inside the event layer. You add the Meshes bot to your server, choose the destination channel in the rule builder, set the embed title and message template, and let Meshes handle delivery retries and event history when Discord needs a second attempt.
send_messagePost an event-driven Discord embed with a required title and templated body to the selected channel with the context your team needs to react quickly.
Common use cases
These are the workflows where this destination tends to matter first. The point is to keep the product event, the destination action, and the operational retry path in one place.
Use payment.failed and related revenue-risk events to notify ops or support in Discord the moment follow-up matters.
Send user.signup, activation, or expansion signals into the Discord channels where the team tracks live product momentum.
Use Discord when the people watching the event stream already collaborate there and need a concise, templated update instead of a custom dashboard.
Let Meshes own the destination channel, message template, retries, and delivery visibility instead of baking that logic into event handlers.
How it works
In Meshes, the operating model is simple: create the connection in the workspace, create the rule, then let the event delivery layer handle the last mile.
Create the Discord connection in Meshes, authorize the Meshes bot for the server you want, and confirm the expected channels appear in connection action data.
Create rules for events like payment.failed or user.signup, choose send_message, select the Discord channel, set the embed title, and write the template Meshes should render.
Emit the product event from your app or use Send Test Event in Meshes. Meshes renders the Discord embed title and body, retries transient failures, and records delivery history for review.
Event example
import MeshesEventsClient from '@mesheshq/events';
const meshes = new MeshesEventsClient(
process.env.WORKSPACE_PUBLISHABLE_KEY!,
);
await meshes.emit({
event: 'payment.failed',
resource: 'subscription',
resource_id: 'sub_91ab2',
payload: {
email: 'alex@northstar.io',
plan: 'growth',
failure_reason: 'card_declined',
retry_at: '2026-04-03T09:00:00Z',
},
});Connection model
Create the Discord connection in Meshes with the bot authorization flow. Meshes uses that server authorization to load the available text and announcement channels so rules can target the live channel you want.
Why Meshes
The benefit is not just that the destination is supported. It is that the destination sits inside the same fan-out, retry, replay, and delivery-visibility layer as the rest of your stack.
The same product event can notify Discord while also updating CRM, support, and lifecycle tools without each destination inventing its own delivery path.
If Discord throttles or has a transient issue, Meshes preserves the attempt and retries so the message is less likely to vanish when the team needs it.
Meshes renders the Discord message directly from the event payload, so the notification reflects the same source data your other rules already use.
Keep exploring
These links are the next layer down: concrete patterns, supporting documentation, and the build-vs-buy context that usually comes up during evaluation.
Catalog
Return to the integrations catalog and compare Discord with the rest of the Meshes destination surface.
Open linkDocs
See the Discord connection flow, channel selection, embed title setup, message templating, and delivery notes in the product docs.
Open linkpayment.failed once, let Meshes render and deliver the Discord message, and keep urgent internal signals visible when the team needs to react.