One-time setup
Run these in your local terminal, not inside Base44. You only do this once per AWS account.
Set up AWS
You need an AWS account and the AWS CLI configured. Free tier is enough for most apps. AWS setup guide →
Deploy email infrastructure
This sets up SES in your AWS account and verifies your sending domain. Domain verification guide →
npx @wraps.dev/cli email init
Connect to the Wraps Platform
npx @wraps.dev/cli platform connect
Creates a cross-account IAM role so the Wraps Platform can send email through your SES when a workflow fires. Run this once — re-run wraps platform update-role if you add new features later.
Get a Wraps API key
Go to the Wraps dashboard → Settings → API Keys and create a key named base44-app.
Add the key to Base44
Go to Project → Settings → Server Secrets in Base44 and add:
WRAPS_API_KEY = wraps_a1b2c3d4....<hmac>
Emit events from your backend
Install the SDK in your Base44 project:
npm install @wraps.dev/client
Create a shared client module:
import { createPlatformClient } from "@wraps.dev/client";
export const wraps = createPlatformClient({
apiKey: process.env.WRAPS_API_KEY,
});Emit a behavioral event when something happens in your app:
import { wraps } from "../lib/wraps";
export async function onSignup({ email, name }) {
// ... your signup logic ...
await wraps.track("user.signed_up", {
contactEmail: email,
contactName: name,
createIfMissing: true,
properties: { source: "base44", plan: "free" },
});
}Your frontend calls the backend function — not Wraps directly:
// Frontend component — calls backend function, not Wraps directly
import { onSignup } from "@/backend/onSignup";
await onSignup({ email: user.email, name: user.name });Set up a workflow in Wraps
This is where you define what happens when the event fires — no code required.
- 1Go to Dashboard → Workflows → New workflow
- 2Set the trigger to Event received →
user.signed_up - 3Add a step: Send email → choose your template
See the Custom Events guide for the full reference.
Common events to track
Emit these from your Base44 backend functions and wire up a workflow for each one.
| Event | Sends |
|---|---|
user.signed_up | Welcome email |
order.placed | Order confirmation |
password.reset_requested | Reset email |
subscription.cancelled | Win-back email |
trial.ending | Upgrade nudge |
FAQ
Run wraps email init to set up SES, then wraps platform connect to give Wraps permission to send through your SES in workflows. After that, your app calls api.wraps.dev directly — no Lambda to deploy or manage.
Ready to Connect Your Base44 App?
Emit events from your backend. Wraps workflows handle the rest — welcome emails, receipts, nudges. No email logic in your code.

