Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.
This guide takes you from a new SuprSend account to a notification sent from your own code. By the end, you’ll have built a template and a workflow in SuprSend, and added two calls to your backend: one that identifies a user, and one that triggers the workflow. You’ll then confirm in logs whether the notification was sent.Everything in this guide runs in your Sandbox workspace and uses the email channel. Because it’s a sandbox, an email vendor is already connected — there’s nothing to set up before you send.
This guide assumes you’ve read Core concepts. It uses template, user,
workflow, and logs without redefining them.
Create your SuprSend account.Three workspaces are created automatically — Sandbox, Staging, and Production. Switch
between them from the top navigation bar. Stay in Sandbox for this guide: it already has an
email vendor connected, so there’s nothing to configure before you send.
Go to Developers → API Keys and
copy your Workspace Key and Workspace Secret — that’s what the code in this guide uses by
default. If you are generating an API Key instead, it’s on the same page and is shown only
once, so copy it before closing the dialog.Store them as environment variables:
.env
SUPRSEND_WORKSPACE_KEY=your_workspace_keySUPRSEND_WORKSPACE_SECRET=your_workspace_secret# Only if you're calling the REST API instead of using an SDKSUPRSEND_API_KEY=your_api_key
One email template with a single variable, order_id, and a workflow that sends it.
In-product Agent
Dashboard
Press Cmd+/ (Ctrl+/ on Windows) to open the In-product Agent side chat, and paste:
Create a workflow named "Order Shipped Notification" with a Workflow API triggerand a single channel email delivery node.For that email, create a template named "Order Shipped" with one variable, order_id.Subject: Your order has shippedBody: Order #{{order_id}} is on its way.Add {"order_id": "ORD-1234"} to the Input Payload.Commit both the template and the workflow live, then tell me both slugs.
Agent builds the template first, then the workflow that uses it, and commits both.
Agent building and committing both, then reporting the slugs
The committed template
The committed workflow
Create the template
Editing always works on a draft. Until you commit, a workflow triggering this template sends
the previous live version — or fails, if there is no live version.
Go to Templates and click + New Template.
Enter a Name — Order Shipped. The slug order-shipped is auto-generated from the
name and can’t be changed later. Click Create.
Create Template modal
Select Email as the channel, then choose Plain text only from the editor dropdown —
the quickest way to see your content render.
Choosing the plain text editor
The subject can be edited by clicking edit icon on top right of template editor. Set the
Subject to Your order has shipped and click Save.
Email Settings, where the subject is edited
Write the body: Order #{{order_id}} is on its way. — {{order_id}} is a placeholder, and
its value arrives in the payload you send when you trigger the workflow, in a later step.
Body with the order_id variable
Open the Variables panel — the {} icon in the far-left sidebar — click the edit icon
next to Input Payload, enter {"order_id": "ORD-1234"}, and click
Update Input Payload.
Input Payload, the sample data your preview renders with
The preview updates to Order #ORD-1234 is on its way.
Click Commit in the top right.
Plain text editor with the input payload set and the preview rendering
Create the workflowTwo nodes: a trigger that starts the workflow, and a delivery node that sends the email.
Go to Workflows and click + New Workflow.
Enter a Name — Order Shipped Notification — and pick a Notification Category, for
example Transactional. The slug order-shipped-notification is auto-generated from the
name. Click Create to open the workflow in draft.
Create Workflow modal
Open the Trigger node. Its Type is API — the trigger type you call from your
backend, naming the workflow and its recipients in the request. Workflow API is selected by
default when you make the workflow from dashboard manually. The panel also shows the
Workflow Slug you’ll use in your code.
Trigger node, with the workflow slug you'll call from your backend
Add a Single Channel delivery node, select Email, choose the order-shipped
template, and click Save.
Email delivery node using the order-shipped template
Click Commit in the top right to make the workflow live.
Only live templates appear in the delivery node. If order-shipped isn’t listed, it hasn’t
been committed yet.
You now have a live template, order-shipped, and a live workflow, order-shipped-notification.
Delays, batching, branches, and multi-channel routing are all added as extra nodes — see
Design workflow. For ready-made examples, browse the sample library from
Workflows → New Workflow → Use Sample Workflow.
Two calls go into your backend. The first tells SuprSend who your user is and how to reach them. The
second runs the workflow you just built.
AI editor
Write it yourself
One prompt writes both calls into your codebase. Paste it into Claude Code, Cursor, Windsurf, or
any other AI editor you use.
Recommended: connect your editor to SuprSend first. Your agent can then confirm the
workflow exists and check the user was created, instead of taking your word for it. The prompt
works without it.
Connect your editor to SuprSend (optional)
Add SuprSend’s hosted MCP server at https://mcp.suprsend.com/mcp and sign in with your
SuprSend account. The server also gives the agent SuprSend’s skills, so there’s nothing else to
install. Admins get every tool, and members get read-only tools except the two that show sent message content, messages_get_content and messages_preview_content.Claude Code — run in your terminal, not inside a claude session:
claude mcp add --transport http suprsend https://mcp.suprsend.com/mcp
On first connect, your editor opens a browser window to sign in. Confirm it worked by asking
your editor to list your SuprSend workflows. For other editors, see
connect your AI client.
No codebase yet? Use the cURL example in the next tab — it runs both calls from your terminal
with nothing to install.
Copy the integration prompt
Integrate SuprSend into this codebase.Already built — do not re-create these: a live workflow "order-shipped-notification"in the Sandbox workspace that takes one data field, order_id, and the emailtemplate behind it.My SuprSend credentials belong in my environment — SUPRSEND_WORKSPACE_KEY andSUPRSEND_WORKSPACE_SECRET for the SDKs, SUPRSEND_API_KEY for the REST API. Theguide had me put them there, but confirm with me rather than assuming.If the SuprSend MCP server is connected, use it. My workspace is "sandbox" — passit on every MCP call that takes a workspace. Use it to lookup exact SDK method names and payload shapes in the SuprSend docs instead ofwriting them from memory, to list the live workflows and confirm"order-shipped-notification" is there, and to fetch the user back from SuprSendafter you sync it. Use MCP to check your work, never to do the work — the syncand the trigger must run from this codebase's own code.If it isn't connected, carry on without it and tell me so.1. Work out what language this codebase is written in and install the matching SuprSend backend SDK — Node.js, Python, Java or Go. For any other language, call the REST API instead. Then tell me which credential that path needs — the workspace key and secret for an SDK, the API key for REST — and ask me to confirm it's actually set in my environment and not still a placeholder, before you write any code.2. Read both credentials from the environment in one shared place.3. Find where user records live in this codebase. Take one existing record and sync it to SuprSend: that record's own ID as distinct_id, plus an email address. Ask me which email to use, and tell me to pick an inbox I can actually open — any address works, but a fake one means I'll only see the send in the dashboard logs. If this codebase has no user records at all, tell me that and ask me before creating one — ask me for the email address to put on it, same rule.4. Trigger "order-shipped-notification" for that distinct_id, with data {"order_id": "ORD-1234"}. Sync the user before triggering, and name recipients by distinct_id only.5. Keep all SuprSend code in new files. In existing files, add only the single line that calls it — where this codebase already creates or updates a user record, and at whatever point here makes sense to notify someone. If neither has an obvious home, call it from a new file of its own and say so.6. Run both calls once and show me SuprSend's actual response to each. If you could not run them, say so plainly — do not tell me it worked.Read credentials from the environment, never hardcode them. Never put a SuprSendservice token in application code. Do not invent workflow slugs, SDK methodnames, or user properties.Finish with one line per file you created and per existing file you edited, thentell me to check the dashboard: Users for the profile, then Logs → Requests →Workflow executions → Messages for the send.
Your editor writes the same two calls shown in the next tab. Read the diff before you run it.
Install the SDK and create the client once. Both calls below reuse it.
import suprsend.Suprsend;Suprsend suprClient = new Suprsend( System.getenv("SUPRSEND_WORKSPACE_KEY"), System.getenv("SUPRSEND_WORKSPACE_SECRET"));
// go get github.com/suprsend/suprsend-goimport "github.com/suprsend/suprsend-go"suprClient, err := suprsend.NewClient( os.Getenv("SUPRSEND_WORKSPACE_KEY"), os.Getenv("SUPRSEND_WORKSPACE_SECRET"),)
# No client to initialise. Every request uses your API key:# Authorization: Bearer $SUPRSEND_API_KEY
Identify a userCall this wherever your app creates or updates a user record. distinct_id is SuprSend’s name for
the user identifier — pass whatever ID that record already has. You don’t create a new one.To try it now, run it once for a user that already exists. Use an email address you can actually
open, or you’ll only see the send in the dashboard logs.
const user = supr_client.user.get_instance("user_1a2b3c");user.add_email("you@example.com");const res = await user.save();console.log(res);
user = supr_client.user.get_instance("user_1a2b3c")user.add_email("you@example.com")res = user.save()print(res)
Subscriber user = suprClient.user.getInstance("user_1a2b3c");user.addEmail("you@example.com");JSONObject res = user.save();System.out.println(res);
user := suprClient.Users.GetInstance("user_1a2b3c")user.AddEmail("you@example.com")res, err := user.Save()
JSONObject body = new JSONObject() .put("workflow", "order-shipped-notification") .put("recipients", new JSONArray() .put(new JSONObject().put("distinct_id", "user_1a2b3c"))) .put("data", new JSONObject().put("order_id", "ORD-1234"));WorkflowTriggerRequest wf = new WorkflowTriggerRequest(body);JSONObject res = suprClient.workflows.trigger(wf);
The call names the user by distinct_id only — SuprSend already has their email from the previous
step. The keys in data fill your template’s variables, so order_id here becomes {{order_id}}
there.
Sandbox already has a user created from your registered email. You’re making your own anyway — the
point of this step is your code creating the profile, not the profile existing.
Open Logs in the dashboard. Under Requests you’ll
see both of your calls — user_update for the user you created, and workflow for the trigger.
Open the workflow execution to watch it run node by node, and to see the email reach the recipient.
Now check that inbox. The email is there, sent by code you wrote.
Sandbox is a trial workspace: it expires 30 days after signup and has capped usage. Everything you
built here — the template, the workflow, and the two calls in your backend — works the same in
Staging and Production once you connect your own vendor.
The slug in your trigger call doesn’t match a live workflow. Either it’s a typo, or the workflow is
still a draft. Open it and check the badge reads Live — if it doesn’t, commit it.
Request failed: authentication error
You’re using the wrong credential for the path you’re on. Backend SDKs take the Workspace Key and
Secret. The REST API takes an API Key as Authorization: Bearer. A Service Token works for
neither — it’s for the CLI and the Management API.
The send succeeded but no email arrived at all
Sandbox only delivers to verified channels — a short list you control at
Developers → Verified Channels,
up to 5 per channel type. If the recipient’s address isn’t on that list, nothing arrives.
Nothing arrived, but the workflow shows Completed
A completed execution means every node ran, not that a message was delivered. A channel only sends
when all four are true:
The template has live content for that channel
The user has an identity for it — an email address, in this case
The user hasn’t opted out
A vendor is connected
The workflow execution log names which one failed. The most common cause here is a user synced
without an email address, so check the profile under Users first.
The email failed with missing variables in template
The key in your trigger’s data doesn’t match the variable in your template. data must contain
order_id for {{order_id}} to resolve — a missing key doesn’t render as a blank, it fails the
render and the email isn’t sent. No message is created for it, so open the run under
Logs → Workflow Executions to see the error.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"SuprSend: API-first notification infrastructure","colors":{"primary":"#2E70E8","light":"#63A3F7","dark":"#2E70E8"},"logo":"https://mintcdn.com/suprsend/CMaQBA3E8wM1DyFj/images/suprsend-logo.svg?fit=max\u0026auto=format\u0026n=CMaQBA3E8wM1DyFj\u0026q=85\u0026s=f325b9764c629a0b488476db369b8d47","favicon":"https://mintcdn.com/suprsend/5H8hv-jDy8OaCsyX/favicon.svg?fit=max\u0026auto=format\u0026n=5H8hv-jDy8OaCsyX\u0026q=85\u0026s=e9c88c84e18f0fd4a64adb33f5fa3603","api":{"openapi":"openapi.yaml"},"background":{"decoration":"windows"},"navbar":{"links":[{"href":"mailto:support@suprsend.com","label":"Contact Us"}],"primary":{"type":"button","label":"Get Started","href":"https://app.suprsend.com"}},"footer":{"socials":{"x":"https://x.com/suprsend","github":"https://github.com/suprsend","linkedin":"https://linkedin.com/company/suprsend","youtube":"https://youtube.com/@suprsend"}},"seo":{"indexing":"all"},"fonts":{"family":"Inter"},"styling":{"codeblocks":"system","latex":true},"integrations":{"ga4":{"measurementId":"G-PPDYBESP2L"},"gtm":{"tagId":"GTM-T6W3P8RG"},"mixpanel":{"projectToken":"2febb9e078d777860c5624f2579507a7"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"slack","color":{"light":"#f59f0b","dark":"#f59f0b"},"href":"https://join.slack.com/t/suprsendcommunity/shared_invite/zt-3932rw936-XNWY1RC8bsffh4if4ZyoXQ"},{"anchor":"Trust Center","icon":"shield-halved","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://trust.suprsend.com"},{"anchor":"Platform Status","icon":"wifi","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://status.suprsend.com"},{"anchor":"Postman Collection","icon":"code","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://www.postman.com/suprsend/suprsend/collection/16bdmwa/suprsend-apis"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"suprsend","hasAudioNarration":false,"actualSubdomain":"suprsend","customDomains":["docs.suprsend.com"],"gitSource":{"type":"github","owner":"suprsend","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae333734c2492fe62cb5f9a","collectionId":"37278b68-1dc8-4a19-977b-205d552098f2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae333734c2492fe62cb5f9a"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae333734c2492fe62cb5f9a","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Documentation","count":151},{"language":"default","tag":"Developer Resources","count":105},{"language":"default","tag":"Management API","count":91},{"language":"default","tag":"API Reference","count":86},{"language":"default","tag":"SDKs and APIs","count":81},{"language":"default","tag":"SDKs","count":78},{"language":"default","tag":"CORE CONCEPTS","count":57},{"language":"default","tag":"CLI","count":50},{"language":"default","tag":"SuprSend Client SDK","count":43},{"language":"default","tag":"SuprSend Backend SDK","count":34}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@suprsend.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img{max-width:100%;height:auto}table{display:block}code,pre,table{overflow-x:auto;max-width:100%}@media (max-width:768px){img[width]{width:100%!important;max-width:100%!important;height:auto!important}pre{font-size:13px}}a.card[href=\"https://skills.sh/suprsend/skills\"]{position:relative}a.card[href=\"https://skills.sh/suprsend/skills\"]>img{position:absolute!important;top:1.25rem!important;left:1.5rem!important;width:1.5rem!important;height:1.5rem!important;max-width:1.5rem!important;max-height:1.5rem!important;min-height:1.5rem!important;object-fit:contain!important;z-index:1}a.card[href=\"https://skills.sh/suprsend/skills\"] .px-6.py-5{padding-top:3.25rem!important}a.card[href=\"https://skills.sh/suprsend/skills\"] h2{margin-top:0!important}[data-component-name=mermaid-controls-wrapper]{display:none!important}.mermaid .cluster-label,.mermaid .cluster-label p,.mermaid .edgeLabel,.mermaid .edgeLabel p,.mermaid .nodeLabel,.mermaid .nodeLabel p{color:#4d4d4d!important}.mermaid .cluster-label,.mermaid .edgeLabel,.mermaid .nodeLabel,.mermaid text{fill:#4d4d4d!important}.dark .mermaid .cluster-label,.dark .mermaid .cluster-label p,.dark .mermaid .edgeLabel,.dark .mermaid .edgeLabel p,.dark .mermaid .nodeLabel,.dark .mermaid .nodeLabel p{color:#ccc!important}.dark .mermaid .cluster-label,.dark .mermaid .edgeLabel,.dark .mermaid .nodeLabel,.dark .mermaid text{fill:#ccc!important}.changelog-page-content{padding:0 7rem}@media (max-width:768px){.changelog-page-content{padding:0 1rem}}.ss-flow{--ss-ink:#1f2937;--ss-muted:#6b7280;--ss-line:#e5e7eb;--ss-accent:#2e70e8;--ss-core-bg:#f5f8fe;--ss-core-line:#d4e2fb;--ss-arrow:#9ca3af;display:grid;grid-template-columns:minmax(0,1fr) 1.5rem minmax(0,2.1fr) 1.5rem minmax(0,1fr);align-items:center;margin:1.75rem 0 2rem;font-size:.875rem;line-height:1.4;color:var(--ss-ink)}.dark .ss-flow{--ss-ink:#e5e7eb;--ss-muted:#9ca3af;--ss-line:rgba(255, 255, 255, 0.12);--ss-accent:#63a3f7;--ss-core-bg:rgba(46, 112, 232, 0.1);--ss-core-line:rgba(99, 163, 247, 0.28);--ss-arrow:#6b7280}.ss-flow .ss-flow__label{margin:0 0 .5rem;font-size:.75rem;font-weight:600;color:var(--ss-muted)}.ss-flow .ss-flow__list{list-style:none;margin:0;padding:.5rem .75rem;border:1px solid var(--ss-line);border-radius:10px;font-size:.8125rem}.ss-flow .ss-flow__list li{margin:0;padding:.3125rem 0}.ss-flow .ss-flow__arrow{position:relative;height:1px;margin:1.25rem .25rem 0 .125rem;background:var(--ss-arrow)}.ss-flow .ss-flow__arrow::after{content:\"\";position:absolute;top:-4px;right:-1px;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;border-left:6px solid var(--ss-arrow)}.ss-flow .ss-flow__core{overflow:hidden;border:1px solid var(--ss-core-line);border-radius:14px;background:var(--ss-core-bg)}.ss-flow .ss-flow__label--core{margin:0;padding:.875rem 1rem 0;font-size:.875rem;color:var(--ss-accent)}.ss-flow .ss-flow__stages{list-style:none;margin:0;padding:.875rem 1rem 1rem}.ss-flow .ss-flow__stage{position:relative;margin:0;padding:0 0 1rem 1.5rem}.ss-flow .ss-flow__stage:last-child{padding-bottom:0}.ss-flow .ss-flow__stage::before{content:\"\";position:absolute;top:.3rem;left:0;z-index:1;width:.625rem;height:.625rem;border-radius:50%;background:var(--ss-accent)}.ss-flow .ss-flow__stage::after{content:\"\";position:absolute;top:.5rem;bottom:-.5rem;left:calc(.3125rem - 1px);width:2px;background:var(--ss-core-line)}.ss-flow .ss-flow__stage:last-child::after{display:none}.ss-flow .ss-flow__stage strong{display:block}.ss-flow .ss-flow__stage span{display:block;margin-top:.125rem;font-size:.8125rem;color:var(--ss-muted)}.ss-flow .ss-flow__logs{margin:0;padding:.625rem 1rem;border-top:1px dashed var(--ss-core-line);font-size:.8125rem;color:var(--ss-muted)}.ss-flow .ss-flow__logs strong,.ss-flow .ss-flow__stage strong{font-weight:600;color:var(--ss-ink)}@media (max-width:640px){.ss-flow{grid-template-columns:minmax(0,1fr)}.ss-flow .ss-flow__list{display:flex;flex-wrap:wrap;gap:0 1rem}.ss-flow .ss-flow__arrow{width:1px;height:1.25rem;margin:.5rem auto}.ss-flow .ss-flow__arrow::after{top:auto;right:auto;bottom:-1px;left:-4px;border-top:6px solid var(--ss-arrow);border-right:4.5px solid transparent;border-bottom:0;border-left:4.5px solid transparent}}"}],"page":{"pagePath":"docs/integrate-suprsend","slug":"/docs/integrate-suprsend","pageMetadata":{"title":"Integrate SuprSend","sidebarTitle":"Integrate SuprSend","description":"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.","href":"/docs/integrate-suprsend"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Check,CodeBlock,CodeGroup,Frame,Heading,Note,OptimizedImage,Tab,Table,Tabs,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Check)_missingMdxReference(`Check`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This guide takes you from a new SuprSend account to a notification sent from your own code. By the end, you’ll have built a template and a workflow in SuprSend, and added two calls to your backend: one that identifies a user, and one that triggers the workflow. You’ll then confirm in logs whether the notification was sent.`}),`\n`,_jsx(_components.p,{children:`Everything in this guide runs in your Sandbox workspace and uses the email channel. Because it’s a sandbox, an email vendor is already connected — there’s nothing to set up before you send.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`This guide assumes you’ve read `,_jsx(_components.a,{href:`/docs/core-concepts`,children:`Core concepts`}),`. It uses template, user,\nworkflow, and logs without redefining them.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`set-up`,children:`Set up`}),`\n`,_jsx(Heading,{level:`3`,id:`sign-up-and-start-in-sandbox`,children:`Sign up and start in Sandbox`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://auth.suprsend.com/sign-up`,children:`Create your SuprSend account`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Three workspaces are created automatically — `,_jsx(_components.strong,{children:`Sandbox`}),`, `,_jsx(_components.strong,{children:`Staging`}),`, and `,_jsx(_components.strong,{children:`Production`}),`. Switch\nbetween them from the top navigation bar. Stay in `,_jsx(_components.strong,{children:`Sandbox`}),` for this guide: it already has an\nemail vendor connected, so there’s nothing to configure before you send.`]}),`\n`,_jsx(Heading,{level:`3`,id:`get-your-credentials`,children:`Get your credentials`}),`\n`,_jsx(_components.p,{children:`SuprSend uses different credentials for different jobs. You won’t need all three.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Credential`}),_jsx(_components.th,{children:`Authenticates`}),_jsx(_components.th,{children:`Where`}),_jsx(_components.th,{children:`You need it if`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Workspace Key + Secret`})}),_jsx(_components.td,{children:`Backend SDKs — Node.js, Python, Java, Go`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://app.suprsend.com/en/sandbox/developers/api-keys`,children:`Developers → API Keys`}),`, top of the page`]}),_jsx(_components.td,{children:`Your backend is in one of those four languages`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`API Key`})}),_jsx(_components.td,{children:`REST API calls`}),_jsxs(_components.td,{children:[_jsx(_components.a,{href:`https://app.suprsend.com/en/sandbox/developers/api-keys`,children:`Developers → API Keys`}),` → `,_jsx(_components.strong,{children:`Generate API Key`})]}),_jsx(_components.td,{children:`It isn’t — you’ll call the REST API directly`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Service Token`})}),_jsx(_components.td,{children:`The CLI and the Management API`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`https://app.suprsend.com/en/account-settings/service-tokens`,children:`Account Settings → Service Tokens`})}),_jsx(_components.td,{children:`You’ll use the CLI or the Management API`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.suprsend.com/en/sandbox/developers/api-keys`,children:_jsx(_components.strong,{children:`Developers → API Keys`})}),` and\ncopy your `,_jsx(_components.strong,{children:`Workspace Key`}),` and `,_jsx(_components.strong,{children:`Workspace Secret`}),` — that’s what the code in this guide uses by\ndefault. If you are generating an `,_jsx(_components.strong,{children:`API Key`}),` instead, it’s on the same page and is shown only\nonce, so copy it before closing the dialog.`]}),`\n`,_jsx(_components.p,{children:`Store them as environment variables:`}),`\n`,_jsx(CodeBlock,{filename:`.env`,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SUPRSEND_WORKSPACE_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your_workspace_key`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SUPRSEND_WORKSPACE_SECRET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your_workspace_secret`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Only if you're calling the REST API instead of using an SDK`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`SUPRSEND_API_KEY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`your_api_key`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`build-the-notification`,children:`Build the notification`}),`\n`,_jsxs(_components.p,{children:[`One email template with a single variable, `,_jsx(_components.code,{children:`order_id`}),`, and a workflow that sends it.`]}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`In-product Agent`,id:`in-product-agent`,children:[_jsxs(_components.p,{children:[`Press `,_jsx(_components.code,{children:`Cmd+/`}),` (`,_jsx(_components.code,{children:`Ctrl+/`}),` on Windows) to open the In-product Agent side chat, and paste:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Create a workflow named \"Order Shipped Notification\" with a Workflow API trigger`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`and a single channel email delivery node.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`For that email, create a template named \"Order Shipped\" with one variable, order_id.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Subject: Your order has shipped`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Body: Order #{{order_id}} is on its way.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Add {\"order_id\": \"ORD-1234\"} to the Input Payload.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Commit both the template and the workflow live, then tell me both slugs.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:`Agent builds the template first, then the workflow that uses it, and commits both.`}),_jsx(Frame,{caption:`Agent building and committing both, then reporting the slugs`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=544c2be86a4310ddada3e94465a95c26`,alt:`In-product Agent completing six tasks to create and commit the Order Shipped template and the Order Shipped Notification workflow, ending with both slugs`,\"data-og-width\":`2020`,width:`2020`,\"data-og-height\":`1592`,height:`1592`,\"data-path\":`images/basic-setup-agent-build.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=150bbb7bc98e7b0befa684c8ea310e58 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=4ea1eaf9e40f7282556dbbd6906a7563 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=5ef087010057d9cf56045d304e3172d4 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=82f287a6d70c193f9e96c489b9b57de9 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=2b56d401acc8580e3b06cc3bb60e8e5f 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-agent-build.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=339c2345d1f41ce1bb5e0042c18be09c 2500w`})}),_jsx(Frame,{caption:`The committed template`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=bedb8b7c629782d412549fc6a15035e4`,alt:`Order Shipped template marked Live, with the input payload on the left and the preview rendering Order #ORD-1234 is on its way`,\"data-og-width\":`2654`,width:`2654`,\"data-og-height\":`1130`,height:`1130`,\"data-path\":`images/basic-setup-template-agent-response.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=15cd6351877abe97f89759074c0963c5 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=a22bf26a517c36d26d3c7adc97993f7b 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=1b981790154748f372ef34d1a7245b6b 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=09c3223830286ab48a9cc51654285d44 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=baba96733fc198321d8555bc995dc259 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-agent-response.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=1f775091827b72007ebae83e7cb31efe 2500w`})}),_jsx(Frame,{caption:`The committed workflow`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=242974bfaf17b85287f5d17977ee4663`,alt:`Order Shipped Notification workflow marked Live, showing the Trigger via API node and an Email node using the order-shipped template`,\"data-og-width\":`2582`,width:`2582`,\"data-og-height\":`916`,height:`916`,\"data-path\":`images/basic-setup-wf-by-agent.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=1421d65f3cd6168411548ec68a16a377 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3337c9501d0155feb7b4be16e5133d07 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=a830d256f0f3d770cce7d4144f756e04 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=bc37a73585e3734db1adbadbd83f65e4 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=2211a146080f39c92a00b8ee75524619 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-by-agent.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=6ec39b380874a65d3600ff004808c119 2500w`})})]}),_jsxs(Tab,{title:`Dashboard`,id:`dashboard`,children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`Create the template`})}),_jsx(Warning,{children:_jsx(_components.p,{children:`Editing always works on a draft. Until you commit, a workflow triggering this template sends\nthe previous live version — or fails, if there is no live version.`})}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Templates`}),` and click `,_jsx(_components.strong,{children:`+ New Template`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Enter a `,_jsx(_components.strong,{children:`Name`}),` — `,_jsx(_components.code,{children:`Order Shipped`}),`. The slug `,_jsx(_components.code,{children:`order-shipped`}),` is auto-generated from the\nname and can’t be changed later. Click `,_jsx(_components.strong,{children:`Create`}),`.`]}),`\n`,_jsx(Frame,{caption:`Create Template modal`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=99866a7f0b6040b57882c42f80ac752e`,alt:`Create Template modal with the name Order Shipped and the auto-generated slug order-shipped`,\"data-og-width\":`2940`,width:`2940`,\"data-og-height\":`1658`,height:`1658`,\"data-path\":`images/basic-setup-tmp-create-modal.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=e367f8ad015c8faab26df477655d0256 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=151050b0b09b99e0040991a91a1a6c3a 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=0ffaef5de01ac723f43c487e14221ec4 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=53dd3e335d9b9bca22c8428d0851ae40 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=b220520d0cdf0b6b5c1e44ac0413bfe3 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-create-modal.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=7246753bfede32cd03b36e8feabaccb3 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Select `,_jsx(_components.strong,{children:`Email`}),` as the channel, then choose `,_jsx(_components.strong,{children:`Plain text only`}),` from the editor dropdown —\nthe quickest way to see your content render.`]}),`\n`,_jsx(Frame,{caption:`Choosing the plain text editor`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=ebc0fc11f4096742b7aefdd1c6218362`,alt:`Email template editor with the editor dropdown open and Plain text only selected`,\"data-og-width\":`458`,width:`458`,\"data-og-height\":`566`,height:`566`,\"data-path\":`images/basic-setup-tmp-choose-editor.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d3fb8b23ed400a4346cc51d30a901eef 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3f5964b9ed41763494ada19e383825bb 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=c124ffdb27476108f3495645d63c91a5 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=95dec557826e2c24052412bcb75e598b 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=616af90707a77367be621775cd905a15 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-choose-editor.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=17459dc4dda17638d762498d23dfd519 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`The subject can be edited by clicking edit icon on top right of template editor. Set the\n`,_jsx(_components.strong,{children:`Subject`}),` to `,_jsx(_components.code,{children:`Your order has shipped`}),` and click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`,_jsx(Frame,{caption:`Email Settings, where the subject is edited`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=56594659b8e28b36c6c9505118319096`,alt:`Email Settings modal with the subject set to Your order has shipped`,\"data-og-width\":`2196`,width:`2196`,\"data-og-height\":`1586`,height:`1586`,\"data-path\":`images/basic-setup-tmp-subject.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=481f84e0e6439af576bcc4737b9874d8 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3be802ad52ba54b831f87342b96dd969 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=0db219fe1a989eb1638677c184ea6b1f 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=54a784d29b2c65db72e616395b2c9ca3 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d499d600fc1abca26f4f419cb43c1a20 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-subject.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3a021209abe546bad4edc0baba74e711 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Write the body: `,_jsx(_components.code,{children:`Order #{{order_id}} is on its way.`}),` — `,_jsx(_components.code,{children:`{{order_id}}`}),` is a placeholder, and\nits value arrives in the payload you send when you trigger the workflow, in a later step.`]}),`\n`,_jsx(Frame,{caption:`Body with the order_id variable`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=dfdc2291ed8eba5475b4765ec4bf4694`,alt:`Plain text email body reading Order #{{order_id}} is on its way`,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`1586`,height:`1586`,\"data-path\":`images/basic-setup-tmp-body.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d75d242a83f892dd94c1d945347f3f5d 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=8f655a4db0dd03a8ae83390be3455f5c 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=6a99ed317487894c1de0834828d5ccca 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f9a04611ddef6b75da8deca7d568303d 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d6b058e03c4ebb1d7978b93192edc2b6 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-body.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=81ee3f94bb13f371a8e4614eca8d90ed 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Open the `,_jsx(_components.strong,{children:`Variables`}),` panel — the `,_jsx(_components.code,{children:`{}`}),` icon in the far-left sidebar — click the edit icon\nnext to `,_jsx(_components.strong,{children:`Input Payload`}),`, enter `,_jsx(_components.code,{children:`{\"order_id\": \"ORD-1234\"}`}),`, and click\n`,_jsx(_components.strong,{children:`Update Input Payload`}),`.`]}),`\n`,_jsx(Frame,{caption:`Input Payload, the sample data your preview renders with`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=a5cf41bf79c678334a04dbd1e0c99650`,alt:`Input Payload modal containing the JSON order_id set to ORD-1234`,\"data-og-width\":`2940`,width:`2940`,\"data-og-height\":`1662`,height:`1662`,\"data-path\":`images/basic-setup-tmp-input-payload.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=9fa010ca26d408dd1d976f2a9da7a81e 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=38d2edce45a95ba3df4acb38c8403564 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=8dd5f6c6810974714be9d53979336740 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f94c55c8273de6bbf743c32ba3789452 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=9a536a1ae4cd84fbf520477f7841202f 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-tmp-input-payload.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=6963c286f4cd1654331cf5d88a6f29ed 2500w`})}),`\n`,_jsxs(_components.p,{children:[`The preview updates to `,_jsx(_components.code,{children:`Order #ORD-1234 is on its way.`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Commit`}),` in the top right.`]}),`\n`]}),`\n`]}),_jsx(Frame,{caption:`Plain text editor with the input payload set and the preview rendering`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=32617009f1ecf16b29fd9c1c849ada90`,alt:`SuprSend email template editor in plain text mode, with order_id set to ORD-1234 in the input payload and the preview showing the rendered body`,\"data-og-width\":`2652`,width:`2652`,\"data-og-height\":`1216`,height:`1216`,\"data-path\":`images/basic-setup-template-text-editor.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f23486fefb49a8b2b173c4d2c232bc07 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=350dfc464fa31dfcf616ea860dd95ef3 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=6cfdd07740ccd9d0feef195781594360 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f26fc235d4faa72509e8b84195a8b52f 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f5645df39013ca235aad8713a2e90364 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-template-text-editor.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=a6dab291f21da3abfff0135ca1a037e0 2500w`})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Create the workflow`})}),_jsx(_components.p,{children:`Two nodes: a trigger that starts the workflow, and a delivery node that sends the email.`}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Workflows`}),` and click `,_jsx(_components.strong,{children:`+ New Workflow`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Enter a `,_jsx(_components.strong,{children:`Name`}),` — `,_jsx(_components.code,{children:`Order Shipped Notification`}),` — and pick a `,_jsx(_components.strong,{children:`Notification Category`}),`, for\nexample `,_jsx(_components.code,{children:`Transactional`}),`. The slug `,_jsx(_components.code,{children:`order-shipped-notification`}),` is auto-generated from the\nname. Click `,_jsx(_components.strong,{children:`Create`}),` to open the workflow in draft.`]}),`\n`,_jsx(Frame,{caption:`Create Workflow modal`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=65705cba7ea03c4ac1aee69f6a4875bd`,alt:`Create Workflow modal with the name Order Shipped Notification and the Transactional notification category selected`,\"data-og-width\":`2940`,width:`2940`,\"data-og-height\":`1658`,height:`1658`,\"data-path\":`images/basic-setup-wf-create-modal.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=6286e48fedfccdbde50dcc7c60928ceb 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=83583b46513e7f00397245bd198466a8 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d1f931c72f527698f7979985823bb963 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=2bdba375515a08c88c3a6dc2cc24dec8 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=16d48ea28fcfdc783b48d7df094825bd 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-create-modal.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f7a520c2bf7c50fe5d79c94270f2cab9 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Open the `,_jsx(_components.strong,{children:`Trigger`}),` node. Its `,_jsx(_components.strong,{children:`Type`}),` is `,_jsx(_components.strong,{children:`API`}),` — the trigger type you call from your\nbackend, naming the workflow and its recipients in the request. Workflow API is selected by\ndefault when you make the workflow from dashboard manually. The panel also shows the\n`,_jsx(_components.strong,{children:`Workflow Slug`}),` you’ll use in your code.`]}),`\n`,_jsx(Frame,{caption:`Trigger node, with the workflow slug you'll call from your backend`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=acfc449b1c74aeabe05e5add7496e736`,alt:`Trigger node panel with Type set to API and the workflow slug order-shipped-notification`,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`1586`,height:`1586`,\"data-path\":`images/basic-setup-wf-trigger-node.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=076787f483c016a81067537998d9a480 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=39473f9b9fdb4ab3f39e390b7bc10996 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=4f60144786a6b8251a0943fd5e906662 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=a64c286f0297a0c65442866038b1044a 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=d89385745beb4c0992705da68c29ddf2 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-trigger-node.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=1ae65450da87a0a10f979d89236c90fc 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Add a `,_jsx(_components.strong,{children:`Single Channel`}),` delivery node, select `,_jsx(_components.strong,{children:`Email`}),`, choose the `,_jsx(_components.code,{children:`order-shipped`}),`\ntemplate, and click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`,_jsx(Frame,{caption:`Email delivery node using the order-shipped template`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=fd88d832648f3ed680012e6f081f1f0d`,alt:`Email delivery node panel with the order-shipped template selected from the template dropdown`,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`1586`,height:`1586`,\"data-path\":`images/basic-setup-wf-send-node.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=b484db8f150603a6dcba19339095247d 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=15ea9f3ade9a6d9896d556ed6d6449c2 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=2dc901f8745cd4986e5f9d7389b2d0af 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=39a63d83cf0b39161eee5b31e3b5ada7 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=83a3840bafb953b3ccdd175373ca4ce2 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-wf-send-node.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=7194e255aa585f2c5d8f6f99b5fc0798 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Commit`}),` in the top right to make the workflow live.`]}),`\n`]}),`\n`]}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Only live templates appear in the delivery node. If `,_jsx(_components.code,{children:`order-shipped`}),` isn’t listed, it hasn’t\nbeen committed yet.`]})})]})]}),`\n`,_jsxs(_components.p,{children:[`You now have a live template, `,_jsx(_components.code,{children:`order-shipped`}),`, and a live workflow, `,_jsx(_components.code,{children:`order-shipped-notification`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Delays, batching, branches, and multi-channel routing are all added as extra nodes — see\n`,_jsx(_components.a,{href:`/docs/design-workflow`,children:`Design workflow`}),`. For ready-made examples, browse the sample library from\n`,_jsx(_components.strong,{children:`Workflows → New Workflow → Use Sample Workflow`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`identify-a-user-and-trigger-the-workflow`,children:`Identify a user and trigger the workflow`}),`\n`,_jsx(_components.p,{children:`Two calls go into your backend. The first tells SuprSend who your user is and how to reach them. The\nsecond runs the workflow you just built.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`AI editor`,id:`ai-editor`,children:[_jsx(_components.p,{children:`One prompt writes both calls into your codebase. Paste it into Claude Code, Cursor, Windsurf, or\nany other AI editor you use.`}),_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Recommended:`}),` connect your editor to SuprSend first. Your agent can then confirm the\nworkflow exists and check the user was created, instead of taking your word for it. The prompt\nworks without it.`]})}),_jsxs(Accordion,{title:`Connect your editor to SuprSend (optional)`,id:`connect-your-editor-to-suprsend-optional`,children:[_jsxs(_components.p,{children:[`Add SuprSend’s hosted MCP server at `,_jsx(_components.code,{children:`https://mcp.suprsend.com/mcp`}),` and sign in with your\nSuprSend account. The server also gives the agent SuprSend’s skills, so there’s nothing else to\ninstall. Admins get every tool, and members get read-only tools except the two that show sent message content, `,_jsx(_components.code,{children:`messages_get_content`}),` and `,_jsx(_components.code,{children:`messages_preview_content`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Claude Code`}),` — run in your terminal, not inside a `,_jsx(_components.code,{children:`claude`}),` session:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`claude`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` add`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transport`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` http`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` suprsend`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://mcp.suprsend.com/mcp`})]}),`\n`]})})}),_jsxs(_components.p,{children:[`On first connect, your editor opens a browser window to sign in. Confirm it worked by asking\nyour editor to list your SuprSend workflows. For other editors, see\n`,_jsx(_components.a,{href:`/reference/mcp-overview#how-to-connect`,children:`connect your AI client`}),`.`]})]}),_jsx(Note,{children:_jsx(_components.p,{children:`No codebase yet? Use the cURL example in the next tab — it runs both calls from your terminal\nwith nothing to install.`})}),_jsx(Accordion,{title:`Copy the integration prompt`,id:`copy-the-integration-prompt`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`51`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`51`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Integrate SuprSend into this codebase.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Already built — do not re-create these: a live workflow \"order-shipped-notification\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`in the Sandbox workspace that takes one data field, order_id, and the email`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`template behind it.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`My SuprSend credentials belong in my environment — SUPRSEND_WORKSPACE_KEY and`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`SUPRSEND_WORKSPACE_SECRET for the SDKs, SUPRSEND_API_KEY for the REST API. The`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`guide had me put them there, but confirm with me rather than assuming.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`If the SuprSend MCP server is connected, use it. My workspace is \"sandbox\" — pass`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`it on every MCP call that takes a workspace. Use it to look`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`up exact SDK method names and payload shapes in the SuprSend docs instead of`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`writing them from memory, to list the live workflows and confirm`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"order-shipped-notification\" is there, and to fetch the user back from SuprSend`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`after you sync it. Use MCP to check your work, never to do the work — the sync`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`and the trigger must run from this codebase's own code.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`If it isn't connected, carry on without it and tell me so.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. Work out what language this codebase is written in and install the matching`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` SuprSend backend SDK — Node.js, Python, Java or Go. For any other language,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` call the REST API instead. Then tell me which credential that path needs —`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` the workspace key and secret for an SDK, the API key for REST — and ask me`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` to confirm it's actually set in my environment and not still a placeholder,`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` before you write any code.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. Read both credentials from the environment in one shared place.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. Find where user records live in this codebase. Take one existing record and`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` sync it to SuprSend: that record's own ID as distinct_id, plus an email`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` address. Ask me which email to use, and tell me to pick an inbox I can`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` actually open — any address works, but a fake one means I'll only see the`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` send in the dashboard logs. If this codebase has no user records at all, tell`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` me that and ask me before creating one — ask me for the email address to put`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` on it, same rule.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. Trigger \"order-shipped-notification\" for that distinct_id, with data`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` {\"order_id\": \"ORD-1234\"}. Sync the user before triggering, and name`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` recipients by distinct_id only.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`5. Keep all SuprSend code in new files. In existing files, add only the single`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` line that calls it — where this codebase already creates or updates a user`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` record, and at whatever point here makes sense to notify someone. If neither`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` has an obvious home, call it from a new file of its own and say so.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`6. Run both calls once and show me SuprSend's actual response to each. If you`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` could not run them, say so plainly — do not tell me it worked.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Read credentials from the environment, never hardcode them. Never put a SuprSend`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`service token in application code. Do not invent workflow slugs, SDK method`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`names, or user properties.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Finish with one line per file you created and per existing file you edited, then`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`tell me to check the dashboard: Users for the profile, then Logs → Requests →`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Workflow executions → Messages for the send.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})}),_jsx(_components.p,{children:`Your editor writes the same two calls shown in the next tab. Read the diff before you run it.`})]}),_jsxs(Tab,{title:`Write it yourself`,id:`write-it-yourself`,children:[_jsx(_components.p,{children:`Install the SDK and create the client once. Both calls below reuse it.`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`7`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// npm install @suprsend/node-sdk`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`Suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` require`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"@suprsend/node-sdk\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` supr_client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`SUPRSEND_WORKSPACE_KEY`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`SUPRSEND_WORKSPACE_SECRET`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`8`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# pip install suprsend-py-sdk`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` suprsend `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Suprsend`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`supr_client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Suprsend(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os.environ[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_SECRET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`6`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` suprsend.Suprsend;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprClient`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_SECRET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`7`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// go get github.com/suprsend/suprsend-go`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#CE9178`},children:`github.com/suprsend/suprsend-go`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`suprClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`NewClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` os`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Getenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` os`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Getenv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPRSEND_WORKSPACE_SECRET\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# No client to initialise. Every request uses your API key:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Authorization: Bearer $SUPRSEND_API_KEY`})}),`\n`]})})})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Identify a user`})}),_jsxs(_components.p,{children:[`Call this wherever your app creates or updates a user record. `,_jsx(_components.code,{children:`distinct_id`}),` is SuprSend’s name for\nthe user identifier — pass whatever ID that record already has. You don’t create a new one.`]}),_jsx(_components.p,{children:`To try it now, run it once for a user that already exists. Use an email address you can actually\nopen, or you’ll only see the send in the dashboard logs.`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`5`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` supr_client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`get_instance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`add_email`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"you@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`save`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`5`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`user `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` supr_client.user.get_instance(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`user.add_email(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"you@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`res `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` user.save()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(res)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`5`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`Subscriber`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`addEmail`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"you@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`save`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`System`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`out`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`println`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(res);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`4`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Users`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`GetInstance`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`AddEmail`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"you@example.com\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` user`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Save`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://hub.suprsend.com/v1/user/user_1a2b3c/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SUPRSEND_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{ \"$email\": [\"you@example.com\"] }'`})]}),`\n`]})})})]}),_jsx(_components.p,{children:`It upserts: the first call creates the profile, later calls update it.`}),_jsx(Check,{children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Users`}),` in the dashboard and open `,_jsx(_components.code,{children:`user_1a2b3c`}),`. The Channels panel shows the email\naddress you just set.`]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Trigger the workflow`})}),_jsx(_components.p,{children:`This goes at the moment the thing actually happens — here, when an order ships.`}),_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`Node.js`,numberOfLines:`10`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`WorkflowTriggerRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` require`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"@suprsend/node-sdk\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` w1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` WorkflowTriggerRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` workflow:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"order-shipped-notification\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` recipients:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [{ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`distinct_id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` data:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`order_id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ORD-1234\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` supr_client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`workflows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`trigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`w1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,numberOfLines:`10`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`10`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` suprsend `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` WorkflowTriggerRequest`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`w1 `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` WorkflowTriggerRequest(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`body`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workflow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order-shipped-notification\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"recipients\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"distinct_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ORD-1234\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`res `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` supr_client.workflows.trigger(w1)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(res)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Java`,numberOfLines:`8`,language:`java`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`java`,children:_jsxs(_components.code,{language:`java`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"workflow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order-shipped-notification\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"recipients\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` JSONArray`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"distinct_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)))`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` .`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`().`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`put`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ORD-1234\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`));`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`WorkflowTriggerRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` wf`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` WorkflowTriggerRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(body);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#4EC9B0`},children:`JSONObject`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` res`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`workflows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`trigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(wf);`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,numberOfLines:`9`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`w1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u0026`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`suprsend`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`WorkflowTriggerRequest`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Body`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{}{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workflow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order-shipped-notification\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"recipients\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{}{{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"distinct_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user_1a2b3c\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`map`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#4EC9B0`},children:`string`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`interface`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{}{`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"order_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ORD-1234\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`res`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` :=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` suprClient`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Workflows`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Trigger`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`w1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --request`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://hub.suprsend.com/trigger/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$SUPRSEND_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --header`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type: application/json'`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --data`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"workflow\": \"order-shipped-notification\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"recipients\": [{ \"distinct_id\": \"user_1a2b3c\" }],`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"data\": { \"order_id\": \"ORD-1234\" }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})]}),_jsxs(_components.p,{children:[`The call names the user by `,_jsx(_components.code,{children:`distinct_id`}),` only — SuprSend already has their email from the previous\nstep. The keys in `,_jsx(_components.code,{children:`data`}),` fill your template’s variables, so `,_jsx(_components.code,{children:`order_id`}),` here becomes `,_jsx(_components.code,{children:`{{order_id}}`}),`\nthere.`]})]})]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Sandbox already has a user created from your registered email. You’re making your own anyway — the\npoint of this step is your code creating the profile, not the profile existing.`})}),`\n`,_jsx(Heading,{level:`2`,id:`confirm-delivery`,children:`Confirm delivery`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.a,{href:`https://app.suprsend.com/en/sandbox/logs`,children:_jsx(_components.strong,{children:`Logs`})}),` in the dashboard. Under `,_jsx(_components.strong,{children:`Requests`}),` you’ll\nsee both of your calls — `,_jsx(_components.code,{children:`user_update`}),` for the user you created, and `,_jsx(_components.code,{children:`workflow`}),` for the trigger.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=9fe559f981280b7b8394412c949ec1d0`,alt:`SuprSend Logs page on the Requests tab, showing a workflow request and a user_update request, both completed`,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`718`,height:`718`,\"data-path\":`images/basic-setup-logs.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=4971d295c02c8a5107b7122311bdbdfc 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=56c53a60ad26819c235955af5712276a 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=8d6ffa7756706222e5cb4ad511980d4a 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=15fd13cd062299436d913d4012399c69 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=9fba589d4c1d2150f9ea75483eaad30a 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3b7ca85673eaf925caee4bcaf81e7590 2500w`})}),`\n`,_jsx(_components.p,{children:`Open the workflow execution to watch it run node by node, and to see the email reach the recipient.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=3051757d3daf4ceced385c088751b5bb`,alt:`Workflow execution log for order-shipped-notification, showing the email node succeeding and the message delivered`,\"data-og-width\":`2580`,width:`2580`,\"data-og-height\":`1586`,height:`1586`,\"data-path\":`images/basic-setup-logs-workflow.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=280\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=2b0e4893b3aacbb57343e39a5434191b 280w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=560\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=8005204e13dd1fce01f58893a718af3c 560w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=840\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=f9cde723f3500cedbbe7a08ced3eb3cb 840w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=1100\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=574733c4d5349b203dbcb972c0d197ce 1100w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=1650\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=dcd1c3f90b4739ecd01dc258f0c3f597 1650w, https://mintcdn.com/suprsend/xegNVjhCbItiEf4x/images/basic-setup-logs-workflow.png?w=2500\u0026fit=max\u0026auto=format\u0026n=xegNVjhCbItiEf4x\u0026q=85\u0026s=c977222ab78093eee571724254430715 2500w`})}),`\n`,_jsx(Check,{children:_jsx(_components.p,{children:`Now check that inbox. The email is there, sent by code you wrote.`})}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`Sandbox is a trial workspace: it expires 30 days after signup and has capped usage. Everything you\nbuilt here — the template, the workflow, and the two calls in your backend — works the same in\nStaging and Production once you connect your own vendor.`})}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Go live`,icon:`rocket`,href:`/docs/go-live-checklist`,children:_jsx(_components.p,{children:`Move to Staging and Production, connect your own email vendor, and run through the pre-launch checks.`})}),_jsx(Card,{title:`Add an in-app inbox`,icon:`bell`,href:`/docs/add-a-channel`,children:_jsx(_components.p,{children:`Show notifications inside your product. Needs frontend SDK work on top of the backend integration here.`})}),_jsx(Card,{title:`Trigger with events`,icon:`bolt`,href:`/docs/event-vs-workflow-api`,children:_jsx(_components.p,{children:`Send one event and let it start several workflows, instead of naming one workflow per call.`})}),_jsx(Card,{title:`Let users choose`,icon:`sliders`,href:`/docs/user-preferences`,children:_jsx(_components.p,{children:`Preference categories and channel opt-outs, so people control what reaches them.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Request failed: workflow not found`,id:`request-failed-workflow-not-found`,children:_jsxs(_components.p,{children:[`The slug in your trigger call doesn’t match a live workflow. Either it’s a typo, or the workflow is\nstill a draft. Open it and check the badge reads `,_jsx(_components.strong,{children:`Live`}),` — if it doesn’t, commit it.`]})}),_jsx(Accordion,{title:`Request failed: authentication error`,id:`request-failed-authentication-error`,children:_jsxs(_components.p,{children:[`You’re using the wrong credential for the path you’re on. Backend SDKs take the `,_jsx(_components.strong,{children:`Workspace Key and\nSecret`}),`. The REST API takes an `,_jsx(_components.strong,{children:`API Key`}),` as `,_jsx(_components.code,{children:`Authorization: Bearer`}),`. A Service Token works for\nneither — it’s for the CLI and the Management API.`]})}),_jsx(Accordion,{title:`The send succeeded but no email arrived at all`,id:`the-send-succeeded-but-no-email-arrived-at-all`,children:_jsxs(_components.p,{children:[`Sandbox only delivers to `,_jsx(_components.strong,{children:`verified channels`}),` — a short list you control at\n`,_jsx(_components.a,{href:`https://app.suprsend.com/en/sandbox/developers/verified-channels`,children:`Developers → Verified Channels`}),`,\nup to 5 per channel type. If the recipient’s address isn’t on that list, nothing arrives.`]})}),_jsxs(Accordion,{title:`Nothing arrived, but the workflow shows Completed`,id:`nothing-arrived-but-the-workflow-shows-completed`,children:[_jsx(_components.p,{children:`A completed execution means every node ran, not that a message was delivered. A channel only sends\nwhen all four are true:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The template has live content for that channel`}),`\n`,_jsx(_components.li,{children:`The user has an identity for it — an email address, in this case`}),`\n`,_jsx(_components.li,{children:`The user hasn’t opted out`}),`\n`,_jsx(_components.li,{children:`A vendor is connected`}),`\n`]}),_jsxs(_components.p,{children:[`The workflow execution log names which one failed. The most common cause here is a user synced\nwithout an email address, so check the profile under `,_jsx(_components.strong,{children:`Users`}),` first.`]})]}),_jsx(Accordion,{title:`The email failed with missing variables in template`,id:`the-email-failed-with-missing-variables-in-template`,children:_jsxs(_components.p,{children:[`The key in your trigger’s `,_jsx(_components.code,{children:`data`}),` doesn’t match the variable in your template. `,_jsx(_components.code,{children:`data`}),` must contain\n`,_jsx(_components.code,{children:`order_id`}),` for `,_jsx(_components.code,{children:`{{order_id}}`}),` to resolve — a missing key doesn’t render as a blank, it fails the\nrender and the email isn’t sent. No message is created for it, so open the run under\n`,_jsx(_components.strong,{children:`Logs → Workflow Executions`}),` to see the error.`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Integrate SuprSend","sidebarTitle":"Integrate SuprSend","description":"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.","href":"/docs/integrate-suprsend"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Set up","slug":"set-up","depth":2,"children":[{"title":"Sign up and start in Sandbox","slug":"sign-up-and-start-in-sandbox","depth":3,"children":[]},{"title":"Get your credentials","slug":"get-your-credentials","depth":3,"children":[]}]},{"title":"Build the notification","slug":"build-the-notification","depth":2,"children":[]},{"title":"Identify a user and trigger the workflow","slug":"identify-a-user-and-trigger-the-workflow","depth":2,"children":[]},{"title":"Confirm delivery","slug":"confirm-delivery","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/suprsend/1ff47b86af33ef76/apollo-tracker.js"],"subdomain":"suprsend","siteName":"SuprSend: API-first notification infrastructure","title":"Integrate SuprSend - SuprSend: API-first notification infrastructure","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-29T11:52:53.204Z","originalFileLocation":"docs/integrate-suprsend.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\">\u003cmeta data-mint-head name=\"application-name\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Integrate SuprSend - SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head property=\"og:description\" content=\"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.suprsend.com/docs/integrate-suprsend\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://suprsend.mintlify.app/_mintlify/api/og/v2?division=Quick+Start+Guide\u0026amp;title=Integrate+SuprSend\u0026amp;description=Integrate+SuprSend+into+your+backend%3A+build+a+template+and+workflow%2C+identify+users+from+your+code%2C+trigger+notifications%2C+and+confirm+delivery+in+logs.\u0026amp;theme=77e430d508312c14f721c90a\u0026amp;signature=ac3b26e08615326a3dc774a3759e5c86564fa2155966834dfec0a01d51a9d335\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Integrate SuprSend - SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://suprsend.mintlify.app/_mintlify/api/og/v2?division=Quick+Start+Guide\u0026amp;title=Integrate+SuprSend\u0026amp;description=Integrate+SuprSend+into+your+backend%3A+build+a+template+and+workflow%2C+identify+users+from+your+code%2C+trigger+notifications%2C+and+confirm+delivery+in+logs.\u0026amp;theme=77e430d508312c14f721c90a\u0026amp;signature=ac3b26e08615326a3dc774a3759e5c86564fa2155966834dfec0a01d51a9d335\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2E70E8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.suprsend.com/docs/integrate-suprsend\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/integrate-suprsend.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.suprsend.com/#organization\",\"name\":\"SuprSend: API-first notification infrastructure\",\"url\":\"https://docs.suprsend.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/suprsend/CMaQBA3E8wM1DyFj/images/suprsend-logo.svg?fit=max\u0026auto=format\u0026n=CMaQBA3E8wM1DyFj\u0026q=85\u0026s=f325b9764c629a0b488476db369b8d47\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.suprsend.com#website\",\"name\":\"SuprSend: API-first notification infrastructure\",\"url\":\"https://docs.suprsend.com\",\"publisher\":{\"@id\":\"https://docs.suprsend.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.suprsend.com/docs/integrate-suprsend#webpage\",\"url\":\"https://docs.suprsend.com/docs/integrate-suprsend\",\"name\":\"Integrate SuprSend\",\"description\":\"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\",\"dateModified\":\"2026-10-29T11:52:53.204Z\",\"isPartOf\":{\"@id\":\"https://docs.suprsend.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.suprsend.com/docs/integrate-suprsend#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.suprsend.com/docs/integrate-suprsend#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"GETTING STARTED\",\"item\":\"https://docs.suprsend.com/docs/what-is-suprsend\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quick Start Guide\",\"item\":\"https://docs.suprsend.com/docs/quick-start-guide\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Integrate SuprSend\",\"item\":\"https://docs.suprsend.com/docs/integrate-suprsend\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.suprsend.com/docs/integrate-suprsend#article\",\"headline\":\"Integrate SuprSend\",\"name\":\"Integrate SuprSend\",\"description\":\"Integrate SuprSend into your backend: build a template and workflow, identify users from your code, trigger notifications, and confirm delivery in logs.\",\"url\":\"https://docs.suprsend.com/docs/integrate-suprsend\",\"mainEntityOfPage\":{\"@id\":\"https://docs.suprsend.com/docs/integrate-suprsend#webpage\"},\"dateModified\":\"2026-10-29T11:52:53.204Z\",\"publisher\":{\"@id\":\"https://docs.suprsend.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.suprsend.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"SuprSend: API-first notification infrastructure\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"SuprSend: API-first notification infrastructure","nav":{"global":{"anchors":[{"anchor":"Community","icon":"slack","color":{"light":"#f59f0b","dark":"#f59f0b"},"href":"https://join.slack.com/t/suprsendcommunity/shared_invite/zt-3932rw936-XNWY1RC8bsffh4if4ZyoXQ"},{"anchor":"Trust Center","icon":"shield-halved","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://trust.suprsend.com"},{"anchor":"Platform Status","icon":"wifi","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://status.suprsend.com"},{"anchor":"Postman Collection","icon":"code","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://www.postman.com/suprsend/suprsend/collection/16bdmwa/suprsend-apis"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"GETTING STARTED","pages":[{"title":"What is SuprSend?","href":"/docs/what-is-suprsend"},{"group":"Quick Start Guide","pages":[{"title":"Quick start","sidebarTitle":"Overview","href":"/docs/quick-start-guide"},{"title":"Core Concepts - Notifications and SuprSend","sidebarTitle":"Core concepts","description":"Understand SuprSend's core concepts — templates, users, and workflows — plus how to trigger a notification and confirm it was delivered, before you send your first notification.","href":"/docs/core-concepts"},{"title":"Integrate SuprSend","sidebarTitle":"Integrate SuprSend","href":"/docs/integrate-suprsend"},{"title":"Add a channel","sidebarTitle":"Add a channel","description":"Add SMS, WhatsApp, in-app inbox, push, Slack and Microsoft Teams to your SuprSend integration.","href":"/docs/add-a-channel"},{"title":"Send a broadcast","sidebarTitle":"Send a broadcast","href":"/docs/send-a-broadcast"}]},{"group":"Best Practices","pages":[{"title":"Notification System Design","href":"/docs/best-practices-notification-system-design"},{"title":"Batching \u0026 Digest","href":"/docs/best-practices-for-batching-digest"}]},{"group":"Plan Your Integration","pages":[{"title":"Migrate in-house Notification System","href":"/docs/migrating-your-existing-notifications"},{"title":"Migrate from MagicBell to SuprSend","href":"/docs/migrate-from-magicbell-to-suprsend"}]},{"title":"Go-live checklist","href":"/docs/go-live-checklist"},{"group":"Example Apps","pages":[{"title":"Task Management App with React","sidebarTitle":"Task Management","tag":"REACT","href":"/docs/task-management-app-guide"},{"title":"B2B2C Restaurant Platform with Next.js","sidebarTitle":"WorkVibe","tag":"NEXT.JS","href":"/docs/workvibe-app-guide"},{"title":"Multi-tenant B2B Project Management with Next.js","sidebarTitle":"Keystone","tag":"NEXT.JS","href":"/docs/keystone-app-guide"}]}]},{"group":"CORE CONCEPTS","pages":[{"title":"Workspaces","href":"/docs/workspaces"},{"group":"Templates","pages":[{"title":"Quickstart","href":"/docs/templates-overview"},{"title":"Creating \u0026 Managing Templates","href":"/docs/templates"},{"group":"Channel Editors","pages":[{"title":"Email","href":"/docs/email-template"},{"title":"In-App Inbox","href":"/docs/in-app-inbox-template"},{"title":"SMS","href":"/docs/sms-template"},{"title":"WhatsApp","href":"/docs/whatsapp-template"},{"title":"Android Push","href":"/docs/android-push-template"},{"title":"iOS Push","href":"/docs/ios-push-template"},{"title":"Web Push","href":"/docs/web-push-template"},{"title":"Slack","href":"/docs/slack-template"},{"title":"MS Teams","href":"/docs/ms-teams-template"}]},{"title":"Template Variants","href":"/docs/template-variants"},{"title":"Handlebars helpers","href":"/docs/handlebars-helpers"},{"title":"JSONNET","href":"/docs/jsonnet-templates"},{"title":"Multi-lingual Templates","href":"/docs/multi-lingual-template"},{"group":"Template Approval","pages":[{"title":"DLT Guidelines","href":"/docs/dlt-guidelines"},{"title":"WhatsApp Template Guidelines","href":"/docs/whatsapp-template-guidelines"}]}]},{"title":"Users","href":"/docs/users"},{"title":"Events","href":"/docs/events"},{"title":"Workflows overview","sidebarTitle":"Workflow","href":"/docs/workflows"},{"group":"Notification Categories","pages":[{"title":"Overview","href":"/docs/notification-category"},{"title":"Manage Categories and Preferences","href":"/docs/managing-notification-categories"}]},{"group":"Preferences","pages":[{"title":"User Preferences","href":"/docs/user-preferences"},{"title":"Tenant Preferences","href":"/docs/tenant-preference"},{"title":"Preference Evaluation","href":"/docs/preference-evaluation"}]},{"group":"Tenants","pages":[{"title":"Overview","href":"/docs/tenants"},{"title":"Quickstart","href":"/docs/tenant-quick-start"},{"title":"Managing Tenants","href":"/docs/tenant-management"},{"title":"Tenant Templates","href":"/docs/tenant-templates"},{"title":"Tenant Workflows","href":"/docs/tenant-workflows"},{"title":"Tenant Preferences","href":"/docs/tenant-preference"},{"title":"Tenant Vendor","href":"/docs/tenant-vendor"},{"title":"User-Tenant Mapping","href":"/docs/user-tenant-mapping"},{"title":"Sub-tenants","href":"/docs/sub-tenants"}]},{"group":"Lists","pages":[{"title":"Lists","sidebarTitle":"Overview","href":"/docs/lists"},{"title":"Database sync","href":"/docs/list-sync-via-database"},{"title":"Manual (CSV upload)","href":"/docs/list-sync-via-csv"},{"title":"Segment Lists","tag":"BETA","href":"/docs/segment-lists"},{"group":"Segment SQL reference","pages":[{"title":"Query clauses and features","href":"/docs/sql-query-clauses"},{"title":"Aggregate functions","href":"/docs/sql-aggregate-functions"},{"title":"Array functions","href":"/docs/sql-array-functions"},{"title":"String functions","href":"/docs/sql-string-functions"},{"title":"JSON and map functions","href":"/docs/sql-json-functions"},{"title":"Date and time functions","href":"/docs/sql-date-time-functions"},{"title":"Conditional and null-handling functions","href":"/docs/sql-conditional-functions"},{"title":"Arithmetic and math functions","href":"/docs/sql-math-functions"},{"title":"String search and matching functions","href":"/docs/sql-string-search-functions"},{"title":"Window functions","href":"/docs/sql-window-functions"},{"title":"Tuple functions","href":"/docs/sql-tuple-functions"},{"title":"URL functions","href":"/docs/sql-url-functions"},{"title":"Encoding, hashing, and UUID functions","href":"/docs/sql-encoding-functions"},{"title":"Bit and bitmap functions","href":"/docs/sql-bit-functions"},{"title":"Geo functions","href":"/docs/sql-geo-functions"},{"title":"Vector and distance functions","href":"/docs/sql-vector-functions"}]}]},{"title":"Broadcast notifications overview","sidebarTitle":"Broadcast","href":"/docs/broadcast"},{"group":"Objects","pages":[{"title":"Manage Objects","href":"/docs/objects"},{"title":"Object Subscriptions","href":"/docs/object-subscriptions"}]},{"title":"Translations","href":"/docs/translations"}]},{"group":"WORKFLOW BUILDER","pages":[{"title":"Design Workflow","href":"/docs/design-workflow"},{"group":"Node List","pages":[{"title":"Delivery- Single Channel","href":"/docs/delivery-single-channel"},{"title":"Delivery- Multi-Channel","href":"/docs/delivery-multi-channel"},{"title":"Smart Channel Routing","href":"/docs/smart-delivery"},{"title":"Override Recipient","href":"/docs/override-recipient-list"},{"title":"Delay","href":"/docs/delay"},{"title":"Batch","href":"/docs/batch"},{"title":"Digest","href":"/docs/digest"},{"title":"Wait Until","href":"/docs/wait-until"},{"title":"Fetch","href":"/docs/fetch"},{"title":"Webhook","href":"/docs/webhook"},{"title":"Branch","href":"/docs/branch"},{"title":"Time Window","href":"/docs/time-window"},{"title":"Data Transform","href":"/docs/data-transform"},{"title":"Add User to list","href":"/docs/add-user-to-list"},{"title":"Remove User from list","href":"/docs/remove-user-from-list"},{"title":"Subscribe to Object","href":"/docs/subscribe-to-object"},{"title":"Unsubscribe from Object","href":"/docs/unsubscribe-from-object"},{"title":"Update User Profile","href":"/docs/update-user-profile"},{"title":"Invoke Workflow","href":"/docs/invoke-workflow"},{"title":"Cancel Workflow","href":"/docs/cancel-workflow"}]},{"group":"Workflow Settings","pages":[{"title":"Throttle","href":"/docs/throttle"}]},{"title":"Trigger Workflow","href":"/docs/trigger-workflow"},{"title":"Validate Trigger Payload","href":"/docs/validate-workflow-payload"}]},{"group":"Notification Inbox","pages":[{"title":"Overview","href":"/docs/inbox-overview"},{"title":"Multi Tabs","href":"/docs/multi-tabs"},{"group":"React","pages":[{"title":"Overview","href":"/docs/react-inbox-integration"},{"title":"Migration Guide","href":"/docs/react-migration-guide"}]},{"group":"Javascript (Angular, Vuejs etc)","pages":[{"title":"Integration","href":"/docs/web-components-integration"},{"title":"Customization options","href":"/docs/web-components-customisations"}]},{"group":"React Native","pages":[{"title":"React Native (Headless)","href":"/docs/inbox-react-native"}]},{"title":"InApp Feed (Headless)","sidebarTitle":"iOS (Headless)","href":"/docs/inbox-ios"},{"title":"Flutter (Headless)","href":"/docs/inbox-flutter"}]},{"group":"PREFERENCE CENTRE","pages":[{"title":"Embedded Preference Centre","href":"/docs/embedded-preference-centre"},{"title":"Javascript","href":"/docs/preferences-javascript"},{"title":"Angular","href":"/docs/preferences-angular"},{"title":"React","href":"/docs/preferences-react-headless"}]},{"group":"VENDOR INTEGRATION GUIDE","pages":[{"title":"Overview","href":"/docs/vendors"},{"group":"Email Integrations","pages":[{"title":"Sendgrid","href":"/docs/sendgrid"},{"title":"Amazon SES","href":"/docs/amazon-ses"},{"title":"Mailgun","href":"/docs/mailgun"},{"title":"Resend","href":"/docs/resend"},{"title":"Postmark","href":"/docs/postmark"},{"title":"Mailjet","href":"/docs/mailjet"}]},{"group":"SMS Integrations","pages":[{"title":"ACL Sinch","sidebarTitle":"ACL Sinch","href":"/docs/acl-sinch"},{"title":"Twilio","href":"/docs/twilio"},{"title":"Karix","href":"/docs/karix-sms"},{"title":"Gupshup","href":"/docs/gupshup-sms"},{"title":"AWS SNS","href":"/docs/aws-sns-sms"},{"title":"Pinnacle","href":"/docs/pinnacle"}]},{"group":"Android Push","pages":[{"title":"Firebase FCM","href":"/docs/firebase-fcm-androidpush"}]},{"group":"Whatsapp Integrations","pages":[{"title":"Karix","href":"/docs/karix-whatsapp"},{"title":"Gupshup","href":"/docs/gupshup-whatsapp"},{"title":"Exotel Cloud API","href":"/docs/exotel"},{"title":"WhatsApp Cloud API","href":"/docs/whatsapp-cloud-api"},{"title":"Twilio","href":"/docs/twilio-whatsapp"},{"title":"Netcore","href":"/docs/netcore-whatsapp"}]},{"title":"iOS Push","href":"/docs/ios-push-vendor-integration"},{"group":"Chat Integrations","pages":[{"title":"Slack","href":"/docs/slack"},{"group":"Microsoft Teams","pages":[{"title":"Microsoft Teams","sidebarTitle":"Overview","href":"/docs/microsoft-teams"},{"title":"Create a Teams app and add the vendor","sidebarTitle":"Create a Teams app","href":"/docs/microsoft-teams-create-app"},{"title":"Post to a Teams channel with a webhook","sidebarTitle":"Send via channel webhook","href":"/docs/microsoft-teams-incoming-webhook"},{"title":"Send DMs or post in channels via your Teams app","sidebarTitle":"Send via your Teams app","href":"/docs/microsoft-teams-customer-workspaces"},{"title":"Send DMs or post in channels via your customer's Teams app","sidebarTitle":"Send via customer's Teams app","href":"/docs/microsoft-teams-customer-bot"}]}]},{"title":"Vendor Fallback","href":"/docs/vendor-fallback"},{"title":"Tenant Vendor","href":"/docs/tenant-vendor"}]},{"group":"INTEGRATIONS","pages":[{"title":"Webhook","href":"/docs/outbound-webhook"},{"group":"Connectors","pages":[{"title":"Overview","href":"/docs/connectors"},{"title":"OpenTelemetry","href":"/docs/opentelemetry"},{"title":"New Relic","href":"/docs/new-relic"},{"title":"Datadog","href":"/docs/datadog"},{"title":"Mixpanel","href":"/docs/mixpanel"},{"title":"Segment","href":"/docs/segment"},{"group":"Amazon S3 v2.0","pages":[{"title":"Overview","href":"/docs/amazon_s3_v2"},{"title":"Query with Athena","href":"/docs/athena_s3_query"}]},{"group":"Database","pages":[{"title":"Overview","href":"/docs/database"},{"title":"Postgres","href":"/docs/postgres"},{"title":"MySQL","href":"/docs/mysql"},{"title":"Bigquery","href":"/docs/bigquery"}]}]}]},{"group":"MONITORING \u0026 DEBUGGING","pages":[{"group":"Logs","pages":[{"title":"Logs","href":"/docs/logging"},{"title":"Request logs","href":"/docs/request-logs"},{"title":"Workflow execution logs","href":"/docs/workflow-execution-logs"},{"title":"Broadcast execution logs","href":"/docs/broadcast-execution-logs"},{"title":"Message logs","href":"/docs/message-logs"}]},{"title":"Analytics","href":"/docs/analytics"},{"title":"Audit Logs","href":"/docs/audit-logs"},{"group":"Error Guides","pages":[{"title":"Execution Errors","href":"/docs/error-guides"},{"group":"Delivery Failures","pages":[{"title":"Androidpush","href":"/docs/androidpush-errors"},{"title":"Gupshup (SMS)","href":"/docs/gupshup-sms-errors"},{"title":"Twilio (SMS)","href":"/docs/twilio-sms-errors"},{"title":"Messagebird (SMS)","href":"/docs/messagebird-sms-errors"}]}]}]},{"group":"MANAGE YOUR ACCOUNT","pages":[{"title":"Authentication Methods","href":"/docs/authentication-methods"},{"title":"Managing Team Members","href":"/docs/managing-members"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/docs/guides/modelling-customers-workspace-vs-tenant"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/overview"}]},{"tab":"Management API","pages":[{"title":"Management API","href":"/docs/management-api-overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/reference/cli-intro"}]},{"tab":"Build with AI","pages":[{"title":"Build with AI","href":"/reference/build-with-ai"}]},{"tab":"Developer Resources","pages":[{"title":"Developer Resources","href":"/docs/developer/overview"}]},{"tab":"Self-Hosted","pages":[{"title":"Self-Hosted","href":"/docs/self-hosted/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Integrate SuprSend - SuprSend: API-first notification infrastructure","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["07c022d89b","a74be98ba7","a9bb46feb3"],"chunks":["Frame-DXXFP6nH.js","DynamicMarkdown-B54_zNBF.js","zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}