HubSpot AI

Gate AI-generated HubSpot actions — email campaigns, deal stage changes, contact updates — behind a human approval step using HubSpot Workflows.

Prerequisites

  • HubSpot Marketing Hub Pro or higher (for Workflows with HTTP actions).
  • Cheqpoint Connection Key.

Steps

  1. In HubSpot, open Automations → Workflows and create or edit the workflow that precedes your AI-driven action.
  2. Add a Send HTTP request action as a workflow step.
  3. Set Method to POST and URL to https://cheqpoint.co/api/webhooks/inbound.
  4. Add the x-api-key header and construct the JSON body from HubSpot contact or deal properties.
  5. Add an If/then branch after the HTTP request to check the response status property.
  6. Connect the approved branch to the AI action; connect the other branch to an internal notification or task creation step.

Sample request payload

json
{
  "action": "send_email_campaign",
  "summary": "AI requesting to send re-engagement campaign to 3,200 contacts",
  "details": {
    "campaign_id": "camp_9921",
    "segment": "churned_last_90_days",
    "recipient_count": 3200,
    "subject": "We miss you — here's 20% off"
  },
  "justification": "AI identified high churn risk segment based on engagement drop signals."
}

Sample Cheqpoint response

json
{
  "status": "approved",
  "modifiedDetails": {
    "subject": "Come back — exclusive offer inside"
  },
  "decisionNote": "Approved with subject line tweak per brand guidelines."
}

Async behaviour

json
// If Cheqpoint returns status "pending", the approval is queued
// for a human reviewer. Branch on all three outcomes in your workflow:
//
//   status == "approved"  → send the campaign
//   status == "rejected"  → create an internal task for manual review
//   status == "pending"   → either:
//     a) poll GET /api/approvals/{approvalId} in a later workflow step, or
//     b) pass callbackUrl so Cheqpoint POSTs the decision to your backend.

{
  "action": "send_email_campaign",
  "summary": "AI requesting to send re-engagement campaign to 3,200 contacts",
  "details": { "campaign_id": "camp_9921", "recipient_count": 3200 },
  "callbackUrl": "https://your-backend.example.com/cheqpoint/callback"
}

Notes

You have full control over what data is passed into the details object to provide human reviewers with sufficient context. Reviewers can modify campaign parameters via modifiedDetails.

Tips

Start by routing only high-risk or high-value actions to minimize friction while maintaining oversight.

Get your Connection Key at cheqpoint.co/signup.