Platform:
n8nMake.comZapier
make.comhubspotpersistent memoryCRMAI agent

Make.com HubSpot AI Automation with Memory: Complete Guide (2026)

By retainr team··7 min read·Updated Mar 26, 2026
Make.com HubSpot AI Automation with Memory: Complete Guide (2026)

Make.com HubSpot AI scenarios are stateless. Every execution starts fresh — no memory of what was said to this contact last week, no context from previous calls, no record of past objections. This guide shows how to fix that using retainr, adding persistent per-contact memory to any Make.com HubSpot scenario.

The Problem with Stateless HubSpot AI

A typical Make.com HubSpot AI scenario looks like this:

  1. HubSpot — Watch Contacts (trigger on new contact or field change)
  2. OpenAI — generate personalized outreach email
  3. Gmail — send the email

The AI generates reasonable output. But it generates the same quality of output for a brand-new lead and a contact you've been nurturing for six months — because it has no idea this contact exists in your history.

With memory, the scenario becomes:

  1. HubSpot — Watch Contacts
  2. retainr HTTP GET — retrieve all past AI interactions with this contact
  3. OpenAI — generate outreach that accounts for full relationship history
  4. Gmail — send
  5. retainr HTTP POST — store this interaction for next time

The AI now knows about the pricing objection from three months ago, the product demo they attended, the feature request they mentioned. That context changes the quality of every output.

Setting Up HubSpot AI Memory in Make.com

Step 1: Get your retainr API key

Create a free account at retainr.dev/dashboard. Copy your API key. The free plan includes 1,000 memory operations per month.

Step 2: Add the HTTP GET module

After your HubSpot trigger module, add an HTTP — Make a request module:

  • URL: https://api.retainr.dev/v1/memories/search
  • Method: GET
  • Query String:
    • namespace: hubspot:{{contact.id}}
    • q: {{current_context_or_subject}}
    • limit: 5
  • Headers: Authorization: Bearer YOUR_API_KEY

Map {{contact.id}} from the HubSpot trigger. This scopes all memory to this specific HubSpot contact.

Step 3: Inject memory into your AI module

In the OpenAI (or Claude/Gemini) module, add the memory results to the system prompt:

You are a sales assistant with deep knowledge of this contact's history.

Contact memory:
{{http_get_results}}

Use this context to personalize your response. Reference specific past interactions when relevant.

If the HTTP GET returns an array, use Make.com's join() function to convert it to a text string before injecting: {{join(http_get_results[].content; "\n")}}.

Step 4: Add the HTTP POST module

After the AI module, add another HTTP — Make a request module:

  • URL: https://api.retainr.dev/v1/memories
  • Method: POST
  • Headers: Authorization: Bearer YOUR_API_KEY, Content-Type: application/json
  • Body (JSON):
{
  "namespace": "hubspot:{{contact.id}}",
  "content": "{{interaction_summary}}"
}

Store a 1-3 sentence summary of what happened: the context, the AI output, and any commitments or next steps.

Namespace Patterns for HubSpot

ScenarioNamespace
Per contacthubspot:{contact_id}
Per dealhubspot:deal:{deal_id}
Per companyhubspot:company:{company_id}
Per contact email (stable across recreations)email:{contact_email}

For most HubSpot scenarios, hubspot:{contact_id} is the right choice. It is stable, unique, and directly available from any HubSpot trigger.

What to Store in HubSpot Contact Memory

Store the AI interaction context, not raw HubSpot data (HubSpot already stores that). The goal is to capture what the AI knows that HubSpot fields don't:

Good to store:

  • "Lead expressed interest in enterprise plan. Objection: integration complexity with legacy ERP."
  • "Demo call completed. Showed project management module. Asked about Salesforce migration path."
  • "Followed up on trial. Reported confusion with onboarding. Suggested getting started guide."
  • "Deal stalled. Champion left company. New contact is Sarah Chen, same company."

Not worth storing (already in HubSpot):

  • Contact email, phone, company name
  • Deal value, close date, stage
  • Form submission data

The retainr memory gives the AI the relationship context that structured CRM fields don't capture.

Use Cases

Lead nurture sequences

When a lead triggers a stage change in HubSpot, the AI can draft a follow-up that references the specific pain point they mentioned three weeks ago — not a generic template. Conversion rates improve because the outreach feels earned.

Sales call prep

When a deal moves to "Meeting Scheduled," trigger a Make.com scenario that retrieves the full interaction history for this contact and generates a briefing doc. The sales rep walks in knowing everything the AI knows about this relationship.

Post-demo follow-up

After a demo call, store the AI's summary of what was covered and what objections were raised. The next follow-up AI call retrieves this and generates a response that directly addresses those objections.

Churn prevention

When a customer's health score drops below a threshold in HubSpot, the AI retrieves the full support and engagement history and generates a personalized outreach — not a generic "we noticed you haven't logged in" email.

Writing AI Summaries Back to HubSpot

A useful pattern: after generating the AI summary, write it back to HubSpot as a note using the HubSpot — Create a Note module. This makes the AI's work visible to human reps in HubSpot without requiring them to use retainr directly.

The flow:

  1. AI generates response + summary
  2. retainr POST — stores summary for future AI context
  3. HubSpot — Create a Note — stores summary for human reps

Both systems get updated. The AI improves on future runs; humans see the history in HubSpot's timeline.

Give your AI agents a real memory

Free plan includes 1,000 memory operations/month. No credit card required.

Add memory to your Make.com HubSpot scenario — free plan

Frequently Asked Questions

How is retainr different from HubSpot notes for AI? HubSpot notes are human-readable but not AI-searchable. retainr uses semantic vector search — the AI retrieves the most relevant past interactions for the current context, not just the most recent ones. A note from six months ago about a specific objection can surface when that objection comes up again.

Can I use this with HubSpot workflow webhooks instead of Make.com triggers? Yes. Configure a HubSpot workflow to send a webhook to a Make.com webhook URL on any automation trigger. The retainr HTTP modules work identically regardless of how the Make.com scenario is triggered.

What if the same contact has hundreds of past interactions? retainr returns the most semantically relevant results (controlled by limit). With limit=5, you get the 5 most relevant memories for the current query — not the 5 most recent. This keeps prompts concise even for long-running customer relationships.

Does the same API key work across n8n and Make.com? Yes. One retainr API key works across all platforms. Your HubSpot contact memories are accessible from Make.com scenarios, n8n workflows, Zapier Zaps, or direct API calls using the same namespace.

What Make.com plan do I need? Any Make.com paid plan. The scenario needs at least 3 modules: HubSpot trigger, HTTP GET, HTTP POST (4 with the AI module). Make.com Free only allows 2 modules per scenario.

Add memory to any Make.com scenario

Working with a different app? These guides cover the exact setup:

Give your AI agents a real memory

Store, search, and recall context across Make.com, n8n, and Zapier runs. Start free - no credit card required.

Try retainr free

Related articles