Prevent previously closed tickets from reopening.

@APaulGough

Typically a ticket that is closed will reopen because of the automate settings for the ticket pipeline.

If you go to settings - Objects - Tickets - Pipelines - select the ticket pipeline from the drop down list - Automate

On this page here is a section titled “Update ticket Status”

As you can see from the screenshot, when a customer replies to an email…the ticket status will change to “Waiting for support”

This rule does not take into account the current state of the ticket. In my case, if a customer replies to an email that is associated with a ticket in this pipeline the status of that ticket will change from whatever it is now to “Waiting for support”. It does not consider the current status of the ticket, it does not consider whether the ticket has is open or closed or if it has been closed for 5 year. If someone replies to an email thread that is in HubSpot and is associated with that ticket and it is in a pipeline with that configuration, that ticket will change status to “waiting on support”.

There are several factors that affect this:

  • association of email threads to ticket. This is a sticky subject because depending on how your users interact with email and track email in hubspot this can be really messy.
    • example. Using the google chrome sales extension with gmail that is integrated with hubspot. Depending on how the auto-associations in the sales extension are configured, the association of email to tickets can be a complete and utter nightmare.
  • Configuration of the Automate functions for the ticket pipeline
    • You can disable the update ticket status feature, but that might not be something you want to do…changing the status based on a legitmate reply from a customer is an effective way of letting an the ticket owner know that there has been activity and attention is needed on the ticket.
    • In my specific case, I was most concerned about very old tickets reopening blowing up stats and trends
      • When a ticket that is 3 years old reopens incorrectly and you close it again…the time to close stats get affected because now you have a ticket in the calculation that too 1100 days to close.
    • Archiving old tickets to a pipeline…“Support Pipeline Archive” for example…this is a different pipeline and as such can be configured with a different automate configuration, one that doesn’t change the status at all or at least not to a status that is an “Open” Status. From here you can build other workflows that take other actions…create a task, send a notification, create a new ticket with details from the original archived ticket.
      • Moving tickets to an archive pipeline can also be automated as well. Lets say you are okay with the ticket reopening for 5 days after the ticket is initially closed. This would give the customer up to 5 days to reply or respond to the last email and trigger the ticket to reopen. When the ticket has been closed for 5 days with no reply…move the ticket to an archive pipeline. If the customer replies to the email associated with that ticket, have a workflow create a new ticket, copy the body of the last email to the a note that references the original ticket, give it status of new and put it into an unassigned queue for the next agent to pick up. The original ticket remains closed and there is a new interaction created.

At the end of the day, the biggest factor in ticket / email associations seems to be related to where your email interactions with a customer happening. “Where” meaning which interface you are composing and replying to email associated with a ticket.

  • Hubspot
    • Inbox
    • Company Page
    • Contact page
    • Ticket Page
  • Email client
    • Gmail
      • with sales extension enabled
        • auto associate tickets enabled
        • auto associate tickets not enabled
      • without sales extension enabled
    • Outlook
      • with sales extension enabled
        • auto associate tickets enabled
        • auto associate tickets not enable
      • without sales extension enabled
    • Other

and a bunch of other considerations…how your email or email reply gets associated in Hubspot can vary pretty significantly. Association of email to a ticket and the configuration of a ticket pipeline if not considered properly can make managing tickets pretty unweildly.

In order to track reopened tickets…i created a series of properties and a workflow to catch these and notify me when it occurs.

  • Properties
    • Last Close Date
      • important: Created using the API with the type: datetime
    • Reopen Time (date picker)
    • Reopen Count (number)

workflow

Enroll

  • ticket in “Support Pipeline”
  • Ticket status is any of “closed”

enroll tickets in the support pipeline when they are closed

Action

  • Copy “Close date” to “Last Close Date”

Capture the exact time dd:hh:mm:ss that the ticket was closed. Important to make the “Last Close Date” value a datetime for two reasons. 1.) current time capture does not include hh:mm:ss just the date. 2.)You cannot copy a datetime value (Close Date) to a date picket value and keep the exact time. See NOTE at end for why this “Last Close Date” Can be really useful.

Delay

  • delay up to 30 days until one of the following happens
    • Property value changed
      • Close Date is unknown

30 days or whatever interval (up to 1 year minus 1 minute) you wish to assign is the limit of time that you want to allow the ticket to reopen before being archived.

Condition met if the close date changes to “unknown”. Close date = “unknown” means that the ticket has reopened.

Condition not met (i.e. the ticket did not reopenwithin the 30 day delay)

  • set property value
    • Ticket pipeline and status = "Support Archive (closed)

enrollled tickets that don’t reopen within 30 days get moved to pipeline “Support Archive” pipeline with the status closed.

Condition met

condition is met i.e. the ticket status changes to an open status (reopened)

  • Set property value
    • set Reopen time to the date of this action was executed

capture the reopen time dd hh:mm:ss is not important in this case, but can be useful in tracking the last time that the ticket reopened

  • Increase-decrease property value
    • increase Re-open Count by 1

increment the “Re-open count” by 1 when the ticket reopens. This can be helpful for troubleshooting when there are many cross association of multiple email threads associated with multiple tickets.

  • Send in-app notification

    • Ticket property ID: Ticket name reopened to Ticket owner (and whoever else you wish to know the ticket reopened)
  • Send other notifications (email slack etc…)

Send notifications to whomever you choose with the details of the ticket reopening.

End

Last Close Date: Capturing the last close date details as part of the enrollment process provides the information needed to essentially undo the reopen if the reopen happed erroneously.

Example:

A ticket that had previously been closed for 2 years…suddenly reopens because of an incorrectly associated email gets a reply that triggers a change in status. The result of this is that there is now a ticket whose time to close is 2 years which will completely skew weekly stats for time to close, even though it is not a ticket that was open that long.

Having the date time of the original close, allows you to change the status fo the ticket back to a close state and you can manually set the close date back to its original close time.

The “Last Close Date” and the “Reopen Count” can also be used as indicators that the ticket had previously been closed and reopened…or reopened multiple times.

Reopen count can also be used to help identify behavior or specific agents /employees who may not be following best practices for closing or associating tickets.

Not sure if any of this is helpful, but it has helped me track activity and problem areas in the past for troubleshooting purposes and reporting.

James

The “where” is probably going to be the new Help Desk in the future. But that’s not fixing any of this.

All of those changes have a cost. For example, if you move tickets to an archived pipeline (as we have done too), now it’s more work to find tickets regarding any particular topic, because you have to search more places. And there’s still unrelated junk getting associated to those archived tickets, which really impairs your ability to review what happened during a past interaction.

Ultimately, to be a usable ticketing system and not just a semi-usable hack, tickets need consistent IDs (i.e., fix the bug that changes the ID during a merge) that appear in the subject line of emails, association of incoming emails need to be one-to-one (i.e. based on those IDs) and not one-to-many (or one-to-everything-ever which is how it seems to work currently), closed tickets need to stay closed, and new incoming emails to closed tickets need to spawn new tickets. There’s nothing here which is difficult from a design standpoint, Hubspot just needs to decide they are actually going to build a ticketing system and not just use their generic all-purpose template with the word “Ticket” at the top.

@JDale

I don’t disagree with anything you said. I agree 100% that these things should likely be resolved and addressed in order for this to be a proper ticketing system.

Also, I agree that some of my suggestions are really hacks to work around things that are fundamentally wrong. Unfortunately, this thread based on my original post started on August 19, 2020. Since then nothing about the underlying issues or concerns that I’ve expressed or that many many others have upvoted, have been addressed. So although the suggestions might be hacks…they are intended as pragmatic suggestions for those who opt out of the alternative…which is to get a different ticketing system.

“There’s nothing here which is difficult from a design standpoint”. I think that is true…if you are designing a ticketing system. The fundemental design issues here is that HubSpot is a CRM first and a Ticketing system second. The behavior of the associations of email and tickets, makes sense if you are thinking about this from a CRM point of view. I agree with the one to one service centric concept for association. Believe me, I’ve made my thoughts known many times to their product management teams. Unfortunately. there is some functionality in here that someone somewhere along the way, thought made sense, but for the life of me I have no idea how.

My personal favorite:

  • Hubspot Integration with Gmail account enabled.
  • Google Chrome Sales Extension installed and enabled
    • Default Associations enabled for “Existing Contacts” “New Contacts” “Companies” and “Tickets”

If you compose a new message to an exisiting contact that is in Hubspot and send it. The Default Associations - Ticket, automatically associates the new email with existing tickets. Which existing tickets? The first three tickets that were ever associated with that contact. No matter how old the tickets are, not matter if they are closed or not. When I brought this up as a bug and demaning it be fixed. The response I received was…WAD. Working as designed. My feed back was…well whoever designed that should be fired. Moral of the story…don’t let people use the default associations - tickets option. But I digress.

I am not familiar with a bug related to merging ticket and ids changing.

My observation and understanding has always been the following

  • Ticket ID : 12345
  • Ticket ID : 67890

If you merge ticket 12345 into ticket 67890, everything that was associated with Ticket 12345 gets merged with Ticket 67890 and Ticket 12345 no longer exists. Is this not the case?

When you’re in ticket 12345 and merge 67890 into it, every blank field in 12345 should be replaced by the contents from 67890, and all the associated activity should be added into 12345. But overwriting the old ticket ID with the newer ticket ID is not correct merge behavior.

Conversely if you’re in 67890 and merge 12345 into it, the remaining ticket should be 67890.

There are some Ideas about this one already:

https://community.hubspot.com/t5/HubSpot-Ideas/Archiving-Ticket-IDs-when-merging-tickets/idi-p/551223

https://community.hubspot.com/t5/HubSpot-Ideas/Merge-tickets-keeping-original-ticket-ID/idi-p/286615

https://community.hubspot.com/t5/HubSpot-Ideas/Keep-Original-Ticket-IDs-as-Searchable-values-after-Ticket-Merge/idi-p/622184

Seeing as the original request is from 2020, really hoping this feature will be available soon.

Dear HubSpot Product Team,

I’m writing to suggest an improvement to the Service Hub ticketing system. Currently, tickets can be reopened if a customer replies to an email associated with a closed ticket. This can be inconvenient for our Client Services team’s workflow.

Here’s a suggestion: A new option to permanently close tickets, even if there’s further communication in the email thread, would be a valuable addition to Service Hub. This would streamline our team’s processes and ensure tickets are properly managed.

I’m confident that this change would benefit many Service Hub users. Thank you for considering this suggestion.

Yes please! I would like to set per pipeline, if a customer replies to a closed ticket, it should create a new ticket with only this specific thread/conversation and contact + company associated.

Please implement this functionality as its crucial for our service operations

With some help from a HS support person I have greatly reduced the reopening of old tickets. We call them “Zombie Tickets” as they keep coming back from the dead. The fix required that I add a little bit to my automation and I have gone from spending about 30 minutes a day of Zombie killing to virtually Zero time spend checking and killing. In the screen cap below, I added this step to my Waiting on Us phase and our Waiting on Customer phase. To get it to work quickly you have to restart the tickets that are in these queues so you can root out any zombies hiding in the ticket forest but this simple step has been like a give from God!!!
[cid:c5162008-9f26-4062-8e33-b944bb11480e]

@RodChristen any chance you can repost that screenshot? Thank you!

@RodChristen your screenshot didn’t come through – could you try to repost? Very interested to see your “Zombie Tickets” solution. I do wish Hubspot would just fix this. It’s a solved problem in every other helpdesk I’ve used.

Your image isn’t viewable, maybe you could explain what you did?

The automation is fairly simple. In your workflow add a step that checks to see if the criteria “Ticket Status has been closed”. This checks to see if the ticket was ever closed in the past. Then if it had a closure in the past the ticket will go to Closed again. There is a down side, if you want to force a ticket back open it gets a little tricky but this kills the Zombies really well.
See if this image works better than the last one I posted.
[cid:03f2177e-c404-4d3b-82e4-3ac5c47396a9]

We call the reopened tickets, “Zombie Tickets” since they were once Closed (Dead to us) and then a stray email or other activity opens the ticket back up. The solution is pretty simple with a couple caveats. I have attached a jpg of the start of the workflow (automation). To describe the fix, I have the automation look at the ticket history and if the ticket was once closed it just closes the ticket again so the repeat/Zombies are put down for good with one “Or” gate added to the beginning of the workflow. We use New, Waiting on Us, Waiting on Customer, and Closed as our phases in the workflow. I added the steps shown to the Waiting on Us and Waiting on Customer phases.

Then the first caveat, if you truly want to have a ticket reopened it might require a little extra effort but for our operation we generally only close tickets when our customer states that the problem is finished.

Second caveat, I found that when you have completed the editing of your workflow you want all the existing tickets to run through the workflow from the start. This will also close any Zombies that you have that you haven’t noticed yet.

We’ve been using this addition to our workflow for over a month and I have only seen a couple (2 or 3 tickets) that were able to outsmart the workflow and we were having a dozen or more each day. It really,


REALLY worked for us!!!

Hi Rod,

The workflow options have improved from when I originally wrote this post. That said, I agree that the workflow you provided does the ticket has reopened and it does trigger a workflow to re-close the ticket. The problem that I see here is that when a ticket re-opens and closes again, the close date changes and that will mess up your ticket stats.

Ticket 123

Created date 2024-01-01

Close date 2024-01-07

time to close: 6 days

Customer replies to an old message associated with Ticket 123 on 2024-07-01 triggering the ticket to reopen. The workflow you outlined above…detects that the ticket was previously opened and changes the status back to closed.

Ticket 123

Create date 2024-01-01

Close date 2024-07-01

Time to close: 184 days.

So the work flow works if aren’t worried about the ticket stats…but if you are concerned about ticket performance metrics…this might create some challenges for your historic reporting.

James

Image came through, thanks.

That seems like it will prevent the ticket from reopening, great. But if the ticket was reopening because the customer responded to an old email with a new inquiry, their inquiry is lost and will now not get answered, which is not a great solution.

This functionality already exists in Deals Pipeline, it would be great to have it in tickets as well. I’m having trouble with reports analyzing how long a ticket has been open, as some people keep reopening it. Blocking would be ideal.

@RodChristen wait I’m confused. How do you respond to a customer’s new inquiry when they reply back to a closed ticket? From your screenshot, it looks like you just close the request again, without actually helping them?

That is a short fall for sure. For our business, it works.

I can’t believe this thread has been going on for over 4 years now.
It reinforces that Hubspot treats Support as an afterthought. Look at how many feature improvements Sales and Marketing get in comparison.