MemorySync
Integrations

Zapier Memory Automation

Add, search and recall MemorySync memories from any Zap, no code required. Store what a form, ticket or chat teaches you, pull it back into any of Zapier’s 8,000+ apps — and react the moment a memory is stored anywhere, with the category’s first New Memory trigger.

Zapier maps End User ID across capture, recall, and New Memory trigger Zaps so context follows later automations.

How it works

  1. Connect your MemorySync API key once as a Zapier connection.
  2. Use Add Memory or Add Conversation Turn to store what a Zap learns — only the durable facts are kept.
  3. Use Search Memories, Recall Context or Find Memories to pull that context back into a later step.
  4. Use the New Memory trigger to start a Zap whenever a memory is stored for a user — from your app, an agent, a voice call, or another Zap.

Before you start

  1. A Zapier account, on any plan.
  2. A MemorySync API key. Create one in the dashboard under Settings → API Keys, inside the project whose memories the Zaps should use.

Connect MemorySync

1
Add a MemorySync step

In the Zap editor, search for MemorySync in the app picker and choose an action such as Add Memory.

2
Sign in

Select Sign in, and paste your API Key (it starts with ms_). Zapier masks the field and sends the key only as a request header.

3
Confirm the connection

Zapier validates the key against MemorySync with a real query the moment you save it. If the connection appears with a green check, the key works — every later MemorySync step reuses it.

Two Zaps that show the whole idea

Capture: remember what a user tells you

  1. 1Trigger: anything that carries a message — a form submission, a support ticket, a chat.
  2. 2Action: MemorySync → Add Memory. Map Text to the message and End User ID to a stable identifier for that person, such as their email address.

Recall: use it in the next conversation

  1. 1Trigger: the next inbound message from that person.
  2. 2Search: MemorySync → Recall Context. Same End User ID; set Topic to what the next step is doing, e.g. drafting a reply to their email.
  3. 3Action: your AI step (ChatGPT, Claude, etc.). Paste the returned context block into the system prompt — it arrives pre-formatted, ready to use.

Every operation

TypeOperationWhat it does
TriggerNew MemoryFires when a memory is stored for an end user — from any surface. A conversation turn fires it once per fact extracted from it
SearchSearch MemoriesSemantic search — results fan out as line items
SearchRecall ContextOne prompt-ready context block for a ChatGPT/Claude step
SearchFind MemoriesNewest-first listing for an end user
CreateAdd MemoryStore a fact — extraction keeps only durable content
CreateAdd Conversation TurnSend one turn with its role — durable facts from what the user said become memories; assistant turns are accepted but not stored
CreateDelete MemoriesExplicit deletion by ID

New Memory (trigger)

FieldRequiredPurpose
End User IDYesWhich end user to watch for new memories

Zapier polls the newest memories on your plan’s polling interval (1–15 minutes) and deduplicates by memory ID, so each memory fires exactly once. Output fields: id (m_789), text, summary, source, created_at.

Add Memory

FieldRequiredPurpose
End User IDYesWhich end user this memory belongs to, e.g. customer-42
TextYesWhat to remember
SourceNoWhere this memory came from (shows in the dashboard); defaults to zapier
Metadata (JSON)NoOptional JSON object attached to the memory, e.g. {"zap": "crm-sync"}

Returns stored: true with the new id, or stored: false with a reason when extraction found nothing durable to keep — the Zap continues either way.

Add Conversation Turn

FieldRequiredPurpose
End User IDYesWhich end user this conversation belongs to
RoleYesWho said it — *User* or *Assistant*
TextYesWhat was said. User turns go to fact extraction; the text itself is never stored
Session IDNoConversation this turn belongs to — the facts carry session_id: zapier::<Session ID>

User turns go to fact extraction: only the durable facts in what the user said (preferences, plans, details) are stored, as separate memories with their own m_ IDs, asynchronously shortly after the step runs. They appear in Find Memories, Search Memories and Recall Context, and fire New Memory once per fact. Filler such as “ok” or “thanks” stores nothing. Every turn counts one add whatever it stores, so Assistant turns, which are accepted and stored nowhere, cost an add each; leaving them out of the Zap saves that add and the Zapier task each one uses. The same text sent again for the same end user, role and session within 30 days is recognised as a retry: it is not extracted twice and not counted again.

OutputMeaning
id (Request ID)req_…: the extraction request ID. When no extraction was started, a stable turn_… ID derived from the turn. Never a memory ID, and Delete Memories refuses it.
statusdistilling (facts are being extracted), skipped_non_user_turn (assistant turn), skipped_low_value (nothing worth remembering), skipped_replay (already sent), skipped (monthly quota reached; nothing stored). completed or failed appear when extraction ran immediately; a failed turn is extracted when the step is retried.
already_exists (Already Sent)true when the same user turn was sent before and was not extracted again.
acceptedtrue whenever the step succeeds.
stored_asAlways facts: the turn text itself is never stored.
FieldRequiredPurpose
End User IDYesWhich end user to search
QueryYesWhat to look for, in natural language
LimitNoMaximum memories to return (1–50)

Recall Context

FieldRequiredPurpose
End User IDYesWhich end user to recall
TopicYesWhat the downstream step is about, e.g. drafting a reply to their email
LimitNoMaximum memories to consider

Find Memories

FieldRequiredPurpose
End User IDYesWhich end user to list
LimitNoMaximum memories to return, newest first

Delete Memories

FieldRequiredPurpose
End User IDYesThe end user the memories belong to
Memory IDsYesComma-separated memory IDs to delete, e.g. m_123, m_456 — get them from Search or Find first. Anything that is not a memory ID (such as a req_… Request ID) is refused before any network call

Recipe ideas

  • Memory-aware email drafts — Gmail: New Email → Recall Context (End User ID = sender’s email) → ChatGPT drafts the reply with the context block → Gmail: Create Draft.
  • Capture CRM knowledge — New HubSpot note → Add Memory.
  • React to what agents learn — New Memory trigger → Slack message to #customer-signals.
  • Support capture — New Zendesk ticket → Add Conversation Turn (Role: User) → the durable facts in the customer’s message become memories every agent can recall.
  • Weekly digest — Schedule → Find Memories → digest email.

Every operation is scoped by End User ID — map it from the trigger (an email address, a CRM contact ID, a phone number). One user’s memories can never leak into another user’s Zap output.

Choosing an End User ID

The End User ID is a stable string you pick to identify whose memories these are: your app’s internal user ID, an email address, or a phone number. Use the same value on Add, Search and Recall or recall returns nothing.

When something goes wrong

ScenarioWhat happens
Monthly quota reached (evaluation keys)A clear QuotaExceeded error — “upgrade the plan or use a production key” — not an endless retry loop on a task that can never succeed
Monthly quota reached (free / paid plans)Add Memory reports stored: false with reason: accepted, Add Conversation Turn reports status: skipped; reads return empty results — the Zap keeps running
Bad metadata JSON / malformed IDsA friendly validation error raised before any network call
Wrong API keyFails at connection time — the credential test makes a real query
Retried step after a timeoutAdd Conversation Turn carries a deterministic idempotency seed — the replay reports already_exists: true (status: skipped_replay) and is not extracted twice

Troubleshooting

  • MemorySync doesn’t appear in the app picker — type the full name, *MemorySync*, in the app search; the listing is public. It went live on 4 September 2026, and Zapier caches its directory, so a picker that still misses it should show it within a few hours — if it doesn’t, contact us.
  • The connection fails when you paste the key — confirm it starts with ms_, hasn’t been revoked, and was created inside a project in the dashboard (keys created without a project can’t serve memory requests).
  • Search returns nothing right after an Add — extraction is asynchronous; recall in a later run or add a Delay step. Also confirm both steps use the same End User ID.
  • “Metadata must be valid JSON” — that field takes raw JSON. Watch for smart quotes and trailing commas.
  • A replayed step didn’t duplicate the turn — that’s the idempotency seed working as designed.
  • An Add Conversation Turn step stored nothing — check status: assistant turns (skipped_non_user_turn) and filler (skipped_low_value) store nothing by design; only the durable facts in what the user said become memories.

Supported versions

SurfaceRequiresVerified on
memorysync-zapier 1.1.0A Zapier account (any plan); the app is in Zapier’s public directory (Beta label for its first 90 days)40 CI checks driven through zapier-platform-core’s own appTester, fully offline: auth + connection label, header middleware, explicit roles and honest turn outputs (Request IDs, never memory IDs), idempotency seeds, strict memory-ID parsing on delete, tenant fallback, quota messaging, silent-quota envelopes, trigger dedupe ordering, and full zapier-platform-schema validation

How it compares

Mem0SupermemoryZepMemorySync
Zapier app exists△ invite-only via a support email✗ a Code-by-Zapier snippet with an admitted bug in their docs✗ none✓ full app
Any trigger✗ zero triggers✗✗✓ New Memory — first in the category
Prompt-ready recall✗✗✗✓ Recall Context
Quota handling✗ 60s polling loops that outlive Zapier’s step timeout——✓ clear upgrade error; silent free-tier quota never fails a Zap
Retry safety✗✗—✓ idempotency seeds on turns

Where to go next

Was this page helpful?