> ## Documentation Index
> Fetch the complete documentation index at: https://docs.datavibe.cc/llms.txt
> Use this file to discover all available pages before exploring further.

# HubSpot

> Connect HubSpot for revenue-integrity evidence and signed inbound intake.

DataVibe's HubSpot integration has two independent parts: an OAuth connection
that pulls CRM evidence for revenue-integrity checks, and a signed webhook
that ingests HubSpot activity into DataVibe. Neither requires the other.

For sending through HubSpot's own sequences, see
[Sequencers and CRMs](/integrations/sequencers): gate the message before
HubSpot dispatches it, the same as any other sender.

## Connect (evidence pull)

An admin connects HubSpot once per workspace, in Settings → Integrations.
This authorizes read-only access to contact properties:

```text theme={null}
Settings → Integrations → Connect HubSpot → HubSpot authorize → callback
```

The connection requests `crm.objects.contacts.read crm.schemas.contacts.read`
scope and stores an encrypted refresh token. DataVibe never stores your
HubSpot access token.

## Pull evidence before a gate call

Fetch a contact's acquisition/funding/promotion properties and shape them as
`source_records` for the `clay_revops_freshness_v1` policy template:

```bash theme={null}
curl "https://app.datavibe.cc/api/integrations/hubspot/contact-evidence?email=prospect@example.com&workspace=your-workspace" \
  --cookie "your-dashboard-session-cookie"
```

```json theme={null}
{
  "email": "prospect@example.com",
  "source_records": [
    {
      "id": "hubspot-12345",
      "entity": "Acme Corp",
      "event_type": "acquisition",
      "acquired_at": "2026-03-01",
      "evidence_tier": "verified",
      "source_label": "HubSpot CRM property"
    }
  ]
}
```

This endpoint is dashboard-session authenticated, not API-key authenticated.
Call it from your own backend, then pass the returned `source_records`
straight into `metadata.source_records` on the `POST /v1/gate/outbound`
call. See [Revenue integrity](/trust/revenue-integrity) for how DataVibe uses
these records.

## Signed inbound intake

To ingest HubSpot activity into DataVibe (for example, workflow-triggered
outbound), register a webhook at:

```text theme={null}
POST https://app.datavibe.cc/api/intake/hubspot?workspace=your-workspace&label=optional-label
```

DataVibe verifies HubSpot's own request signature, `X-HubSpot-Signature-v3`,
over the timestamp and body, checked against `X-HubSpot-Request-Timestamp`.
Requests that fail signature verification are rejected before any policy
evaluation.

<Note>
  Blocked contacts are tagged back in HubSpot (`dv_gate_blocked`,
  `dv_gate_action_id`) so a BLOCK verdict is visible directly on the contact
  record, not only in the DataVibe audit log.
</Note>
