Supermemory with Zapier: Scoped Ingestion and Reliable Retries
Connect a Zap to Supermemory with stable source IDs, explicit identity mapping, and checks that separate accepted writes from searchable content.

A Zap can send selected source content to Supermemory through an authenticated HTTP request. The important design choices are which records to send, which user or workspace they belong to, and how retries refer to the same source. Connecting two products does not automatically solve those decisions.
The Supermemory Zapier guide demonstrates ingestion from an email trigger. For an enterprise workflow, start with a narrowly filtered test source and explicit identifiers rather than a shared global email bucket.
Define the mapping before the request
| Source field | Purpose |
|---|---|
| Authorized workspace ID | Separates organizations |
| Application user ID | Associates records with the intended person |
| Source record ID | Identifies the same item on replay |
| Source content | Provides the actual evidence to ingest |
| Source timestamp/version | Supports freshness and later corrections |
Resolve identity using your application's trusted account mapping. An email sender, display name, or field typed into a form is not automatically an authenticated user. If a workflow serves a shared workspace, document that shared scope explicitly.
Build a deterministic payload
The following pure Python function prepares the JSON body. It makes no network request and is suitable for testing outside Zapier. Hashing structured identifiers prevents ambiguous concatenation; it does not grant access or make guessable identifiers secret.
import hashlib
import json
def stable_id(parts):
if not all(isinstance(x, str) and x.strip() for x in parts):
raise ValueError("Identifiers must be non-empty strings")
raw = json.dumps(parts, ensure_ascii=False, separators=(",", ":"))
return hashlib.sha256(raw.encode("utf-8")).hexdigest()
def memory_payload(tenant, user, source_id, content):
if not isinstance(content, str) or not content.strip():
raise ValueError("Content is required")
scope = stable_id([tenant, user])
record = stable_id([tenant, user, source_id])
return {"content": content, "containerTag": scope,
"customId": record}
If using a Code by Zapier step, read mapped fields through the runtime's input_data object and assign the resulting dictionary to output. Follow Zapier's Python runtime documentation; a locally valid function still needs field mapping and an account-level execution test.
Configure the write step
Send the payload as JSON to https://api.supermemory.ai/v3/documents using POST and bearer authentication. Use the workflow platform's credential mechanism or a server-side authenticated proxy. Do not embed an API key in an article, exported example, user-supplied content, or a browser-visible request.
Store the response document ID and acceptance status in a durable source-to-document mapping. A stable customId helps identify the source, but it is not a substitute for verifying the API's current update behavior and your workflow's retry semantics.
When a source changes, update the mapped document through the supported document operation. When it is removed or access is revoked, follow the relevant deletion or access workflow. The ingestion guide explains why one successful create request is only part of a connector.
Handle retries and readiness separately
A failed transport can leave the caller uncertain whether the server accepted the write. Reconcile using the stable source identity before blindly creating another record. For retryable failures, use bounded backoff and record the final outcome. Invalid credentials or malformed data need correction rather than endless retries.
An accepted write may still be processing. Verify the document's status before testing search. Use a separate read step with the same authorized scope and a distinctive question about the fictional test content. Do not interpret a single empty early search as a lost record.
A practical acceptance sequence
Trigger the same fictional source event twice, then change its content and trigger it again. Check document identity, final content, readiness, and search evidence. Repeat for another tenant using the same source ID and confirm separation. Finally, remove the source and exercise your deletion path.
The payload logic is tested locally for replay stability, scope separation, and invalid input. This guide does not claim that a live Zap, connected mailbox, or provider ingestion was executed. Complete that account-level test before enabling an unattended workflow, and record the exact action versions and credential configuration used.
Build the first Zap around a fictional source event: get your Supermemory API key, configure the action using the integration guide above, and replay the event to inspect identity and retry behavior. Enable a live trigger only after that account-level test passes.