# Bring deals in from HubSpot

> Connect a HubSpot account: its won deals come in with their customers under Deals on Bills & receivables, Plan collections fills in the New deal form, and a deal changed in HubSpot afterwards says so for you to act on.

Connect HubSpot, and your won deals come into Vestiarion with their customers, so you plan their collections without typing them again. A won deal becomes a [deal](https://www.vestiarion.xyz/docs/guides/deals) with its collection schedule only when you plan it, from the New deal form filled in for you. A deal changed in HubSpot afterwards says so, and nothing in Vestiarion changes until you do.

Vestiarion reads from HubSpot. It writes to HubSpot only once an owner or admin allows it: what each planned deal collected, in deal fields of its own ([step 6](#6-receipts-back-in-hubspot)).

Selling on Pipedrive or Zoho CRM instead? Bring the deals in [from Pipedrive](https://www.vestiarion.xyz/docs/guides/pipedrive) or [from Zoho CRM](https://www.vestiarion.xyz/docs/guides/zohocrm): the same list on Bills & receivables, and the same New deal form.

## Watch it

Under two minutes, from a deal won in HubSpot to its receipt read back in HubSpot. The steps below go through each part in full.

[Video: A deal from HubSpot, collected on Arc (1:55)](https://www.vestiarion.xyz/docs/videos/hubspot-flow.mp4)

*The live product on Arc testnet, with demo data in a HubSpot developer test account. A won 200 USD deal is planned, its 20 USDC deposit is paid from a pay link and matched by the agent, and the receipt is written back to the deal in HubSpot. Recorded Oct 13, 2026.*

**Transcript**

This workspace is connected to HubSpot. Vestiarion reads the deals you win there, and, once an owner allows it, writes back what each one collected.

A deal won in HubSpot shows up here on its own. Nothing is planned until a person plans it.

Plan collections fills the form in from HubSpot: the customer, the deal, 200 USD planned as 200 USDC.

A 10% deposit now, the rest on delivery.

Release now turns the deposit into an invoice.

Released. It is an invoice now, counted as money expected, never as cash, until it is paid.

The agent waits for Fernhill Studio to pay, and it knows the deal was sold through HubSpot.

Get paid on Arc makes a pay link. The customer sees who asks, how much, and where to send it. No account needed.

The customer pays 20 USDC from its own wallet, on Arc testnet.

Three seconds after it lands, the agent matches it. Exactly what was owed, after the invoice, from a customer who got the link.

Vestiarion writes to HubSpot after each sync. Here, we press Sync now.

HubSpot read it back the same. Collected: 20. Still owed: 0. Reconciled, with the transaction on Arc.

And this is the deal in HubSpot. Sales sees the money came in, without asking finance.

Only money confirmed on Arc counts. Connect HubSpot: vestiarion.xyz

## Before you start

- **An owner or admin** of the workspace connects HubSpot. Anyone else sees "An owner or admin connects HubSpot."
- **A HubSpot account** with deals: a developer test account works for a first try. One HubSpot account connects to one Vestiarion workspace at a time.
- **The deals' currency.** Vestiarion plans deals in USDC or EURC. A deal in US dollars is planned in USDC, and one in euros in EURC, one for one. A deal in another currency is planned in that currency only in a workspace in [shadow mode](https://www.vestiarion.xyz/docs/guides/shadow-mode), on Arc testnet; otherwise you type its total in USDC.

## 1. Connect HubSpot

Open **Settings**. Under **HubSpot**, choose **Connect HubSpot**.

The connect page has the workspace you came from already picked (if you manage several, you can pick another) and says what Vestiarion does with HubSpot's data:

- It reads the companies, contacts and deals of the account you connect: names, amounts, close dates, pipeline stages and each company's main contact email.
- It writes to HubSpot only once an owner or admin allows it: then, on each HubSpot deal planned in Vestiarion, what was collected from payments confirmed on Arc, what is still owed, the last receipt, the reconciliation status and a link to the deal in Vestiarion, in a Vestiarion property group it creates. It never changes HubSpot's own deal fields, and writes payments on Arc testnet or in shadow mode only to a HubSpot developer test account or sandbox.
- They are shown to the workspace's members and to its agent. The agent's model provider (DeepSeek, on the hosted service) may see a deal's facts to decide on its collections, under that provider's own API terms. Read DeepSeek's [API terms](https://cdn.deepseek.com/policies/en-US/deepseek-open-platform-terms-of-service.html) and [privacy policy](https://cdn.deepseek.com/policies/en-US/deepseek-privacy-policy.html).
- Vestiarion never uses HubSpot data to train or improve any AI model, and never passes it to anyone else without your workspace's say.

Tick **I agree**, then choose **Continue to HubSpot**. HubSpot asks you to pick the account and to allow access. Your agreement, with its date, is kept on the connection and in the workspace's signed ledger.

Back in Settings, the card says "HubSpot is connected. Its won deals are coming in on Bills & receivables, under Deals." The ledger records `accounting_connected`, with `provider: "hubspot"`.

If the account is already connected to another workspace, the card says "This HubSpot account is connected to another Vestiarion workspace." Disconnect it there first.

![The HubSpot card in Settings: Connected to northstar-studio.example, last synced 5 minutes ago, a link saying 2 won deals to plan, a line saying 1 planned deal changed in HubSpot since, and the Sync now and Disconnect HubSpot buttons.](https://www.vestiarion.xyz/docs/guides/hubspot-settings.png)

*Connected, with won deals to plan and one planned deal changed since.*

## 2. Which deals come in

The first sync starts as soon as you connect. It brings in your open deals, and the deals won in the last 90 days, with each deal's company and the email of that company's main contact. After that, Vestiarion asks HubSpot every 15 minutes for the deals that changed, and **Sync now** asks at once.

- **A deal won before the last 90 days** stays out, until someone changes it in HubSpot.
- **A lost deal** comes in only if Vestiarion already had it.
- **Each deal comes in once**, by its id in HubSpot, whatever changes in it.

## 3. Plan a won deal's collections

Open **Bills & receivables**. When a won deal waits to be planned, **Waiting for review** at the top names it and opens the **Receivables** tab at it. Under **Deals**, "From HubSpot: 4 won deals" lists each won deal with its company, amount, close day and stage:

- **Plan collections**, for a won deal with an amount and a company;
- why it cannot be planned, for one without: "No amount in HubSpot" or "No company in HubSpot";
- **Planned**, with **Open the deal**, for a deal you planned already. A deal is never planned twice.

Below, "Not won yet" lists the deals still open in HubSpot, for what is coming. They cannot be planned until they are won.

![From HubSpot: 4 won deals under Deals on Bills & receivables. Website rebuild for Northwind Labs, 12,500 USD, closed Oct 1, 2026, with Plan collections; Brand refresh with Plan collections; Discovery sprint, No amount in HubSpot; Monthly retainer, Q4, Planned, Changed in HubSpot, with Open the deal. Below, Not won yet with one deal, and a billing email to confirm.](https://www.vestiarion.xyz/docs/guides/hubspot-deals.png)

*Won deals to plan, one that cannot be, and one planned that HubSpot changed since.*

**Plan collections** opens the New deal form, filled in from the deal:

- **Customer**: the customer this HubSpot company was planned for before; else the customer with the company's name; else the company as a new customer, added when you confirm. When two customers have the name, or the one that has it was planned for another HubSpot company, you choose.
- **Deal**: the deal's name.
- **Total** and **Currency**: the deal's amount, in USDC for a deal in US dollars and EURC for one in euros. The form says "HubSpot says 12,500 USD: planned as 12,500.00 USDC, one for one."
- **Start date**: the day the deal closed.
- **External reference**: the deal's id in HubSpot, which links the two. It cannot be changed here.

Pick how it is billed (a deposit and balance, milestones, a monthly retainer or your own lines), check the schedule, and choose **Confirm deal**. The deal is signed in the ledger as any deal, as `deal_signed` with `via: "hubspot"` and the deal's ids in HubSpot. The company is linked to the customer, so the next deal from it finds the customer.

![The New deal form filled in from HubSpot: a note saying HubSpot says 12,500 USD: planned as 12,500.00 USDC, one for one; customer Northwind Labs, deal Website rebuild, external reference 30117482911, total 12500.00 USDC, start date Oct 1, 2026, a 30 percent deposit.](https://www.vestiarion.xyz/docs/guides/hubspot-plan.png)

*The form filled in from the won deal; you pick how it is billed.*

## 4. When a deal changes in HubSpot

A planned deal can change in HubSpot afterwards: its amount, its close date, its stage, or it is deleted. Vestiarion never changes the deal for it. The deal's page says **Changed in HubSpot**, with each change:

- "Amount: 12,000 USD to 15,000 USD."
- "Close date: Sep 20, 2026 to Sep 30, 2026."
- "Marked lost in HubSpot (Closed Lost). Nothing is cancelled: cancel the deal if it is off."
- "Deleted in HubSpot. Nothing is cancelled: cancel the deal if it is off."

The ledger records each new set of changes once, as `crm_deal_changed`. Then choose:

- **Change deal**, which opens the deal's Change deal form filled in: HubSpot's new amount as the new total, a correction proposed for the lines not invoiced yet, and the changes as the reason. Check it and save it as a new version. Lines already released, and their receivables, stay as they are. The version is signed as `deal_revised` with `via: "hubspot"`.
- **Keep the deal as it is**, when the deal is right as it stands. The changes are marked as seen, and the ledger records `crm_deal_change_kept`.

Both act on the changes the page showed you. If HubSpot changed the deal again since you opened the page, nothing is saved: reload the page to see what changed now.

A deal marked lost in HubSpot is only flagged. To stop its lines, use **Cancel deal** on its page.

![Changed in HubSpot on a deal's page: Amount: 12,000 USD to 15,000 USD, and Close date: Sep 20, 2026 to Sep 30, 2026; nothing in Vestiarion changed; with the Change deal and Keep the deal as it is buttons.](https://www.vestiarion.xyz/docs/guides/hubspot-changed.png)

*What HubSpot changed, and what you can do about it.*

## 5. Billing emails

A customer linked to a HubSpot company that has no billing email yet is listed under "Billing emails from HubSpot", with the email of the company's main contact. Choose **Use this email** if it is where invoices go: it becomes the customer's billing email, used for reminders once you turn them on for an invoice. The ledger records `counterparty_notice_email_changed` with `via: "hubspot"`. A billing email the customer already has is never replaced, even one typed in while you looked; and only the email you were shown is used.

## 6. Receipts back in HubSpot

So sales sees whether a customer paid without asking finance, Vestiarion can write each planned deal's collections back to that deal in HubSpot. It is off until an owner or admin turns it on.

**Allow it.** On the HubSpot card in Settings, under **Receipts in HubSpot**, choose **Allow writing to HubSpot**. The connect page opens with **Write receipts to HubSpot** ticked: choose **Continue to HubSpot**. On HubSpot's install screen, tick both optional write permissions. Back in Settings, the card says "HubSpot is connected, and Vestiarion writes receipts to the deals planned from it, from the next sync." A connection allowed to write shows **Write receipts to HubSpot** and **Stop writing to HubSpot**; what was written stays in HubSpot when you stop.

**If the write permissions show locked.** If your HubSpot account approved Vestiarion before, they show locked there: a super admin first turns them on in HubSpot > Settings > Integrations > Connected Apps > Vestiarion > Data Permissions. Then choose **Allow writing to HubSpot** again. Until then the card says "HubSpot connected without allowing Vestiarion to write. It still reads your deals.", and Vestiarion keeps reading your deals.

**What is written**, on each HubSpot deal planned in Vestiarion, in a **Vestiarion** group of deal fields that Vestiarion adds once:

- **Collected**: money received on Arc, confirmed by Circle and applied to the deal's invoices. Nothing submitted or pending counts, and a fee a person marked is never collected. It is the deal's **Paid** in Vestiarion, the same figure.
- **Still owed**: invoiced to the customer and not paid yet. A part payment shows as partial: the rest of that invoice is still owed. Lines not invoiced yet are not in it.
- **Collection currency**, and **Collection status**: Paid in full, Paid to date, Partly paid, Overdue, Awaiting payment or Nothing invoiced yet.
- **Last receipt date**, **Last receipt amount**, and **Last receipt**: a link to the payment's transaction on Arc's explorer.
- **Reconciliation status**: Reconciled, Needs review (an invoice is marked received without a payment on Arc, and is not counted) or No receipts yet.
- **Evidence**: a link to the deal in Vestiarion.

HubSpot's own deal fields, such as the amount and the stage, are never changed.

**When.** After each sync: every 15 minutes, or at once with **Sync now**. Each write is read back from HubSpot, and counts as written only when HubSpot holds the same figures. The deal's page, under **Receipts in HubSpot**, says what was written and when, or why not yet. The ledger records `crm_receipt_written`.

![Receipts in HubSpot on a deal's page: Written to HubSpot, read back the same; Collected 5,600.00 USDC, Still owed 2,200.00 USDC, Collection status Partly paid, the last receipt of 2,000.00 USDC on Oct 12, 2026 with its transaction link, Reconciliation status Reconciled and the link to the deal.](https://www.vestiarion.xyz/docs/guides/hubspot-receipts.png)

*What was written to the HubSpot deal, as HubSpot read it back.*

**When someone changed a field in HubSpot.** Vestiarion never writes over it. The deal's page says "Not written: someone changed it in HubSpot", field by field: what Vestiarion last wrote, what HubSpot holds now and what Vestiarion would write. An owner or admin chooses **Write Vestiarion's figures to HubSpot** to put them back; until someone chooses, later receipts wait too. The ledger records `crm_receipt_conflict`, and `crm_receipt_overwrite_chosen` for the choice.

**When HubSpot is down.** Nothing happens to your payments. The write waits and is tried again on its own: the deal's page says "Not written to HubSpot yet", and when it is tried again.

**Arc testnet and shadow mode.** Payments on Arc testnet, and every payment in shadow mode, are written only to an account HubSpot itself calls a developer test account or a sandbox. To any other account: "Not written: payments on Arc testnet and in shadow mode are written only to a HubSpot developer test account or sandbox, never to a real HubSpot account."

![The HubSpot card in Settings with Receipts in HubSpot on: 6 deals written, 1 waiting, 1 changed in HubSpot and waiting on you; HubSpot says this is a developer test account; the rule for Arc testnet; and the Stop writing to HubSpot button.](https://www.vestiarion.xyz/docs/guides/hubspot-receipts-settings.png)

*Writing receipts on, and how the writes stand.*

## Reminders and the deal's owner

HubSpot also tells Vestiarion who owns each deal. When a receivable from a deal planned from HubSpot is overdue and no reminder went since its due date, and its HubSpot deal has an owner, the agent asks before its first overdue reminder, in case sales gave the customer more time: the receivable's card shows **Ask the deal's owner**, with **Open the deal in HubSpot**. See [Chase what customers owe](https://www.vestiarion.xyz/docs/guides/collections). A deal read before this came in gets its owner the next time it changes in HubSpot, and a receivable already overdue before the agent began opening tasks in your workspace is reminded as before, without the ask.

## Status and errors

The HubSpot card in Settings says how the connection is doing:

- "HubSpot needs you to reconnect", when the app was uninstalled in HubSpot or its access removed. Choose **Reconnect HubSpot**.
- "HubSpot asked Vestiarion to slow down. Syncing again at 14:05 UTC." when HubSpot's limits were reached. Nothing is lost: the next sync goes on where this one stopped.
- "HubSpot is not set up on this deployment yet." on a deployment where HubSpot is not configured.

## Disconnect

Choose **Disconnect HubSpot** on the card. Vestiarion stops reading, and writing, at once, ends its access in HubSpot and deletes its tokens. What it wrote stays in HubSpot. Deals already planned stay in Vestiarion, with their receivables. The ledger records `accounting_disconnected`.
