Slack alerts for urgent Freshdesk tickets with HubSpot context
Every 15 minutes, catch new urgent Freshdesk tickets and post them to a Slack channel with the customer's open HubSpot deals and account owner.
Build me an agent workflow that alerts my account team on Slack whenever a high-stakes Freshdesk ticket comes in, enriched with HubSpot context so we know which customer is affected and how much is on the line.
Trigger: run on a cron every 15 minutes, only during business hours (weekdays 8am to 6pm in America/New_York). Keep track of when the workflow last ran so we can pass that timestamp on the next run and only look at tickets created after it.
Step 1: In Freshdesk, use Filter Tickets with a Lucene query on priority (urgent OR high) and created_since set to the last-run timestamp. For each ticket returned, use View Ticket to get full details and List Ticket Conversations to pull the thread so the agent understands what the customer is actually saying.
Step 2: For each ticket, take the requester's email and look them up in HubSpot with Get Contact (using email as the idProperty). If a contact is found, use Search Deals to pull their open deals — grab deal name, amount, stage, close date, and the deal owner. If no contact is found, note that and continue.
Step 3: For each ticket, write a 3 to 4 sentence briefing that combines: (a) the ticket problem in plain language, (b) customer context from HubSpot including lifecycle stage, open ARR or deal value, and account owner, and (c) a recommended next action based on urgency and deal size (e.g. loop in the AE directly for enterprise, or acknowledge within the hour for high-value expansion deals).
Step 4: Post one Slack message per ticket to the #cs-urgent-alerts channel using Slack Bot's Send a Message. Format the message with the customer name, priority, one-line subject, the briefing, and a deep link back to the Freshdesk ticket (https://{subdomain}.freshdesk.com/a/tickets/{id}). Tag the HubSpot deal owner in the message if we can resolve their Slack handle from their email.
Deduplication: within a single run, skip any ticket ID we have already posted about (guard against a Freshdesk filter returning the same ticket twice). Across runs, the created_since timestamp is what prevents reposts — so make sure we persist the run timestamp only after all alerts for that batch have been posted successfully.
Make the channel name, priority levels, and business hours configurable at the top of the instructions so I can tweak them without editing the whole workflow.
Additional information
What does this prompt do?
- Watches Freshdesk during business hours and picks out newly created urgent or high priority tickets.
- Pulls the requester from HubSpot so you see deal value, lifecycle stage, and account owner alongside the ticket.
- Writes a short briefing per ticket with the problem, the customer context, and a recommended next action.
- Posts one Slack message per ticket with a link back to Freshdesk, and skips anything already alerted.
What do I need to use this?
- A Freshdesk account with API access (subdomain plus API key from Profile Settings).
- A HubSpot account connected so we can look up contacts and their open deals.
- A Slack workspace and the channel where account owners should see the alerts.
How can I customize it?
- Change the schedule or the business hours window (default is every 15 minutes on weekdays).
- Adjust which priority levels or tags qualify, or filter by group, product line, or region.
- Route different customer tiers to different Slack channels, or tweak the briefing tone and length.
Frequently asked questions
Will this repost the same ticket every 15 minutes?
Do I need a paid HubSpot plan for this to work?
What if a ticket has no matching HubSpot contact?
Where does the recommended next action come from?
Can I send different tiers of customers to different Slack channels?
Related templates
Never miss an urgent customer support ticket again.
Connect Freshdesk, HubSpot, and Slack once, and Geni pings your team with the full customer picture within minutes.