HubSpot Integration
Push SaaSFunnels signal state into HubSpot CRM properties for workflow automation.
The HubSpot integration is a push-only destination. SaaSFunnels writes account-level signal state to HubSpot company properties so HubSpot workflows, lists, scoring, and sales or success routing can react to SaaSFunnels recommendations.
SaaSFunnels does not pull HubSpot data in this version. It does not read companies, fetch associated contacts, backfill CRM objects, listen to HubSpot webhooks, or prove outcomes from CRM resolution fields.
What SaaSFunnels Writes
Company is the required account-level target. Contact updates are optional and only run when SaaSFunnels already has an explicit HubSpot contact ID.
| HubSpot object | Required identity | Behavior |
|---|---|---|
| Company | hubspot_company_id | Updates the main SaaSFunnels signal properties. |
| Contact | hubspot_contact_id | Updates account-signal mirror properties when the ID is present. |
| Deal | Not supported | Deal sync is out of scope for V1. |
SaaSFunnels does not resolve records by domain or email in V1. Missing company or contact identity records a skipped or partial delivery row instead of turning the provider into an incoming CRM dependency.
Requirements
To connect HubSpot, you need:
- A SaaSFunnels workspace admin account.
- A HubSpot user with permission to install apps and manage CRM properties.
- A HubSpot account where SaaSFunnels is allowed to create CRM properties and safe test records.
Setup
- In SaaSFunnels, open
Settings > Integrations > HubSpot. - Click Connect.
- Choose the HubSpot account you want to connect.
- Review the requested permissions and approve the connection.
- SaaSFunnels creates the required HubSpot CRM property group and properties.
- SaaSFunnels creates or reuses safe sample company/contact records and writes sample signal state to verify setup.
The sample company is named SaaSFunnels Test Company - Safe to Delete, and the sample contact is clearly labeled as a SaaSFunnels test contact.
If HubSpot permissions block setup verification, use Repair setup after updating the app permissions. The raw property sync and existing-record test actions are diagnostics for support, not normal setup steps.
Requested Permissions
SaaSFunnels requests the minimum HubSpot permissions needed for the push-only destination:
| Scope | Why SaaSFunnels needs it |
|---|---|
oauth | Connects the workspace to HubSpot through OAuth. |
crm.objects.companies.write | Writes account-level signal state to HubSpot companies. |
crm.objects.contacts.write | Optionally writes account-signal mirror fields to known contacts. |
crm.schemas.companies.write | Creates and maintains SaaSFunnels company properties. |
crm.schemas.contacts.write | Creates and maintains optional SaaSFunnels contact properties. |
Company Properties
SaaSFunnels provisions these company properties automatically during setup. The list is here for workflow building and troubleshooting.
| Property | Type | Purpose |
|---|---|---|
prevenue_account_key | Text | Stable SaaSFunnels account key. |
prevenue_active_motion | Text | Current motion: grow, save, convert, or watch. |
prevenue_signal_type | Text | Latest signal type. |
prevenue_signal_priority | Text | Latest signal priority. |
prevenue_signal_status | Text | Latest signal lifecycle status. |
prevenue_signal_confidence | Number | Confidence score from 0 to 1 when available. |
prevenue_recommended_action | Text | Recommended next action. |
prevenue_signal_reason | Multi-line text | Short reason or evidence summary. |
prevenue_signal_id | Text | SaaSFunnels signal ID for audit. |
prevenue_last_signal_at | Datetime | Last time SaaSFunnels wrote signal state. |
prevenue_signal_expires_at | Datetime | Suggested stale timestamp for workflow cleanup. |
Contact Properties
SaaSFunnels also provisions these optional contact properties. They are only written when SaaSFunnels already has an explicit HubSpot contact ID.
| Property | Type | Purpose |
|---|---|---|
prevenue_account_key | Text | Associated SaaSFunnels account key. |
prevenue_account_motion | Text | Account-level motion. |
prevenue_account_signal_type | Text | Account-level signal type. |
prevenue_account_signal_priority | Text | Account-level signal priority. |
prevenue_account_signal_status | Text | Account-level signal status. |
prevenue_account_recommended_action | Text | Account-level recommended action. |
prevenue_account_signal_id | Text | Associated SaaSFunnels signal ID. |
prevenue_account_signal_at | Datetime | Last time SaaSFunnels wrote contact signal state. |
Funnel and Signal delivery
After HubSpot is connected, select HubSpot for the approved Funnel follow-up or Signal delivery. SaaSFunnels will update HubSpot when:
- the Funnel or Signal is routed to HubSpot;
- the account has an explicit HubSpot company ID;
- the HubSpot destination is not disabled.
Contact writes are attempted only when an explicit HubSpot contact ID is also present.
Disconnecting HubSpot
To stop HubSpot delivery, open Settings > Integrations > HubSpot in SaaSFunnels and disable the destination. You can also remove the SaaSFunnels app from HubSpot from your connected apps settings.
Disconnecting stops future SaaSFunnels writes. It does not delete HubSpot properties, workflow history, or sample CRM records that were already created.
Credential Boundaries
SaaSFunnels stores the HubSpot refresh token encrypted through server-side credential helpers. destinations.config contains only safe metadata such as Hub ID, scopes, timestamps, and delivery status. OAuth tokens and provider responses should not appear in screenshots, logs, support messages, or Linear comments.