Use this recipe after you complete Connect with Zapier. VisionAtlas has no native HubSpot connector. Allowed integration sources in the KPI UI are Salesforce, ERP, PowerBI, API, and Other.
For HubSpot, use `API` and prefix the metric id with hubspot: so it does not collide with a Salesforce mapping. You may use Other if your team prefers a generic label.
This path updates KPI actuals only.
Map KPIs in VisionAtlas
| VisionAtlas field | Recommended value |
|---|---|
| External source | `API` |
| External metric id | `hubspot:DEALS_WON_MTD` (you choose the suffix) |
The Zap must send the same externalSource and externalMetricId.
Typical Zap
- Trigger: HubSpot — new or updated Deal (or a scheduled HubSpot list)
- Filter: only Closed Won deals, or only records that should count in the metric
- Formatter (optional): sum amounts, count deals, or compute cycle time
- Action: Webhooks by Zapier → Custom Request POST to
/api/v1/kpi-values
A Schedule trigger (weekly or monthly) plus a HubSpot search is usually better for rollup KPIs than posting on every deal change.
Example mappings
Field names below are examples. Use the properties Zapier shows for your HubSpot portal.
| VisionAtlas KPI | `externalMetricId` | Example HubSpot input | JSON fields to send |
|---|---|---|---|
| Closed-won amount (month) | `hubspot:DEALS_WON_MTD` | Amount of Closed Won deals this month | `actualValue` = sum, `asOfDate` = today |
| Deal cycle time (days) | `hubspot:CYCLE_DAYS` | Average days from create to close | `actualValue` = average days |
| MQLs (month) | `hubspot:MQL_MTD` | Contacts that became MQL this month | `actualValue` = count |
Sample body (one KPI)
{
"values": [
{
"externalSource": "API",
"externalMetricId": "hubspot:DEALS_WON_MTD",
"asOfDate": "2026-08-16",
"actualValue": 380000
}
]
}What you should see
After a successful run, the HubSpot-mapped KPI shows the new current value, and Settings → Integrations lists an import job. If nothing updates, confirm the hubspot: prefix matches the KPI mapping exactly.
