Skip to content
Esc
  • OverviewGuidesWhat exists today, and where to start.
  • QuickstartGuidesKey, domain, first send — in that order.
  • AuthenticationGuidesBearer keys, the mandatory User-Agent, and what each refusal means.
  • ErrorsGuidesThe whole vocabulary, with the status each name carries.
  • IdempotencyGuidesRetry a send without sending it twice.
  • PaginationGuidesCursors are item IDs, not page numbers.
  • Rate limitsGuidesTen a second per team, and the headers that tell you where you are.
  • Sending newslettersGuidesUse a campaign, or include an unsubscribe link.
  • EventsGuidesEvery event a webhook can carry, with one real payload each.
  • DomainsGuidesThe records, where they go at each registrar, and what the page does while you wait.
  • TrackingGuidesOpens and clicks: one record, two toggles, and what an open really means.
  • Sign-up formsGuidesPop-ups and embedded forms on your site, and the rules that pick one.
  • TemplatesGuidesFifty-seven starters sorted by goal, and how to keep a campaign as a template.
  • ReceivingGuidesInbound mail, and the Inbox: a webhook fires, you read it, you answer it.
  • InboxGuidesChannels, personal mailboxes and seats: who sees what, and where a reply goes.
  • Mail appsGuidesComing soon: your Rasket address in Apple Mail, Outlook and the Gmail app.
  • Inbox APIGuidesOpen, read and answer support conversations from your app, with the same key.
  • Support inbox in your appGuidesA Contact us form that opens a conversation your team answers, in five minutes.
  • Replies to your emailsGuidesOne field on a send, and the customer's reply opens a conversation.
  • Let an agent triageGuidesAn AI agent reads, notes and drafts over MCP; a person sends.
  • Node SDKGuidesThe rasket package: typed from the API's own document, retries only what is safe.
  • Python SDKGuidesThe rasket package on PyPI: the Node client's methods, in snake_case, over httpx.
  • MCP serverGuidesConnect Claude, ChatGPT or any MCP client: your scopes, no key.
  • AI assistGuidesSubject lines, drafts and diagnosis — in the dashboard and over the API, off until you allow it.
  • AgentsGuidesLet an AI agent set Rasket up: the skill, the rules file, MCP, and the recipe they share.
  • OAuthGuidesLet another app act for a team: register, authorize with PKCE, exchange, refresh.
  • Single sign-onGuidesOIDC login for your team, a domain proved by DNS, enforcement and break-glass.
  • IntegrationsGuidesEvery integration and its status, and Rasket on Vercel, Netlify and Cloudflare.
  • SMTPGuidesSend from anything that speaks SMTP: settings, setup guides, limits and replies.
  • ZapierGuidesSend email, add contacts and react to email events from a Zap, with no code.
  • n8nGuidesThe Rasket node and trigger for n8n workflows: install, connect, every operation.
  • VercelGuidesAdd Rasket on Vercel: a Sending key in each project as RASKET_API_KEY, no copying.
  • WordPressGuidesThe Rasket plugin: every email your site sends, through Rasket, with a safe fallback.
  • NotionGuidesTurn a Notion database of people into contacts in a segment, once or every hour.
  • Migrating to RasketGuidesBring contacts, unsubscribes, lists and templates from Mailchimp, Klaviyo and more.
  • PipedreamGuidesRasket actions and instant sources for Pipedream workflows and Connect apps.
  • FramerGuidesThe Rasket plugin: sign-up forms on a Framer site, and Framer forms into contacts.
  • MakeGuidesComing soon: send email and react to email events from a Make scenario.
  • monday.comGuidesTurn board items into contacts and send a template when a board changes.
  • ClickUpGuidesReady-made Zapier and Make automations between ClickUp tasks and Rasket.
  • SlackGuidesEmail alerts in the Slack channels you choose, and /rasket for numbers and look-ups.
  • Google SheetsGuidesComing soon: turn a sheet tab of people into contacts in a segment.
  • AirtableGuidesComing soon: turn an Airtable table of people into contacts in a segment.
  • ShopifyGuidesRasket for Shopify: customers with their consent, store events and ready-made flows.
  • EmailsAPI referenceSend, batch, retrieve, list, reschedule, cancel, attachments.
  • DomainsAPI referenceAdd a domain, publish its records, verify it.
  • API keysAPI referenceCreate, list, rename and revoke credentials.
  • WebhooksAPI referencePayloads, signature verification, retries and replay.
  • SuppressionsAPI referenceAddresses we will not send to, and why.
  • LogsAPI referenceEvery request made with this team's credentials.
  • MetricsAPI referenceDelivery, bounce, complaint and engagement counts.
  • TemplatesAPI referenceVersioned email content with typed variables, addressed by ID or alias.
  • ContactsAPI referenceYour audience: contacts, their typed properties, segments and topic choices.
  • SegmentsAPI referenceAudiences defined by a filter, by hand, or both.
  • TopicsAPI referenceWhat contacts subscribe to, and the preference page's list.
  • CampaignsAPI referenceCampaigns, at /broadcasts: one message to a segment, from draft to results.
  • ImportsAPI referenceCSV uploads: column mapping, conflicts and counts.
  • AutomationsAPI referenceWorkflows that run per contact: the graph, its versions, and every run.
  • Custom eventsAPI referenceThe names your product fires, and what starts a workflow.
  • ReceivingAPI referenceMail sent to you: the message, its attachments, its raw source.
  • OAuthAPI referenceClient registration, the token endpoint, and the grants a team has given.
  • TeamAPI referenceThe team a credential belongs to: its plan, sender identity, AI flag and members.
  • BillingAPI referencePlan, usage, invoices and add-ons, and the hosted pages where a customer pays.
  • AI helpersAPI referenceSubject lines, a first draft, and why an email did what it did.
  • InboxAPI referenceChannels, conversations, messages, notes and search in your support inbox.

GuidesVercel

Vercel

Add Rasket to your Vercel projects. Rasket saves an API key into each project you choose as RASKET_API_KEY, so your route handlers and server actions can send email on the next deploy, with nothing to copy or paste.

Coming soon: adding Rasket from Vercel is not switched on yet. This page describes it as it will ship. Until then, add an API key to your project yourself, as the integrations guide shows.

What it sets up

  • One key per Vercel project. Each project you choose gets its own Sending access API key, which can send email and nothing else: it cannot read your emails, contacts or settings.
  • Saved as RASKET_API_KEY, encrypted, on the Production, Preview and Development environments. If the project already has a variable by that name, it is replaced.
  • A Rasket project per Vercel project. Send every Vercel project from one Rasket project, or choose one for each. Each sends from its Rasket project's verified domains, on its plan, and its emails show in that project.
  • Nothing to pay on Vercel. Vercel bills nothing for Rasket; your Rasket plan is the only plan.

Before you start

  • An admin of each Rasket project you choose, with a verified email address. The keys belong to the whole project, so a member who is not an admin cannot connect it. You can also create a new Rasket project while you connect.
  • A verified sending domain, to send from. The key works without one, but every send is refused until the domain is verified. The domains guide walks through it.
  • Up to 25 Vercel projects per install. Choose the projects that send email rather than all of them.

Add Rasket

  1. In Rasket, open Settings, then Integrations, then Vercel, and choose Add Rasket on Vercel.
  2. On Vercel, choose the Vercel team, then Specific projects and the projects that should send email, and install.
  3. Rasket opens. Sign in, or create an account. Rasket names the Vercel account and every project the install reaches. Only continue if you have just added Rasket on Vercel yourself.
  4. Choose where the projects send from. Send all from puts every Vercel project on one Rasket project. Choose per project gives each its own, and any of them can be + New project, a new Rasket project named after the Vercel project. Then choose Connect.
  5. Rasket lists each Vercel project and the Rasket project it sends from. A new project needs a verified domain before it can send; the page links to its Domains page. Choose Back to Vercel.
  6. Redeploy each project. A deployment reads its environment variables when it is built, so one built before you connected has no key.

Finish within 30 minutes of choosing install on Vercel. After that, the install expires and nothing is written; add Rasket again. The admins of each Rasket project get one email saying new keys were created there.

Send from a route handler

Read the key from process.env.RASKET_API_KEY in server code only. Never copy it into a variable your framework exposes to the browser, such as one that starts with NEXT_PUBLIC_.

// app/api/welcome/route.ts
export async function POST(request: Request) {
  const { email } = (await request.json()) as { email: string };
  const response = await fetch("https://api.rasket.com/emails", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
      "User-Agent": "acme-billing/1.0",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      from: "Acme <hello@example.com>",
      to: email,
      subject: "Welcome to Acme",
      html: "<p>Thanks for signing up.</p>",
    }),
  });
  return Response.json(await response.json(), { status: response.status });
}

Send a User-Agent: a request with no User-Agent is refused. Use an address on your verified domain in from. The emails reference has every field a send takes.

Send from a server action

// app/actions.ts
"use server";

export async function sendWelcome(formData: FormData) {
  const email = String(formData.get("email"));
  const response = await fetch("https://api.rasket.com/emails", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.RASKET_API_KEY}`,
      "User-Agent": "acme-billing/1.0",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      from: "Acme <hello@example.com>",
      to: email,
      subject: "Welcome to Acme",
      html: "<p>Thanks for signing up.</p>",
    }),
  });
  if (!response.ok) {
    throw new Error(`The welcome email was not sent (${response.status}).`);
  }
}

A server action runs on the server, so it reads RASKET_API_KEY the same way. Call it from a form's action.

Local development

The Development environment has the key too, so the Vercel CLI can bring it to your machine:

vercel env pull .env.local

Keep .env.local out of version control. Next.js reads it when you run next dev.

Managing it

  • See your installs under Settings → Integrations → Vercel in each Rasket project: the Vercel projects that send from it and the start of each key. On Vercel, the integration's Configure button opens that page for the first of your Rasket projects in the install.
  • Adding Rasket again to the same projects replaces each key: the new one is saved first, then the old one is revoked, even when you choose a different Rasket project this time. Redeploy afterwards, because deployments built with the old key can no longer send.
  • Projects added later are not picked up. Giving the install more projects on Vercel writes no key into them. Disconnect, then add Rasket again with the projects you want.
  • A deleted Vercel project's key stays live until you disconnect the install it came from.

Disconnect

  • In Rasket, an admin chooses Disconnect on Settings → Integrations → Vercel. Rasket revokes the keys of the Vercel projects that send from that Rasket project and removes RASKET_API_KEY from them. If no Vercel project in the install sends from another Rasket project, it also removes the integration from the Vercel account. The page says which it will do.
  • On Vercel, remove the Rasket integration. Rasket revokes every key the install created, in every Rasket project, when Vercel tells it.

Revoked keys stop working at once, including in deployments that are already running. Keys you created yourself under API keys are not touched.

Troubleshooting

“Vercel isn't available here”

Adding Rasket from Vercel is not switched on for this deployment. Create a Sending access key under API keys and add it to the project as RASKET_API_KEY yourself; the integrations guide shows how.

“Vercel didn't accept this install” or “This install has expired”

The link from Vercel was used already, or more than 30 minutes passed. Nothing was written. Add Rasket on Vercel again.

“This install can't reach any Vercel project” or more than 25 projects

On Vercel, change the install to the projects that should send email, between one and 25, then add Rasket again.

“Already sends from a Rasket project you don't administer”

Adding Rasket again to an install can move or replace any of its keys, so it needs an admin of every Rasket project the install sends from. Ask an admin of that project to disconnect it there first, or to add Rasket themselves.

The Rasket project isn't in the list

Only projects you are an admin of are offered. Ask an admin to make you one, or choose + New project to create one while you connect.

“+ New project” isn't available

New projects follow the same limits as creating one in Rasket, and the page says which one applies. Choose an existing project instead, or upgrade the Free project you have.

Sends are refused after connecting

A 401 means the deployment still has an old key or none: redeploy. A refusal naming the from address means the domain is not verified for sending yet. The errors page lists every refusal.