If you already have Xero and HubSpot subscription object in action, and then if you want to add contract to the mix, what would be the best practice?
Has anyone tried combining Xero, subscription object, and contract object together in action?
If you already have Xero and HubSpot subscription object in action, and then if you want to add contract to the mix, what would be the best practice?
Has anyone tried combining Xero, subscription object, and contract object together in action?
Hey @Nirman,
Thanks for bringing this to the Community!
I haven’t personally used the Xero integration, but after looking in the Xero Data Sync KB, I think the main caveat here is that the integration only syncs Contacts, Products, and Invoices.
Would you goal be to have subscription/contract data live in Xero as well or just HubSpot?
Sam, Community Manager
Hi @Nirman ,
It sounds like you already have Xero and the HubSpot Subscription object working together, and now you’re looking at where the Contract object should fit into that flow. That’s a good point to pause and think about the relationship between the objects rather than just adding another automation on top.
In most setups, I’d avoid making Xero, Subscription, and Contract all directly dependent on each other. I’d use the Contract as the commercial/agreement layer, and the Subscription as the ongoing billing/recurring-revenue layer.
A typical flow could look something like:
Contract → Subscription → Xero
The Contract represents what the customer agreed to. Once the contract is signed/activated, that can trigger the Subscription record. The Subscription then becomes the source for the recurring billing information that needs to be reflected in Xero.
If your current Xero → Subscription automation is already working, I’d keep that rather than rebuilding everything. Instead, add the Contract into the process at the point where the commercial agreement is actually confirmed.
For example:
Contract created → Contract signed → Create/associate Subscription → Sync relevant billing details to Xero
I’d also make sure the records are associated correctly across the customer/company level, rather than relying purely on workflow timing. That becomes particularly important if a company can have multiple contracts or subscriptions.
One thing I’d watch out for is creating duplicate subscriptions. If the Contract workflow can run more than once, add a condition such as checking whether an active Subscription already exists before creating another one.
The exact setup can vary depending on whether Xero is being used mainly for invoicing, payments, or accounting, and whether the Contract object is native/custom in your portal. But conceptually, I’d treat Contract as the agreement, Subscription as the recurring billing relationship, and Xero as the accounting/invoicing system.
If someone has already implemented all three objects together, I’d be interested in how they handled the associations and which object they used as the trigger for creating the Subscription.
Hi Nirman, good question. A few things that worked for us when we ran into something similar:
Keep HubSpot as the source of truth for the commercial relationship. Use the subscription object for the recurring billing schedule and line items, and the contract object for the agreement terms (signed date, renewal date, notice period). Link both to the same company record so reporting stays clean.
Don’t try to push subscription/contract detail into Xero. As stassey mentioned, the Xero sync only covers contacts, products, and invoices — so those records will live in HubSpot regardless. What matters is that the invoice generated from the subscription carries accurate line items, since that’s what lands in Xero.
For renewals, put the renewal date on the contract record and set a task or reminder around it. That way finance gets clean invoices from the subscription side, and the account team can see contract terms at a glance without digging through Xero.
Hope that helps!
Yes, those 3 are like puzzle pieces. I’ve not used contract object with subscription before, but if I’m not wrong, contract also collect payments automatically, isn’t it? Duplicates is also one of the things that I need to watch out and thoroughly test.
Ideally, invoice should live in Xero, but subscription and contract data in HubSpot.
@Nirman
Yeah, I’d definitely test the duplicate scenario you mentioned. I dug a bit deeper into how HubSpot handles these objects, and the key thing is that Contract and Subscription don’t necessarily have the same role in the billing process.
If you’re using HubSpot’s Connected CPQ, Billing, and Payments setup, I’d structure it so the Contract is the billing driver, while the Subscription is there for the recurring subscription information/reporting. HubSpot notes that in this setup, the Subscription record itself doesn’t power the billing.
So I’d avoid having all three systems independently trigger billing:
Contract → HubSpot billing/invoice/payment → Xero
with the Subscription associated to the Contract rather than using it as a second billing trigger.
The part I’d test carefully is the Xero sync. Xero can sync invoices and payments with HubSpot, so you want to make sure you have one system creating the invoice/payment, while the other system is syncing that information rather than creating it again.
I’d test one complete scenario in a sandbox/test setup:
1 contract → 1 subscription → 1 invoice → 1 Xero invoice → 1 payment
Then test what happens if the contract is amended, renewed, cancelled, or the workflow is re-enrolled. That should expose any duplicate invoice/payment creation pretty quickly.
One caveat: if you’re not using the Connected CPQ/Billing/Payments setup, the behavior is different, so I’d confirm that first before deciding whether Contract or Subscription should be the billing trigger.
So yes, I agree with you that duplicates are the main thing I’d watch here - but I’d solve it by giving each object/system a clearly defined role rather than having Contract + Subscription + Xero all participate in payment creation.