HubSpot + Brevo Integration

HubSpot + Brevo

Connect HubSpot’s CRM data to Brevo’s engagement platform. Use HubSpot as your source of truth for contact and deal data, and Brevo for multi-channel campaign execution, email, SMS, WhatsApp.

MCP Servers Used

ServerURLAuthPurpose
HubSpot MCPmcp.hubspot.comOAuth/PKCECRM data: contacts, companies, deals, tickets, products, orders (read-only)
Brevo MCPmcp.brevo.com/v1/brevo/mcpTokenContacts, email, SMS, WhatsApp, campaigns, event tracking

Caution

HubSpot’s MCP server is currently read-only (BETA). You can read CRM data from HubSpot and use it to drive actions in Brevo, but cannot write back to HubSpot via MCP. For bi-directional sync, use HubSpot’s REST API alongside the MCP connection.

Setup

Step 1: Create HubSpot MCP Auth App

  1. In HubSpot, go to Development > MCP Auth Apps
  2. Click Create MCP auth app
  3. Set your redirect URL (for Agentx Desktop testing: http://localhost:6274/oauth/callback/debug)
  4. Note your Client ID and Client Secret

Step 2: Connect Both MCP Servers

For tools that support OAuth (Cursor, VS Code):

{
"mcpServers": {
"hubspot": {
"url": "https://mcp.hubspot.com/",
"headers": {
"Authorization": "Bearer your-hubspot-oauth-token"
}
},
"brevo": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.brevo.com/v1/brevo/mcp",
"--header",
"Authorization: Bearer ${BREVO_MCP_TOKEN}"
],
"env": {
"BREVO_MCP_TOKEN": "your-brevo-mcp-token"
}
}
}
}

Tip

HubSpot MCP requires OAuth with PKCE. Tools like Cursor handle this natively. For Agentx Desktop/Code, you may need to obtain a token separately and pass it as a Bearer token.

Step 3: Verify

> Show me my HubSpot deals in the Negotiation stage
> How many contacts do I have in Brevo?

Use Case 1: CRM Contact Sync Agent

Sync HubSpot contacts to Brevo with deal-stage enrichment:

---
name: hubspot-contact-sync
description: Sync HubSpot CRM contacts to Brevo with deal data enrichment
version: 1.0.0
temperature: 0.1
tools:
- hubspot
- brevo_contacts
- brevo_attributes
- brevo_lists
- brevo_segments
triggers:
- schedule: "0 */4 * * *"
---
# HubSpot Contact Sync
Read contacts and associated deal data from HubSpot,
sync to Brevo with enriched attributes for segmentation.
## Strategy
1. Query HubSpot for contacts modified since last sync
2. For each contact, fetch associated deals and company
3. Create/update Brevo contact with enriched data:
- CRM lifecycle stage → Brevo attribute
- Deal amount → Brevo attribute
- Deal stage → Brevo segment
4. Auto-segment in Brevo:
- "SQL" contacts → Sales Qualified list
- "Opportunity" contacts → Active Pipeline list
- "Customer" contacts → Customer list
## Field Mapping
| HubSpot Property | Brevo Attribute |
|-----------------|-----------------|
| email | EMAIL |
| firstname | FIRSTNAME |
| lastname | LASTNAME |
| phone | SMS |
| lifecyclestage | LIFECYCLE_STAGE |
| hs_lead_status | LEAD_STATUS |
| company (associated) | COMPANY |
| deal amount (sum) | DEAL_VALUE |
| deal stage (latest) | DEAL_STAGE |
## Rules
- NEVER sync contacts without email addresses
- ALWAYS preserve existing Brevo data if HubSpot field is empty
- Track sync with events: hubspot_sync_success, hubspot_sync_error
- Log contact count per lifecycle stage for reporting

Use Case 2: Deal-Stage Campaign Agent

Trigger Brevo campaigns based on HubSpot deal stage changes:

---
name: hubspot-deal-campaigns
description: Trigger targeted Brevo campaigns when HubSpot deals change stages
version: 1.0.0
temperature: 0.3
tools:
- hubspot
- brevo_contacts
- brevo_email_campaign_management
- brevo_templates
- brevo_segments
triggers:
- schedule: "0 9 * * *"
---
# Deal-Stage Campaign Agent
Monitor HubSpot deal stages and trigger appropriate
engagement campaigns in Brevo.
## Stage-to-Campaign Mapping
| HubSpot Deal Stage | Brevo Action |
|-------------------|--------------|
| Appointment Scheduled | Send meeting prep email with company info |
| Qualified to Buy | Add to "Nurture" drip sequence |
| Presentation Scheduled | Send case study relevant to their industry |
| Decision Maker Bought-In | Send ROI calculator + pricing guide |
| Contract Sent | Send "What to expect" onboarding preview |
| Closed Won | Trigger welcome sequence + onboarding |
| Closed Lost | Add to "Win-back" sequence (30-day delay) |
## Rules
- ONLY send to contacts associated with the deal
- Check if contact has opted in to marketing before sending
- One campaign trigger per deal stage change (no duplicates)
- Log all campaign triggers for deal attribution

Example: Natural Language Query

You: "Find all HubSpot deals that closed this month and make sure
those contacts are getting our onboarding email sequence in Brevo."
Agentx: Querying HubSpot for deals closed this month...
[Uses hubspot MCP to search deals with closeddate in current month]
Found 12 deals closed this month, involving 18 contacts.
Checking Brevo for these contacts...
[Uses brevo_contacts to look up each email]
Results:
- 14 contacts already in Brevo and receiving onboarding sequence
- 4 contacts not yet in Brevo
Creating 4 new Brevo contacts and adding to onboarding list...
[Uses brevo_contacts to create contacts]
[Uses brevo_lists to add to "Onboarding" list]
Done. All 18 contacts from this month's closed deals are now
in Brevo's onboarding sequence.

Next Steps

Request early access

Share your first name and an email address or phone number. We will follow up with Tajo access details.

automatic detection
AI Assistant

Hi! Ask me anything about the docs.