AI-Driven Email from HubSpot CRM Data

Pull contact and deal context from HubSpot, generate personalized emails with your AI agent, and deliver through MultiMail with recipient-level oversight and full audit trails.


HubSpot stores the contact lifecycle data your AI agents need to personalize outbound email: deal stage, last activity, lifecycle stage, company size, and custom properties. The gap is execution — HubSpot's native automation runs static sequences, not dynamic agent-generated content tailored to each contact in real time.

MultiMail fills that gap. Your agent reads CRM context from HubSpot, composes email via the MultiMail API, and sends through managed mailboxes with full oversight controls. Every send is logged, every approval request is auditable, and every bounce or reply flows back as a webhook you can act on.

This pattern is particularly useful for outbound prospecting, post-demo follow-up, and renewal sequences where the right message depends on context that only exists at send time — not when you built the workflow template.

Built for HubSpot developers

Recipient-level approval queues

HubSpot workflows can trigger thousands of contacts simultaneously. MultiMail's gated_send mode queues each AI-generated email for human review before delivery, so a bad prompt or stale CRM data doesn't produce a mass send error.

Audit trail independent of HubSpot

MultiMail logs every send attempt, approval decision, delivery status, and reply event against the mailbox — not inside HubSpot's activity feed. This matters for SOC 2 compliance and post-incident review when you need to reconstruct exactly what your agent sent and when.

CAN-SPAM and GDPR compliance controls

MultiMail enforces unsubscribe handling at the API layer. Agents cannot send to contacts who have opted out, and every outbound message includes required headers. This runs independently of HubSpot's suppression lists so you have defense in depth.

Inbound reply routing back to your agent

When a prospect replies to an agent-sent email, MultiMail fires a webhook to your backend. Your agent can read the reply via GET /v1/mailboxes/{mailbox_id}/emails/{email_id}, update the HubSpot contact via their API, and decide whether to respond or escalate — closing the loop without manual handoff.

Oversight mode tuned per audience segment

Run gated_all for cold outbound where every message needs review, monitored for warm pipeline follow-ups, and autonomous for transactional notifications like meeting confirmations. Different HubSpot lists can map to different MultiMail oversight modes.


Try it with your agent

No code, no dashboard. Paste this to your AI agent — it connects MultiMail, creates an inbox, and builds the flow for you.

1. Get MultiMail ready: read https://multimail.dev/llms.txt, connect the MultiMail MCP server to this agent, create a free inbox for testing, and set up a verified sending domain so the agent can compose, send, and schedule email through MultiMail. 2. Wire HubSpot in using HubSpot’s real integration surface: connect this agent to HubSpot through the official HubSpot MCP server or an installed HubSpot app/integration that exposes CRM objects, then grant read access to contacts, companies, and deals needed for personalization. 3. Give the agent these capabilities: check the MultiMail inbox for new messages, pull the matching HubSpot contact and deal context, draft a personalized reply or outbound email, and prepare the send through MultiMail with the recipient, subject, body, and relevant audit context. 4. Send a test email: use one internal HubSpot test contact, generate a short personalized message from that contact and deal record, deliver it through the MultiMail test inbox, then confirm the message appears in the inbox and the audit trail records the draft and send decision. 5. Run in gated_send mode: keep MultiMail oversight set to gated_send so every generated email requires developer review and approval before anything sends. Do not switch to monitored or autonomous until the test contact, personalization, delivery, and audit trail have been reviewed.

Step by step

1

Create a MultiMail mailbox

Sign up at multimail.dev and create a mailbox for outbound use. You can use a @multimail.dev address immediately or add a custom domain via DNS records in your account settings. Creating a mailbox requires an admin-scope key.

2

Create a HubSpot private app and get your access token

In HubSpot, go to Settings → Integrations → Private Apps and create an app with scopes: crm.objects.contacts.read, crm.objects.deals.read, crm.objects.tasks.write. Copy the generated access token — this is your HUBSPOT_TOKEN for CRM API calls.

3

Set up a HubSpot workflow to trigger your agent

In HubSpot Workflows, create an enrollment trigger (e.g., deal stage changes to 'Proposal Sent') and add a webhook action pointing to your backend endpoint. The webhook payload will include the object ID your agent uses to fetch CRM context.

4

Wire up MultiMail reply webhooks

In your MultiMail account settings, add a webhook endpoint for the email.received event type. Point it to your backend handler that reads the reply and updates the HubSpot contact record.

5

Choose oversight mode per workflow

Set each mailbox's oversight mode based on the risk profile of the workflow (it is a per-mailbox setting, not a per-send parameter). Cold outbound sequences should use a mailbox in gated_send or gated_all. Warm follow-ups after a demo can use a monitored mailbox. Transactional confirmations (meeting links, document receipts) can use an autonomous mailbox.


Common questions

Can I use this without a custom domain?
Yes. MultiMail provides @multimail.dev subdomains immediately. For production outbound, a custom domain improves deliverability — HubSpot contacts are more likely to engage with email from your company domain. You can add a custom domain in MultiMail account settings by adding the required DNS records.
How do I avoid sending to HubSpot contacts who have unsubscribed?
MultiMail enforces CAN-SPAM and GDPR opt-out handling at the API layer. You should also query HubSpot's unsubscribed status before sending: fetch the contact's unsubscribedemail property and skip any contact where it is true. Defense in depth — both systems check.
What happens if my agent sends an email that gets flagged as spam?
MultiMail fires a delivery status webhook with the bounce or spam classification. Your agent can read the event type and update the HubSpot contact's hs_lead_status to indicate the deliverability issue. Future sends to that contact should be paused until the issue is resolved.
Can multiple agents share the same mailbox?
Yes, but you'll lose per-agent attribution in the audit log. It's better to create one mailbox per workflow type (e.g., outbound@, followup@, renewals@) so you can filter MultiMail logs by mailbox to isolate which agent or workflow produced a given send.
How do I handle rate limits on the HubSpot API?
HubSpot's v3 CRM API allows 110 requests per 10 seconds on most plans. If your agent processes large HubSpot lists, batch contact lookups using the POST /crm/v3/objects/contacts/batch/read endpoint, which fetches up to 100 contacts per call. Cache the results in your backend rather than re-fetching on every send.
Does this replace HubSpot's native email sequences?
No — it complements them. HubSpot sequences are better for static, pre-written cadences where marketing controls the copy. MultiMail is better when the email content must be generated dynamically based on context that only exists at send time, or when you need per-message human approval that HubSpot's workflow engine doesn't support natively.

Explore more

The only agent email with a verifiable sender

Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a hosted MCP server. Formally verified in Lean 4.