Turn expiring free trials into a ranked sales worklist
Every weekday morning, your reps get a ranked list of trials ending in the next five days, with call talking points and a flag on anyone with no card on file.
Every weekday at 8am, build a prioritized trial conversion worklist for my sales and customer success team from Chargebee, enrich it with HubSpot, and post it to Slack. The goal is that no trial reaches its end date without a named rep knowing about it and having something specific to say.
Start with Chargebee "List Subscriptions" to pull every subscription whose status is in_trial and whose trial_end falls within the next five days. Chargebee timestamps are Unix epoch seconds and filters use operator suffixes, so filter with status[is]=in_trial together with a trial_end range covering now through five days from now. Page through the results using the next_offset token until the list is exhausted, so a busy week does not get silently truncated at the first page.
For each subscription, read the subscription_items to get the item_price_id and quantity being trialed. This is a Product Catalog 2.0 site, so work from item_prices and not legacy plans. Then call Chargebee "Retrieve Customer" for the subscription's customer to get the billing contact email, the company name, and the payment details embedded on the customer record. Use Chargebee "Retrieve Item Price" for each distinct item price so you know its amount, currency, and billing period, since you need the period to compare plans fairly.
Work out the expected annual value for each trial: multiply the item price amount by the quantity, then normalize to a yearly figure using the item price's billing period, so a monthly price is multiplied by twelve, a quarterly price by four, and an annual price is left as is. Chargebee returns money as integers in the currency's smallest unit, so divide by 100 before showing any figure to a human. Rank the whole list by this annual value, highest first.
Determine whether each trial has a payment method on file. The customer record from "Retrieve Customer" embeds the primary card and payment method, so use that as the primary signal, and confirm with Chargebee "List Payment Sources" for the customer when the record is ambiguous. Treat any trial with no usable payment source as high urgency, because when the trial ends the first invoice fails and the account looks like a billing problem when it was really a missing card.
Enrich every account through HubSpot. Call HubSpot "Get Contact" using the billing contact email with the idProperty parameter set to email, and read the lifecycle stage and the assigned owner id. Then call HubSpot "Get Owner" with that owner id to resolve the rep's real name and email, so every trial in the digest is attributed to a person rather than an opaque id. If no contact matches the email, or the contact has no owner, keep the account in the worklist under an "Unassigned" group and say plainly that the CRM record is missing or unowned, since those are the ones most likely to be dropped.
For each account, draft two or three specific talking points for the conversion call. Base them on the actual plan and quantity they picked and on their CRM lifecycle stage, not generic sales advice. A high seat count on an entry tier is an upgrade conversation, a lead-stage contact on an enterprise tier probably needs a decision maker in the room, and a customer already marked as an opportunity needs a close plan rather than an introduction. Reference the plan name and the trial end date in the points so the rep can open the call with something concrete.
Post the digest to our sales channel with Slack Bot "Send a Message". Lead with a clearly separated urgent section listing every trial ending with no payment method on file, including the account, the end date, and the owner, since those need intervention before anything else. Below that, group the remaining accounts by owner so each rep sees only their own accounts in one place, ordered by annual value within each group. For each account show the company name, the plan and quantity, the normalized annual value, the trial end date, the lifecycle stage, and the talking points. Only include a group for a rep who actually has accounts in the window, and use Slack formatting that stays readable on mobile.
Finally, log the drafted talking points against the CRM record using HubSpot "Create Note", associated to the contact you looked up, so the outreach plan lives in HubSpot rather than only in a Slack post that scrolls away. Include the plan, the normalized annual value, the trial end date, and the payment method status in the note body. Skip the note when no matching contact was found. If Chargebee returns no trials ending in the window, post a short message saying there are no trials ending in the next five days rather than an empty digest.
What does this prompt do?
- Finds every trial ending in the next five days and works out what each account would be worth over a year, so the biggest opportunities sit at the top
- Looks each account up in your CRM to read its lifecycle stage and assigned rep, so every trial is attributed to a real person rather than landing in a shared pile
- Posts one Slack digest grouped by rep, ranked by value, with two or three specific talking points for each conversion call
- Calls out separately at the top any trial with no payment method saved, because those turn into a failed first invoice unless someone intervenes first
- Writes the talking points back onto the CRM contact record so the outreach plan lives where the rep already works
What do I need to use this?
- A Chargebee account and an API key, with trials running on your billing site
- A HubSpot account where your trial contacts exist, ideally with owners assigned so the digest can be grouped by rep
- A Slack workspace and a channel where your sales and customer success team should receive the daily digest
How can I customize it?
- Change the send time or widen the window from five days to seven or ten, depending on how long your sales cycle needs
- Send the digest to a different channel, or split it so each rep gets their own accounts as a direct message instead of one shared post
- Set a minimum annual value so small self-serve trials stay out of the list, or reorder the ranking to lead with lifecycle stage instead of value
FAQs
What happens if a trial customer is not in our CRM yet?
Does this work if we sell both monthly and annual plans?
Will it message reps who have no trials ending?
Does this contact the customer or charge their card?
Why does it flag trials with no payment method separately?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.
Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.
Stop letting trials expire without a conversation.
Give your sales and customer success team a ranked, owner-by-owner view of every trial about to end, in Slack, before the deadline instead of after it.