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.
  • 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.

GuidesSign-up forms

Sign-up forms on your site

Pop-ups, flyouts and embedded forms you publish in Rasket, shown by one script. Each form has rules, and the visitor's browser decides which form to show from what the page already knows. Nothing about the visitor is sent to decide it.

Put forms on a site

On Shopify, turn on the Rasket app embed in your theme. Anywhere else, start the script with your publishable key, then add the rasket.js tag your form's page in Rasket gives you:

<script>
  window.rasket = window.rasket || function () { (rasket.q = rasket.q || []).push(arguments); };
  rasket("init", { key: "rk_pub_…", forms: true });
</script>

Pop-ups and flyouts appear by themselves. An embedded form fills every <div data-rasket-form="<form id>"> on the page; give the div a min-height so the page does not move when it fills.

Targeting rules

A pop-up or flyout shows only when every rule it has holds. A rule that needs something the page has not said, such as a cart rule on a site that never sends a cart, waits rather than guessing, so a form without that rule still shows.

A form's targeting rules
RuleHolds when
DeviceComputer, phone, or both.
PagesEvery page, only these paths, or every path but these. `/sale*` matches a prefix.
Page typeHome, product, collection, cart, search, blog, article or page. Shopify says which; elsewhere the rule waits for `context`'s `page_type`.
SubscribersHide from people who already get your emails: a logged-in Shopify customer who accepts marketing, anyone who signed up through a form in this browser, a visit that came from one of your Rasket emails, or `identify({ subscribed: true })`.
CustomersHide from people who have bought: a logged-in Shopify customer with an order, or `identify({ customer: true })`.
VisitorAnyone, new, or returning. A visit ends after thirty minutes without a page; a second visit, or a logged-in customer, is returning.
CountryOnly in, or never in, these countries. When the country is unknown, the rule waits.
CartA cart worth at least an amount in your shop's currency, or holding at least so many items. On Shopify a cart in another currency is converted at the store's rate.
ProductsOne of these products is on screen, was looked at this visit, or is in the cart.
ScheduleShows from a start time, until an end time.

An embedded form shows wherever you put it, by its page rule alone: hiding it would leave the space you kept for it empty.

Priority and frequency

  • When several pop-ups and flyouts qualify, only those with the highest priority can open, and among them the first whose trigger fires. Equal priorities behave like forms without one.
  • At most one pop-up or flyout opens per visit, in every tab together.
  • Closing a form keeps it away for its “show again after” days. Signing up keeps it away for its “after a sign-up” days, or for good.
  • Triggers: after a delay, at a scroll depth, on leaving the page (on a phone, a quick scroll back up), and after something is added to the cart. A pop-up never opens in the first five seconds on a phone.
  • Nothing opens by itself in Shopify's theme editor.

Tell the rules what your site knows

On Shopify the app embed does this for you. Anywhere else, two calls give the rules their inputs:

// This visitor already gets your emails, or has bought from you.
rasket("identify", { subscribed: true, customer: true });

// What the page knows: the cart, in your shop's currency, and the product on screen.
rasket("context", {
  cart: { value: 82.5, items: 3, products: ["red-tee"] },
  product: "red-tee",
});

// Something was just added to the cart.
rasket("context", { cart: { value: 102.5, items: 4, products: ["red-tee", "cap"] }, added: true });
  • identify with subscribed or customer stays in the page. With an email it is also a store event, sent only after the visitor's consent, as it always was.
  • context takes any of page_type, product, cart (value, items, products) and added. Call it again whenever something changes; a form that now qualifies is armed from that moment.
  • A link carrying rk_s=1, such as one you put in a Rasket email, marks the visit as a subscriber's and is removed from the address bar; it holds no id.

Forms set no cookie and send no event, so they run before any consent answer. The browser keeps a few things in local storage, with no identifier: when each form may show again, that this browser signed up, and the visit (how many there have been, whether a form showed, the products looked at).