Why filled-in custom fields still vanish from your HaloPSA ticket
A step by step build for MSPs who want to email customers a form and pull their answers straight onto a HaloPSA ticket or opportunity
The short version
This HaloPSA tutorial builds a customer facing form using custom fields, a field group, an action and the link to user action email variable. It also covers the common trap where filled-in data never appears on the ticket because the field group was never added to the ticket type's own field list.
What you'll take away
-
Custom fields over system fields
The speaker deliberately builds this with custom fields rather than system fields because they are static, uniform, and easier to demonstrate and control.
-
One field group, reused everywhere
Group all the customer facing fields once under Tickets, Field Groups, then attach that single group to both the action and the ticket type instead of adding fields multiple times.
-
The ID you must copy from the URL
After saving an action, HaloPSA shows its ID in the browser URL as config tickets outcomes with an ID parameter. You need that number to build the email variable.
-
The link to user action variable
Typing dollar sign, link to user action, then the action ID inside curly brackets in an email template turns any link into a live form for the customer to fill in.
-
Data can vanish even after a successful save
HaloPSA can confirm the action was completed while the captured answers are nowhere visible on the ticket, because the field group was never added to the ticket type's own field list.
-
Fields can hide on the wrong tab
Even once fields show up, some can land under Sales Info instead of the tab you expect. Custom Objects, Custom Fields lets you set which tab each field belongs to.
Key insights from the episode
-
Build custom fields for the form data first, then group them under Configuration, Custom Objects, Custom Fields before touching the action.
-
Create a Field Group under Tickets, Field Groups and set end user visibility to required so customers must fill it in.
-
Give the new action a low sequence number so it appears at the top of the ticket's action list.
-
You must tick allow users to use this action or the customer will never be able to submit the form.
-
Grab the action ID from the URL immediately after saving it, HaloPSA does not surface it anywhere else in the interface.
-
Set send an email to yes on the action and pick your custom email template so the button actually emails the customer.
-
Add the same field group to the ticket type's own field list under Configuration, Sales, Opportunity Types, otherwise completed answers never appear on the ticket.
-
Check each custom field's tab setting under Custom Objects, Custom Fields, since some fields default onto Sales Info instead of your intended tab.
Questions people actually ask
How do I send a customer a form to fill in using HaloPSA?
Create custom fields for the data you need, group them into a Field Group under Tickets, Field Groups, then attach that group to a new action. Add the link to user action variable to an email template pointing at that action's ID, and the customer gets a link that opens the form.
What is the link to user action variable in HaloPSA?
It is an email template variable written as a dollar sign, the words link to user action, and the action's ID inside curly brackets. Inserting it as a link lets a customer open a specific action and fill in its fields directly, without logging into a portal.
Where do I find an action's ID in HaloPSA?
Click into the action under Configuration and check the browser URL. It reads config tickets outcomes with an ID parameter followed by an integer, and that number is what you put inside the link to user action variable.
Why is the data my customer submitted not showing on the HaloPSA ticket?
The action can complete successfully while the custom fields still are not on the ticket type's own field list. Go to Configuration, Sales, Opportunity Types (or the equivalent for your ticket type), open Field List, and add the same field group you used on the action.
Why do some HaloPSA custom fields show up under the wrong tab?
Each custom field has its own tab setting under Configuration, Custom Objects, Custom Fields. If a field is set to Sales Info it will appear there rather than in the separate tab you built for the form, so check and correct the tab per field.
Should I use custom fields or system fields for a HaloPSA customer form?
The video recommends custom fields because they give you a static, uniform data set with IDs you control, which is simpler to build and troubleshoot than leveraging existing system fields.
Can I use HaloPSA's self-service portal instead of emailing a link to user action?
Yes, tickets can be exposed on the self-service portal, but this tutorial specifically covers emailing a brand new customer a link so they can fill in information without portal access.
Full transcript
2,849 words
Read full transcript
Collapse
Full transcript
2,849 words
Connor: Hello, I'm back for part two of either three or four, I'm not sure yet, but essentially today we are continuing on from the last video where I said let's start to automate your entire business process. Now, before we can automate your entire business process, what we need to do is capture some data that we can start to leverage in the automation.
So in the demonstration that I'm working with, I'm sending a form to my customers, they are filling in the form, I am then getting it back inside of Halo, and I'm then running a runbook based on that data. So today we're going to be leveraging the link to user action, which is how we can send a form to our customers that they need to update. We're going to be looking at the workflow and looking at a quick email template, is going to be really basic just to be clear. And then hopefully string in some of this mess together.
So I'm just going to show you first of all what it is we're going to create, and then hopefully we'll jump in and get it made together pretty quickly. I'm just going to change scenes over here to this view here.
So the last video I demonstrated that I can send this form to my customers, they can fill out their accounts information and away they go. Um, so it's accounts first name, last name, some boring stuff that nobody really cares about. It's kind of a one-off task. But essentially today we're going to want to leverage and create this form.
So what I recommend doing, because it makes it easier for everyone involved, is we basically start creating custom fields that way we know where they are, we know their IDs, we're not having to look it up all the time. It's quite a static or uniform data set that we control. We can leverage system fields, but it just becomes a little bit more complicated to demonstrate and explain. So that's why we're going to be using custom fields. And just to be clear, in my production environment, these are all custom fields, so you're not gaining or losing anything because I'm being slightly lazy and doing this way. I just think it's easier to control.
So the first thing we need to do is go to a Halo instance, so this is one of my sandbox environments. It's going to make that full screen and zoom in a little bit. And what we need to do is go to Configuration in the bottom left, we need to go to Custom Objects, Custom Fields, and then if you've got a lot of them like I do, go to Page Two. And this way you will find the bottom of the custom fields. And then we basically need to start creating some custom fields.
Now, I'm not going to create them all right now. What I will do in the description underneath this video is type in all of the custom fields you should make and what they are. So essentially, phone number is just text with an integer. What we need to do is make all of these custom fields: accounts first name, last name, email address, VAT number, address line one, two, three, four, zip code, phone number, et cetera.
Once we have all of those custom fields, what I recommend doing is to go to Tickets, um, Ticket, and why my head field group, there we go, Field Groups. And we need to make a new field group in the top right called, um, Capture, to call it Capture Billing Information, Information. There we go, Information. Sweet.
Once you've done that, we can go to the Defaults Tab and we could say End User Visibility, so if the end user sees this, they're always going to be required. And due to Ticket Visibility, not visible. They don't need to see after they've done it. Agent Action Visibility, not required, not required. And show in a separate tab when they fill the information out, let us see it on a separate tab.
Cool. Then the Field List. So what fields do we want in this field group? Well, what we need is, and now we'll open this on another screen so I can tell you what we need. Please Hold the Line. Tickets Actions.
We need is, move this mic a little bit. We need to add Accounts, First Name. We need to add Accounts Last Name. We need to add Accounts Email Address. We need to add Currency, which actually doesn't matter right now. We need to add VAT number. We need to add Address Line One, Line Two, Line Three and Line Four. And what you want to make sure that you see is where it says CF and then Address Line One, Two, Three, Four, that way we know they're custom fields.
Um, and then we're also going to add in here Phone Number, and again I'm looking for CF Phone Number, like so. So we have Accounts First, Accounts Last, Accounts Email Address, VAT number, and if you're American or Canadian, don't worry about it, just skip over this one. And then Address Line One, Two, Three and Four. And actually, I'm just going to add in here Zip and Postcode as well, part of me, Zip Postcode as well. And save that there, like so.
That is now a field group.
Then we're gonna go and go ahead and make an action. So I'm going to make an action and I'm going to make a new Matcher action called Capture Business Billing Information. You're going to give that the outcome, and the best and the button name. I'm going to put this as Sequence One. This is so it is the first thing in the list of actions at the top of the ticket.
The button icon is very important, as always, and I'm just going to pick in this scenario an open bell. Doesn't matter, you pick something that makes sense to you. And the default colour, I'm going to match my t-shirt, which is probably in the middle between these two. So there we go, custom colour of pink.
And what's really important is that we say allow users to use this action. And then I'm going to go to Field List. I'm going to go to Edit. I'm going to add a group of fields, and I'm going to capture, add the group Capture Billing Information, because that is what we created earlier with all of those custom fields.
And I'm going to go ahead and click Save.
I'm then just going to jump into a workflow just to test this is working. What I'm going to do is just press Edit, go to the Details Tab, and it'll say Agent Actions Allowed at any step in the workflow. And we're going to add in the action Capture Business Billing Information and go ahead and click Save.
So just to quickly recap, we've made some custom fields in the system. We've made an action with all those custom fields on it. We're lazy and don't want to do it multiple times if we need to. So before we made the action, we made a field group and added that field group to the action. Either way works, doesn't really matter.
Then we're going to go to the CRM. I'm going to go to an opportunity, and you'll then see now an opportunity that Capture Business Information button at the top. Why is this here? How did this get here? Well, I went to the workflow to keep, workflows, and in mine I used the MSP Opportunity Workflow, and I said here, put this at every step in that workflow.
And as you'll see, I already had a ticket open that was using the MSP Opportunity Workflow. So now we have this Capture Business Billing Information action where it shows all of these custom fields, which is fantastic.
The problem is we can't get this to our customer just yet. So what we need to go ahead and do is make an email template. Now, before we can do that, we need to grab one very important piece of information, and that is we need to capture the ID of that action. So if I just press F11 and jump out a little bit, you will see that, um, in the URL at the top it will say, uh, Config Tickets Outcomes, question mark ID equals, and then an integer. In my case, 60. Now, whenever you click on an action inside of Halo, you will see the ID in the URL.
We need to capture that number. So just park it in your brain. So for me, that is ID number 60.
Then we're going to go to Email Templates. We're going to make a custom template, and I'm going to make a new one. Let me just tie this up a little bit. Sorry, I've been testing before this. Fill me in that can also be deleted. Let's use a new custom email template. So let's go ahead and click New in the top right for me, and we're going to call this, uh, Capture Business Information, and I'm just going to put in YouTube here so we know we've done that together.
Email Subject: Please provide business information. Renada doesn't really matter. And I'm just going to un-toggle this HTML editor. And side note, don't use that editor, it sucks. Moving on. So we just want to make sure that we can leverage, um, that action basically by using an email template.
So anyway, I'm just going to say, Hi, please use the link below to fill out your business information. Again, make it your own, make it pretty. And I'm just going to do a Click Here text, okay?
I'm going to highlight that text, and I'm going to go to the top right and click Insert a Link. Now, this is where we're going to leverage the Link to User Action variable. So I'm going to do here is type in the dollar symbol, Shift and 4 on my keyboard. And then I'm going to type in the following words: link to user action. I'll put this in the comments below or description below as well.
I'm going to do two curly brackets, so one open and one close. And in the middle of those brackets, what we're going to do is add in the ID of the action that we took a minute ago. So that in my case was number 60. And I'm also going to click Open in New Tab and then click Insert.
Now, as you probably saw a second ago, in my live environment, I do something similar to this. So I've just played a lot with the HTML editor and just made it look pretty, um, by now adding a button in and adding some variables in. But for now, we're just making it really super clean and simple.
So please use the link below to fill out your business information, and then a Click Here, which has a link to that variable. And then when I go to the action Capture Business Billing Information, I want to go to the Field List. Now, I don't want to go to Defaults, and I want to do Send an Email equals Yes. And then I want to make sure I select the Email Template Capture Business Information, and in my case, hyphen YouTube.
This now means when I go back to that ticket and press the action again, you will now see that it is ready to email me. So if I go ahead and click Send and then click Click Here, it should open up in another window. And as you can see, it has all of the custom fields that we did a minute ago, and they are required to be filled out.
Now, if I just go ahead and type in Connor here and do Connor Fagan, Connor@renada.co.uk. VAT number one two three four five six. Uh, fill up this address information very quickly, so 64 Church Gate UK one two three one two three. And press Save. You're about to know it's a problem. So that action has been successfully added to the ticket.
And if I refresh this ticket, you will see that it has indeed been completed. But what I don't think we're going to find is that information anywhere on the ticket.
Now, this is a problem that I run into all the time because I'm a silly sausage and forget to do it. But essentially, what you need to do is go to Configuration. You need to find the Ticket Type you're on. So just very quickly, and I'm on the type Managed Services. I need to go to Config Sales, Opportunity Types, Managed Services, Field List. And what I need to make sure that I do is add the group of fields that exist on that action, which is Capture Billing Information, also to the root of the ticket, like so.
This will now mean if I go back to that opportunity and do a quick refresh, I should see that information somewhere. I have two of them. Where are the others hiding? They're hiding in Sales Information, as you can see down here. And the way you control that is to go to Configuration, Custom Objects, Custom Fields, Page Two in my case.
And what I'm going to do is just make sure that everything is on the tab Sales Info just for ease.
So if I go back to that ticket, the two that weren't there were in Additional Fields: Address Line Two and Accounts Email Address. So I just go to Custom Objects, Custom Fields, and Second Page. Accounts Email Address, I want to make sure that this is on Sales Info. And Address Line Two also needs to be on Sales Info, so the tab Sales Info.
And if I now go back to that CRM Opportunity, we will now find all of that information on the ticket. Now, it's completely up to you where you store this data on the ticket, and I like to keep it in a separate tab. Some people like to put it, you know, down here on the right-hand side in their own fields. Whatever works for you.
The point of this task right now is sending an email to the customer with the variable Link to User Action, sending them that form, they can then fill it out, and then you'll update the ticket. And that is all I want to cover in today's video.
Yes, you can leverage the Self-Service Portal and you can have tickets on there. We're not touching on that right now. This is purely I want to email a brand-new customer and get them to fill out some information. So that is part one or to, let's say part two of this series. And that is how we capture information inside of Halo and update a ticket using the variable Link to User Action.
In the next video, I will show you how to process all this information and leverage the runbooks. I've been Connor. Any questions, please ask me in the comment section below. And make sure you like, subscribe, and do all that YouTube fun stuff. Have a lovely day and I will see you all hopefully tomorrow, where I do part three of this video. Take care, everyone. Have a good day. I've been Connor. Goodbye.
Author
Related tutorials
Our Core Services
Offering support to enable sustainable success for your organisation.