Catch the trials quietly dying before the card gets charged

By General Input

Open one desk each morning to see every account still in a trial, ranked by how much money is at stake against how little they have actually used.

Integrations

  • Intercom
  • Stripe
  • General Input Database

Type

App

Categories

  • Sales
  • Customer Support

Build me a trial conversion desk that my customer success team opens every morning to see which trials are quietly dying before the card gets charged, instead of finding out on renewal day. The whole point of the surface is the join between billing reality and product reality: how much money is on the line and how many days are left comes from Stripe, what the person has actually done comes from Intercom, and neither one alone tells me who to talk to today.

The main page is a single table of every account currently in a trial. Load it with the Stripe List Subscriptions operation filtered to trialing status, paginating until there are no more, and expand the customer on each subscription so I get the customer name and email without a second round trip. From each subscription work out days left from the trial end date, and trial value from the recurring price and quantity on the subscription items, converting from the smallest currency unit into a normal amount with its currency. Show the billing interval too, so a monthly trial and an annual trial are not ranked as if they were worth the same.

For each trialing customer, join to the matching person in Intercom using Search Contacts filtered on the customer email, and use Get a Contact when I open a row so the detail view has the full profile. Pull that person's product activity with List Data Events for a Contact, and the segments they fall into with List a Contact's Segments. Also check their conversation history with Search Conversations filtered to that contact, so I can see whether they have ever talked to us at all and whether anything is currently open. In the table each row should show the account, the plan and trial value, days left, the number of product events during the trial and how many distinct event types those cover, when the last event happened, their segments, and whether they have ever opened a conversation.

Rank the rows by trial value against activation, so a high value account with days left on the clock and almost no product events floats to the top as the one worth a human touch today. Fully activated trials and low value trials should sink. Make the weighting visible and adjustable in the app rather than buried in code, and let me set which event names count as activation milestones for my product, because that list is what the score and the nudge both lean on. Give me filters for accounts that have never opened a conversation with us, for days left, for a minimum trial value, and for segment, plus a toggle to hide accounts somebody has already nudged.

Opening a row shows the detail: the billing facts from Stripe, a timeline of that person's recent Intercom events, their segments, and any conversation history including the parts of an open thread pulled with Retrieve a Conversation.

Every row has a Draft a nudge button that kicks off a background agent for that person. The agent reads their recent events with List Data Events for a Contact, their segments with List a Contact's Segments, the full segment list with List All Segments so it understands what each one means, and any open conversation through Search Conversations and Retrieve a Conversation. It compares what they have done against my configured activation milestones, works out which setup step they never completed, and writes a short personal in app message referencing that specific gap rather than a generic check in. It writes the draft back into the app along with the gap it identified and a one line reason, so I can see why it wrote what it wrote. The draft lands in the app for me to edit and approve, never sent straight out.

When I approve a draft, send it as a real in app message with the Intercom Send a Message (Admin-Initiated) operation from the admin I pick, then tag the person with Tag a Contact using a trial nudge tag, then leave an internal Create a Note on a Contact recording what we nudged them about. Store the nudge history in the app database with the contact, the gap, the message that went out, who approved it and when, so the next person to open the desk can see who has already been contacted and about what, and the row shows an already nudged state with the previous message one click away.

A few things to get right. Trials with no matching Intercom person should still appear in the table, flagged as unmatched, rather than being silently dropped. Trials already set to cancel at period end should be marked, because that is a different conversation. Handle Intercom rate limits and Stripe pagination gracefully on a first load with hundreds of trials, and cache the joined rows in the app database so opening the desk in the morning is fast, with a refresh action that rebuilds it. Show days left in a way that reads at a glance, so the accounts about to convert or expire stand out from the ones with two weeks to go.

Related prompts

Explore more prompts
Let support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesLiveKit live operations console for room moderationCustomer lifecycle inspector for Loops, Stripe and PostHogChat quality review board for LiveChat support leadsCompetitor LinkedIn ad watchlist with a permanent archiveLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedIn