Event: trial.ending · Destinations: Resend, Intercom, Salesforce, HubSpot
The problem
A trial-ending workflow breaks down fast when every team waits on a different job or export. Email might go out late, Intercom might not know the user is near the end of the trial, and Salesforce might never get the engagement context the rep needs.
The technical problem is not generating the event. It is delivering that signal to every downstream tool on time with the fields each one expects. When those paths drift, your conversion workflow becomes inconsistent exactly when timing matters most.
Teams often discover this after a campaign underperforms or a rep says they never saw the account in time. Reliable delivery and shared context are what make a trial-ending workflow usable in practice.
The event flow
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
{
"user_id": "usr_8803",
"email": "maria@lighthouse.io",
"trial_end_date": "2026-03-24",
"plan_viewed": "growth",
"features_used": ["exports", "alerts", "crm_sync"],
"days_active": 11
}Resend
Meshes sends a conversion email template directly with trial context and next steps.
Growth can trigger the right customer message from the actual trial-ending event instead of a delayed batch job.
Intercom
Meshes tags the user or updates context for targeted in-app messaging.
Product and support can align in-app nudges with the same trial timeline the email system sees.
Salesforce
Meshes updates engagement-related fields so reps can prioritize outreach before the window closes.
Sales sees who is active, what plan they viewed, and when the trial ends without waiting for a manual export.
HubSpot
Meshes updates lifecycle or list state for conversion-oriented workflows.
Marketing can keep audience state in sync with the real trial-ending signal.
How Meshes handles it
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
import MeshesEventsClient from '@mesheshq/events';
const meshes = new MeshesEventsClient(
process.env.WORKSPACE_PUBLISHABLE_KEY!,
);
await meshes.emit({
event: 'trial.ending',
resource: 'membership_level',
resource_id: 'growth',
payload: {
user_id: 'usr_8803',
email: 'maria@lighthouse.io',
trial_end_date: '2026-03-24',
plan_viewed: 'growth',
features_used: ['exports', 'alerts', 'crm_sync'],
days_active: 11,
},
});Across destinations
On every delivery
Why this matters
A trial-ending workflow only works if the signal arrives when the customer can still act on it. Delayed delivery erases the advantage of having the workflow at all.
Resend, Intercom, Salesforce, and HubSpot should all react from the same trial context so messaging and outreach do not contradict each other.
Cron jobs and spreadsheet exports are a poor fit for conversion signals. Event routing with retries and replay is easier to reason about and easier to operate.
Related
Docs
See the full event-routing flow behind a time-sensitive conversion use case.
Open linkDocs
See the event-ingestion pattern behind this trial-ending workflow.
Open linkIntegration
Update lifecycle state from event-driven rules instead of delayed CRM syncs.
Open linkIntegration
Tag trial-ending users so in-app messaging and support context stay current.
Open linkIntegration
Push engagement and trial context to reps before the trial window closes.
Open linkBlog
Why time-sensitive conversion workflows break when you hand-roll the delivery infrastructure.
Open linkCompare
Compare event-driven trial routing with maintaining cron jobs and webhook glue yourself.
Open link