HaloPSA can auto capture a new client and post it straight to Xero
A preview for MSP admins who still email new customers for billing details, showing what becomes possible once HaloPSA runbooks, custom actions and Xero are wired together
The short version
This is a preview of a HaloPSA automation that replaces the manual email chase for new client billing details. It shows a customer filling out a form that writes back into HaloPSA and posts straight to Xero, with the full build covered in a follow-up three-part series.
What you'll take away
-
The capture business information button
A custom action added to the ticket screen sends the customer a form instead of you emailing them manually.
-
Link to user action is doing the heavy lifting
This variable, out for a couple of months at the time of recording, lets an email button pass a customer straight to a form tied to a specific action ID.
-
HaloPSA queries its own API
The runbook authenticates to the HaloPSA API endpoint and posts data back into itself rather than using internal cross referencing, because internal queries were prone to bugs.
-
Currency does not write back to Xero yet
A gap in the endpoint means currency updates do not sync, though Halo confirmed a fix is coming in the next beta.
-
Three moving parts stacked together
Custom fields, an integration runbook and a workflow all have to exist before the form-to-Xero handoff works.
-
The log proves the system did it, not you
Xero shows the update as edited by system generated rather than edited by the user, confirming the automation ran end to end.
Key insights from the episode
-
Build a custom action with end users allowed and a unique default email template to trigger the customer-facing form.
-
Use the link to user action variable inside an email template button to route customers to a specific action ID, for example action 66.
-
Query the HaloPSA API endpoint directly from the runbook rather than referencing internal ticket data, since internal queries can be buggy.
-
Pair the runbook with a workflow state change so the automation only fires once the customer has updated the linked field.
-
Set up the Xero integration with webhooks so client detail updates from the runbook push straight through automatically.
-
Check the Xero edit log after a run, it should read edited by system generated, confirming the automation and not a person made the change.
-
Currency fields do not currently write back to Xero from this setup, treat that as a known gap until the fix lands.
Questions people actually ask
How do I automatically capture new customer billing information in HaloPSA?
Build a custom action with an email template containing a button that uses the link to user action variable, pointing to a second action that holds the form fields you want the customer to complete. When the customer submits it, a runbook writes the data back into HaloPSA and, if Xero is integrated with webhooks, posts it straight through.
What is the link to user action variable in HaloPSA?
It is a variable, available for a couple of months at the time this video was recorded, that lets you embed a button in an email pointing to a specific HaloPSA action ID. The customer clicks it, fills out the linked form, and the data writes back to the ticket automatically.
Can HaloPSA update Xero automatically when a customer fills out a form?
Yes, if Xero is integrated with webhooks, updating the client details tab inside HaloPSA through a runbook will push those changes straight to Xero. In the demo the Xero edit log showed the change as edited by system generated rather than made manually.
Why would I query the HaloPSA API from inside a HaloPSA runbook?
Doing this gives you full control over the data flow and avoids bugs that can occur when a runbook queries information internally within Halo. The runbook authenticates to the Halo API endpoint, pulls the ticket data, then posts it back into Halo.
Does HaloPSA sync currency changes to Xero automatically?
Not at the time of this video, currency was missing from the write-back endpoint, so it had to be handled manually. Halo confirmed this was being added in the next beta release.
What HaloPSA features are needed to build this kind of customer onboarding automation?
You need a custom action with custom fields, the link to user action variable, an integration runbook, and a workflow to trigger the automation once the customer updates the linked field. All four pieces work together to move data from a form into HaloPSA and out to connected systems like Xero.
Full transcript
2,197 words
Read full transcript
Collapse
Full transcript
2,197 words
Connor: Hello, happy Friday. Today I am going to dangle that carrot. I finally finished an internal product I've been working on for the past week or so, on and off here and there, to essentially automate something that has been a minor problem to me. Essentially, whenever I sell consultation or one of my services to a customer, you have to go through a sales cycle, right? We all know this. As part of that sales cycle, I was capturing their business information. So I was pinging them an email saying, hey, can you know, who to email accounts, business address, and just a few other bits of billing-related information. Now it probably took me two minutes to send an email and then three minutes to update it in Xero and inside of Halo. It wasn't a massive thing, but I'm inherently lazy. So what I've done with the help from HaloPSA, thank you again, Morgan, for your time the other day, and pure determination is the reality of it and manage the leverage them on books. I'm not going to go and show you how it's all configured today. I will skim the surface with it, but I am going to make probably a three-part series next week, or start it next week, on how I've set up all of these moving parts. But essentially, what I've leveraged is a custom action, custom fields, the link to user action, which is a new variable that's been out for a couple of months now, I think, integration runbooks, and then workflows. So quite a lot of moving parts, but once it's built, it is very, very, very exciting in my opinion. And this can be leveraged for more than what I'm going to show you today. This is very much the starting foundation. And I just want to get it out so you guys can see what is possible inside of Halo in case it is a problem you're currently faced with. And this can be leveraged to create users in Office 365. It can create customers in Pax8. This really is the starting foundation of automation. And I just want to show you what I've done to alleviate a problem that I have and how we're now going to be building upon that foundation. So I'm just going to switch the scene over to my Halo screen over here.
So this is currently Bart Simpson. He's from the company name The Simpsons, and he's accepted an opportunity with me. Ignore the status being closed. I'm keeping things out of the way and tidy. But essentially, it's now down to me to invoice him and get him all processed through our system. So what I do as part of my cycle is I do here, create a new customer in the system. Yeah, he's an active customer, but I don't have the main site name or the address yet. I don't have the phone number. I don't really have any of this information. When we look at billing, there is nothing here. It's not linked to Xero. It's just a brand new customer. So I go ahead and click save.
This is when I would now go and email the customer and go, great, we've now made you in Xero, but I now need to you know, complete all this information. Do that manual work. But what we've created is a capture business information button that you will see in the top left here. What this does when I click send, it's going to send an email to currently myself with a nice template that I think looks nice that we've created, with a button in it. And behind this button is leveraging that link to user action variable. So if I just go ahead and click send, that will then send that to my customer. Unfortunately, I don't have Bart Simpson's email address, but I have emailed it to myself. And what I'm just going to do is simulate what would happen on that user's end so they can click that button in that email.
What they can do from that email is then fill out the form of questions that I've asked them for. So, yeah, I'm Bart Simpson. My accounts there is actually Marge Simpson. Their email address is Marge. I probably missed out margin, to be honest. marge.simpson@theSimpsons.com. Their currency is British pound sterling. That is only for UK. You can ignore that. It's not a required field. Their address line is, I'm just going to make something up here, so 64 Churchgate. I should definitely have got their address for this video. There's the email that's coming from Halo. And just to demonstrate very quickly what it looks like, this is the email that they get in their inbox. Again, it's nothing amazing. It's just quite simple. But this is the click me here button. And you'll see the token ID and the variable that's being used to pass back into Halo.
Back to here, their town is Loughborough. That is fine. Loughborough. That's region or county or whatever. It's Leicestershire. I apologise. When there's, anyway, so that should be Leicestershire. Country is going to be the United Kingdom. Their postcode is LE11 1EU for testing, and their phone number is 01123 3344.
So they will get this email. My lovely customers will hopefully fill out this information, and they will then click save.
What that will do, if you ever use link to user action, is write that information back to the ticket. This is kind of what we did before in the early stages. So if I now go back to that ticket, you will see that Bart Simpson manually filled out the accounts for. If I click the business information tab, you will see that it's pulled in all of their information here.
What you'll also notice is that it says here, automation, capture business information has finished. Now, if I go ahead and go to the customer The Simpsons, and check here, we now have the site address. If I go to billing tab, we now have all of the billing information here. I'm just going to pull and quickly open up Xero for you all.
Here we go. And to prove I didn't touch it, the log actually says edited by system generated and not edited by me. But what you'll see in here inside of Xero is I've now got their postal address and their street address. I've kept them the same in mind because it's very rare I'll be doing different. But what you'll notice if I click edit is that it has wrote back the currency and the address information and then the contact details, the email address. And slight foible there, currency won't write back yet. And if you saw an email coming two minutes ago, that was Tim from Halo saying he's adding that into the next beta. So now with my form currency, we'll also write back and update Xero. And it was missing from the endpoint. That's now been added. Tim's a legend. Thank you, Tim. Love you long time.
But essentially, that is what we do now. So we have the ability from inside of Halo to send a customer a form. They can update the form. It will write back to Halo. It will update the customer contacts page inside of Halo, and then post that instantly to Xero. Now I'm going to quickly show you how I've done this, but I will do a three-part series as mentioned next week, showing you how and going through how to build this all out.
But essentially, the first thing you need to know is that I've made two actions, basically. I've made one action which is called capture business information. And what that action says is yes, do that. Yes, end users are allowed to use this action. And in the defaults, I've given a unique email template.
That email template that exists over here is a custom email template. And within this email template, it has a button. And that button has a URL of link to user action and then bracket 66.
And that is because I have the action just go to 66. I have the action button called manual account form, which has the fields on it that I want the customer to update. On that form, then what we have is we have a runbook. Now I'll do a very quick level overview as I mentioned before to tell you how this is possible. But what I'm actually doing here is I am querying—brace yourselves—I am querying the HaloPSA API endpoint. I am getting information from the API, and then I'm posting back from the API back into Halo. So I'm basically using Halo to query its own API, then posting back to Halo. It's a little bit gross, and the reason I've done this is just so I've got complete control over it. And I was advised there can be some bugs when you're trying to query within itself. So this is what I've done. I've basically authenticated to my Halo API endpoint, and I then have a few methods. So I have, basically, get information from the ticket. And these are all the variables that I've pulled. And again, I'll go through this slower. But I'm basically pulling the account first name, the address line, all from that custom action with those custom fields. And I then basically, I'm updating the client details with the information that I've captured from that form.
And this is all housed inside a workflow. This is currently in test mode. It's a bit discussed, and it probably offends me more than you. But we basically have opportunity workflow. I know it's a little bit crazy. Give me a second. Let me refresh.
We have this workflow which basically says capture business information. When it moves there, go to this state. And once that field has been updated by the customer, then move to this step, run the automation and update the custom information tab. And because Xero is set up with an integration using webhooks, it then writes that back to Xero. I'm excited about this. This is, again, it's something I knew about in the past, never really had the time to sink into, you know, fully testing it and getting it right. But this is the start of being able to automate everything. So one project that I started almost two years ago at an MSP I was at, we're starting to build a tool for my sales team so that when they sell something or they sign up a new customer, they can basically fill out all the information and it will go and make all the accounts where they need to be. Make them in IT Glue, Pax8, Acronis, you know, our CRM, you know, whatever. And it will just fire it out everywhere and give me a uniform dataset. With Halo having this runbooks, now I always knew it was possible. There's never really knew how to do it. And this is now fully possible. It's not not that complicated once you get your head around it. And the video I did before this was an hour long. So it is a lot of moving parts. But once you have that foundation, you can really start cooking on gas, if you will, and really start to leverage it. And so that was just, I wanted to throw a video out to just kind of plant the seed, dangle the carrot, to say we're now able to do this. It is now fully possible. And next week, I will show you all how to do it. As always, I've been Connor. If there is anything we can help with, please feel free to reach out to us, and have a lovely day. And I'll catch you all soon. Cheers, bye-bye.
Author
Related tutorials
Our Core Services
Offering support to enable sustainable success for your organisation.