Vexter + HubSpot Integration

    Setup, configuration, and troubleshooting guide for the official Vexter integration with HubSpot CRM.

    1. Overview

    Vexter is an AI-powered sales automation platform built for the Norwegian market. The HubSpot integration is bi-directional:

    • HubSpot → Vexter: imports companies, contacts, deals, and list memberships. Real-time updates via webhooks.
    • Vexter → HubSpot: writes every campaign email, reply, meeting, and AI classification back to the contact's timeline. Creates follow-up tasks on inbound replies so reps get HubSpot's native notifications.

    The integration is built on HubSpot's public OAuth 2.0 API (version 2026-03) and uses HubSpot's standard Engagements, Properties, Lists, and Webhooks APIs.

    2. Installation

    1. Open the Vexter listing on the HubSpot Marketplace and click Install.
    2. You will be redirected to the Vexter sign-in page. Sign in with your Vexter account, or sign up if you don't have one yet.
    3. Once signed in, open Settings → CRM Integration → HubSpot from the sidebar and click the Connect button on the HubSpot card.
    4. Vexter opens HubSpot's OAuth consent dialog. Review the requested scopes (listed in section 3 below) and click Authorize.
    5. HubSpot redirects you back to Vexter, where an initial sync runs in the background. Your HubSpot companies and contacts will start appearing on the CRM Integration → HubSpot page within a few minutes.

    You can also start the connection from inside Vexter without going through the marketplace — just open CRM Integration → HubSpot and click Connect. The OAuth consent dialog and scopes are identical either way.

    3. OAuth scopes and why we need them

    Vexter only requests the scopes required to deliver the features below. We never request marketing-only scopes (e.g. content) or social scopes.

    ScopeWhat we use it for
    oauthRequired by HubSpot for every OAuth app — establishes the access/refresh token lifecycle.
    crm.objects.contacts.read / .writeImport your HubSpot contacts as Vexter leads; push email engagements, reply intent, and follow-up tasks back to the contact timeline.
    crm.objects.companies.read / .writeSync companies both ways; associate Vexter activity with the right HubSpot company.
    crm.objects.deals.readDetect contacts who already have an open deal in HubSpot so Vexter can pause outbound campaigns to them (avoids stepping on active sales conversations).
    crm.schemas.contacts.read / .writeProvision Vexter-namespaced custom properties (vexter_reply_intent, vexter_suppression_reason, vexter_auto_reply) and read lifecycle stage for send-suppression.
    crm.schemas.companies.readRead company property metadata (industry, lifecycle, custom field definitions) so Vexter's filter sheet can list every HubSpot company field as a filter option when building campaign audiences.
    crm.objects.owners.readMap Vexter users to HubSpot owners so pushed records are attributed to the right rep, and so notifications fire on the contact's actual owner.
    crm.lists.read / .writeRead your HubSpot lists to use as Vexter campaign audiences, and (with write) push a curated Vexter prospect list back to HubSpot as a static company list so your existing HubSpot workflows can use it as a trigger source.

    4. Configuration

    All sync behavior is controlled from CRM Integration → HubSpot → Sync Settings in Vexter. Every toggle is OFF by default so a fresh connection is read-only until you opt in.

    • Auto-sync companies / contacts — pulls updates from HubSpot on a schedule (default: hourly).
    • Block sends with active deal — suppresses campaign emails to contacts whose company has an open deal in HubSpot.
    • Block sends to lifecycle stages — choose which lifecycle stages (e.g. Customer, Evangelist) cause Vexter to skip outreach. Defaults to customer and evangelist.
    • Push sent emails — writes every Vexter-sent campaign email to the matched contact's HubSpot timeline as an outbound email engagement.
    • Push received replies — writes every reply received in Vexter to the matched contact's timeline as an inbound email engagement.
    • Push contact properties — saves Vexter's reply-intent classifier and auto-reply detection as custom properties on the matched contact.
    • Notify owner with a HubSpot Task — when an inbound reply is pushed, also create a follow-up Task assigned to the contact's mapped owner. Triggers HubSpot's native notification (dashboard + email).
    • Owner mapping — map each Vexter user to a HubSpot owner so pushed records land under the right rep.

    5. Sync behavior

    DirectionWhatWhen
    HubSpot → VexterContact / company create, update, delete, lifecycle change, deal create / closeReal-time via HubSpot webhooks; daily reconciliation as a safety net for missed events
    Vexter → HubSpotOutbound campaign emails, inbound replies, meeting bookings, follow-up tasks, contact propertiesReal-time at the moment the event occurs in Vexter

    6. Disconnecting

    From Vexter:

    1. Open CRM Integration → HubSpot.
    2. Click Disconnect.
    3. Vexter immediately revokes the OAuth refresh token with HubSpot (POST /oauth/2026-03/token/revoke) and stops all syncs.

    From HubSpot:

    1. Open HubSpot Settings → Account Setup → Integrations → Connected Apps.
    2. Find Vexter and click Uninstall.
    3. HubSpot delivers the app.uninstalled webhook to Vexter, which then cleans up local state and stops all background tasks for the affected portal.

    Either side's disconnect is sufficient on its own — you don't need to do both. Re-installing later restores the same Vexter connection record (with all its historical activity logs) when the portal's hub_id matches.

    7. Data handling and security

    • OAuth access and refresh tokens are encrypted at rest (envelope encryption with per-row data keys).
    • Vexter is hosted in the EU (Frankfurt) and is GDPR compliant. See our Privacy Policy for full details on data processing.
    • We never share your HubSpot data with third parties. AI features run through OpenAI (sub-processor) for content generation only — no contact-level data is used for model training.
    • You can revoke access at any time via the disconnect steps above. On disconnect, Vexter stops processing your HubSpot data immediately.

    8. Troubleshooting

    "No active HubSpot connection found"

    Your team's HubSpot connection was disconnected (or never completed). Open CRM Integration → HubSpot and click Connect.

    Campaign emails are being suppressed unexpectedly

    Vexter ships with a safety default that blocks sends to contacts whose lifecycle stage is Customer or Evangelist, and to anyone with an open deal in HubSpot. Open Sync Settings and review the Block sends section. Remove stages that shouldn't trigger suppression for your team.

    HubSpot doesn't notify reps when a lead replies

    Email engagements on a HubSpot timeline don't trigger HubSpot notifications by themselves. Enable Notify owner with a HubSpot Task in Sync Settings — Vexter will then create a follow-up Task on every inbound reply, assigned to the contact's owner. HubSpot's native task notifications take over from there.

    A property fails to provision with HTTP 409

    This is expected when the property already exists on your portal — Vexter's provisioning task is idempotent. After the first successful run, the task short-circuits on subsequent reconnects so you won't see this in HubSpot's API monitor again.

    Reply intent property shows the wrong classification

    Vexter's reply classifier is AI-driven and not 100% accurate. You can override the value directly in HubSpot at any time — Vexter only writes on new replies, never on edits.

    9. Support

    For integration-specific questions, email hei@vexter.no. We respond within one business day (Norway / CET).

    For general Vexter help, visit vexter.no/kontakt-oss.

    Vi bruker informasjonskapsler

    Vi bruker informasjonskapsler og lignende teknologier for å forbedre opplevelsen din, vise personlig tilpasset innhold og analysere trafikken vår. Personvernregler