Make.com is phenomenal for automation — visual, powerful, and fast to build. But when you wire up an OpenAI or Claude module, you hit the same wall as everyone else: the AI has no memory.
Each scenario run is isolated. Your customer asks a question, you respond, they come back tomorrow — and the AI treats them as a complete stranger. The same problem exists on n8n and Zapier.
This guide shows you how to solve that with retainr, adding persistent vector memory to any Make.com, n8n, or Zapier automation in about 15 minutes.
The Problem in Plain Terms
All three platforms receive triggers, process data, and terminate. Any context you pass to an AI module exists only within that single run.
Common situations where this breaks:
- Customer support bots — can't remember a user's history
- Sales AI assistants — forget previous conversations entirely
- Content generation workflows — can't maintain consistent style/context for a user
- Personal AI assistants — start fresh with every new message
The workaround most people try: dump everything into a Google Doc and send it to the AI every time. This works until the document grows large enough that you hit token limits — then it breaks completely.
A Better Approach: Semantic Memory Search
Instead of loading all past context, the smarter approach is:
- Store each interaction as a memory
- When a new message arrives, search for relevant past context
- Inject only the top 3-5 relevant memories into your prompt
This works because not all past context is relevant to the current question. Vector similarity search finds what's actually related — without reading the entire history.
Setting Up Memory: Choose Your Platform
Step 1: Install the retainr module
Go to your Make.com workspace → Apps → search for "retainr" → Connect.
Enter your API key from retainr.dev/dashboard. The free tier gives you 1,000 memory operations — plenty to get started.
Step 2: Build the memory-enhanced scenario
Here's the basic pattern for any AI chatbot scenario:
Incoming message (webhook, email, Slack, whatever) ↓ retainr: Search Memory — finds relevant past context ↓ OpenAI / Claude — generates response with memory context ↓ retainr: Store Memory — saves this interaction ↓ Send response (back to webhook, email, Slack)
Step 3: Configure the Search Memory module
| Field | Value |
|---|---|
| Query | [1.message] (the incoming user message) |
| Scope | User |
| User ID | [1.user_id] (unique per user — email, phone, Slack ID) |
| Limit | 5 |
Step 4: Build the AI prompt with memory injection
In your OpenAI module, set the System Message to:
You are a helpful assistant.
RELEVANT CONTEXT FROM PAST CONVERSATIONS:
{{2.memories[].content | join("\n\n")}}
Use this context to personalize your response.
Step 5: Store the interaction
After the AI responds, add a retainr Store Memory module:
| Field | Value |
|---|---|
| Content | User: [1.message] \n\nAssistant: [3.choices[].message.content] |
| Scope | User |
| User ID | [1.user_id] |
| Tags | conversation, [1.topic] |
Advanced Pattern: Long-Running Projects
For workflows where you're managing ongoing projects (not just conversations), you can add metadata to memories:
{
"content": "Client requested landing page redesign. Requirements: mobile-first, dark mode, conversion-focused. Budget: 2000 EUR.",
"user_id": "client-acme-corp",
"session_id": "project-2026-q1",
"tags": ["project", "design", "requirements"]
}Then search by session_id to find only memories from a specific project. This keeps client projects isolated even if you're managing dozens simultaneously.
Platform-Specific Tips
Make.com: Add an error handler route after retainr modules. If memory retrieval fails, the scenario should still proceed — never let memory failure break your core workflow.
n8n: Wrap retainr nodes in an error handler sub-workflow. Set a fallback of { memories: [] } so your AI node always gets a valid input.
Zapier: Add Zapier's built-in error handling to your webhook steps. Two extra steps (search + store) affect your Zap operation count — factor this into your plan.
Include both the user message AND the AI response in the stored content. This gives the search engine more signal when finding relevant memories later.
Measuring the Impact
Track these metrics to see the difference memory makes:
- First-contact resolution rate — did the AI resolve the issue without the user repeating themselves?
- Conversation length — are conversations shorter because context is preserved?
- User satisfaction — track via thumbs up/down after responses
Most teams see 30-50% shorter conversations once memory is working well.
What You Just Built
Your AI automation now:
- Remembers every user it has spoken to
- Finds semantically relevant past context (not just keyword matching)
- Personalizes every response based on history
- Scales to millions of memories without degrading performance
And it runs entirely through your automation platform — no custom code, no separate infrastructure to manage.
Give your AI agents a real memory
Free plan includes 1,000 memory operations/month. No credit card required.
Get your free retainr API key →Frequently Asked Questions
How many memories can I store? The free plan allows 1,000 memory operations. Builder (€29/mo) gives you 20,000. Pro (€79/mo) gives you 100,000.
Does the same API key work across all platforms? Yes. Your retainr API key is platform-agnostic. Use the same key in n8n, Make.com, Zapier, or any direct API call.
Is memory per workspace or per user? Per workspace (your API key), with user-level isolation via the user_id field. All your users' memories are stored in one workspace but scoped so they can't access each other's data.
Can I delete memories? Yes — the Delete Memory operation lets you filter by user_id, sessionId, or tags, then delete matching memories. Important for GDPR right-to-erasure requests.
What if the user asks about something private? Memory is scoped by user_id. User A can never see User B's memories. You control what gets stored — if content is sensitive, simply don't include it in the stored memory.