Skip to content
Claim your free business email

Transactional email vs marketing email: the differences, and how to send each

Published Updated 12 min readBy the Rasket team

Written for beginners, startup founders and small business owners

Transactional vs marketing email: one message sent to one person, beside a campaign fanning out to many.

Transactional email goes to one person because of something they did: a receipt, a password reset, a shipping notice. Marketing email goes to many people because you chose to send it: a newsletter or a sale. Send transactional mail the moment the event happens, from your app or your shop platform, and marketing mail as a campaign that checks consent and carries an unsubscribe link.

The trouble starts with mixed messages. Your marketing team wants “20% off your next order” at the bottom of the receipt. In the United States that can stay a receipt if the order still leads; in the EU and the UK it turns the receipt into marketing, which only people who agreed may get. If your shop or booking platform already sends your confirmations, keep it, and decide only where the newsletter goes. Not a developer? The code below is folded away, and the section for shops, booking sites and SaaS products says what to set up.

What makes an email transactional or marketing

How transactional and marketing email differ
TransactionalMarketing
TriggerSomething the recipient didSomething you decided
RecipientsOneA list or segment
ConsentThe purchase or account is the requestAn opt-in you can evidence
UnsubscribeNot requiredRequired, and one-click for bulk senders
TimingNow, set by the eventYours to schedule

The US and the UK draw the line in different places. In the US, the Federal Trade Commission (FTC) lists five kinds of transactional or relationship message under the CAN-SPAM Act. In the UK, the Information Commissioner’s Office (ICO) says a service message with any promotion in it counts as direct marketing, even when promotion is not its main purpose. The UK and EU columns below follow the ICO; EU regulators differ on details, so treat them as the cautious answer.

A shop's or booking site's emails, sorted

Common shop and booking emails classified in the US and the UK
EmailUS (CAN-SPAM)UK and EU
Order confirmation or receiptTransactionalService message, if no offer
Shipping and delivery updatesTransactionalService message
Appointment confirmation or reminderTransactionalService message, if no offer
Password reset or new-login alertTransactionalService message
Recall or safety noticeTransactionalService message
Abandoned cart reminderMarketingMarketing
Newsletter, sale or launchMarketingMarketing

A SaaS product's emails, sorted

Common SaaS emails classified in the US and the UK
EmailUS (CAN-SPAM)UK and EU
Welcome email that explains the accountTransactionalService message
Invoice or failed paymentTransactionalService message
Trial ending or renewal notice, worded neutrallyTransactionalService message
“You have used 90% of your plan”TransactionalService message
Any of those pushing an upgradeDecided by the primary-purpose testMarketing
Onboarding tipsNot commercial if they sell nothingMarketing if they encourage using a feature
Feature launch or upgrade offerMarketingMarketing

The rule that follows: if a row says marketing in a place you mail, send it as a campaign or a marketing automation, so the unsubscribe, the consent check and the postal address are handled for you. When you cannot decide, send it as marketing.

The primary-purpose test, for mixed messages

CAN-SPAM classifies a message by its primary purpose. The FTC’s compliance guide gives two checks for a message that mixes a transaction with promotion. It is commercial if a recipient reading the subject line would reasonably conclude it advertises something. It is also commercial if the transactional part does not appear mostly at the beginning.

So a receipt with the order details first, a plain subject such as “Your receipt for order 1042”, and a small offer at the bottom generally stays transactional. Legal is not the same as wise: Google’s sender guidelines ask you not to mix different types of content in one message, so a receipt is safest without the offer. Change the subject to “Your receipt, plus 20% off” or lead with the offer, and it becomes commercial. An appointment reminder with a “Book again” button at the end works the same way. A commercial message must have honest headers and subject line, say it is an advertisement unless the recipient opted in, show your postal address (a registered PO box counts), offer a way to opt out, and honour an opt-out within 10 business days. The marketing email guide has the full rules.

The UK and the EU are stricter

CAN-SPAM is a US law that lets you email first and stop when asked. In the EU and the UK, marketing email to a person needs their agreement first, and the ICO counts any promotion in a service message as marketing. So the receipt with a coupon and the reminder with “Book again” are both marketing there. The exception is the soft opt-in: someone who bought from you, or asked about buying, may get emails about your own similar products without agreeing first, if you offered a way to say no when you took their address and offer one in every email. Someone who booked a haircut can get your offer on colouring. EU countries apply it differently. In the UK, mail to company addresses needs no prior consent, though sole traders and some partnerships count as individuals.

Keep them on separate sending domains

Mailbox providers such as Gmail judge mail by the domain it comes from and by how recipients react, so complaints about a campaign count against the domain it was sent from. Google’s sender guidelines ask for the same From address per category of message, no mixing of content types in one message, and a separate IP address per message type if you send from more than one. On a shared service the IP addresses (the servers’ network addresses) are the provider’s job; at Rasket a dedicated IP is an add-on from the Scale plan up.

The usual way to follow that is a subdomain: a name under your own domain, such as news.yourshop.com under yourshop.com. It costs nothing: you create it by adding a few lines, called records, to your domain’s DNS settings, the address book that tells the internet where your domain’s mail and website live. They are wherever you bought the domain. Send product mail from send.yourshop.com and campaigns from news.yourshop.com, each set up as its own sending domain. In Rasket, go to Domains, click Add domain, type the subdomain, and copy the records it shows into your DNS settings. It shows the steps for the company that runs your DNS, and connects in one click for Cloudflare and the domain sellers that support it; email domain verification, step by step walks through it.

A small sender can start simpler. A few hundred campaign emails a month can go from news@yourshop.com while receipts go from orders@yourshop.com; move campaigns to a subdomain when they reach thousands. Gmail’s bulk-sender rules start when you send close to 5,000 messages or more to personal Gmail accounts in 24 hours, counted across your whole domain, and once you cross that line you stay a bulk sender. The Gmail and Yahoo requirements list what that adds.

A subdomain separates; it does not isolate. Gmail counts every subdomain toward the parent domain, and providers also weigh the parent’s reputation. The subdomain guide says what it does and does not protect.

Sending transactional email

One API call per message, sent the moment the event happens. Two habits matter. Attach a label made from the event, such as the order number (an idempotency key), so if your app sends the request again after a network hiccup, the customer still gets one receipt; idempotent email sends and email API rate limits cover retries. And keep the id Rasket returns with the order: when a customer says the receipt never arrived, its events show whether it was delivered, bounced or suppressed.

For developers: the code
// Throws on any error. Retry a 429 whose code is rate_limit_exceeded, or a 5xx, with the
// same key; a quota 429 (daily or monthly allowance) does not clear by retrying.
async function rasket(path: string, body: unknown, idempotencyKey?: string): Promise<any> {
  const response = await fetch(`https://api.rasket.com${path}`, {
    method: "POST",
    headers: {
      authorization: `Bearer ${process.env.RASKET_API_KEY}`,
      "user-agent": "yourshop/1.0",
      "content-type": "application/json",
      ...(idempotencyKey ? { "idempotency-key": idempotencyKey } : {}),
    },
    body: JSON.stringify(body),
  });
  if (!response.ok) throw new Error(`${path}: ${response.status} ${await response.text()}`);
  return response.json();
}
// The key is the order, so a retry cannot send a second receipt.
const receipt = await rasket(
  "/emails",
  {
    from: "Your Shop <orders@send.yourshop.com>",
    to: ["ronald.williams@example.com"],
    subject: "Your receipt for order 1042",
    html: "<p>Thanks for your order. Total: $42.00.</p>",
    text: "Thanks for your order. Total: $42.00.",
  },
  "receipt-order-1042",
);
console.log(receipt.id); // store it against the order

A receipt carries no unsubscribe header, and Rasket adds none to API sends. Google requires one-click unsubscribe only on marketing and promotional mail.

Sending marketing email

A campaign is built from four things: a topic (what people subscribe to, such as “Product updates”), contacts (people, with their choice per topic), a segment (a saved filter over contacts) and the broadcast (the message, sent to a segment under a topic). Only contacts opted in to the topic receive it. You can do all of it without code: topics, contacts and segments are under Audience in the dashboard, and the broadcast under Campaigns. Rasket refuses to send until the From domain is verified and your postal address is set, because the address goes in the footer.

“An opt-in you can evidence” means a record of what the person agreed to: the wording of the checkbox, the date and the form they used. Leave the box unticked; a pre-ticked box is not consent in the EU or the UK. Rasket keeps each contact’s consent history: what changed, for which topic, where the change came from and when.

For developers: the code
// default_subscription is what a contact who never chose gets: "opt_out" keeps
// them off this list until they opt in.
const topic = await rasket("/topics", {
  name: "Product updates",
  description: "What shipped, once a month.",
  default_subscription: "opt_out",
});

// The consent you collected, recorded on the topic.
await rasket("/contacts", {
  email: "ronald.williams@example.com",
  first_name: "Ronald",
  topics: [{ id: topic.id, subscription: "opt_in" }],
});

const segment = await rasket("/segments", {
  name: "Product updates, opted in",
  filter: { all: [{ topic: topic.id, subscription: "opt_in" }] },
});

const campaign = await rasket("/broadcasts", {
  name: "October product update",
  segment_id: segment.id,
  topic_id: topic.id,
  from: "Your Shop <hello@news.yourshop.com>",
  subject: "What shipped in October",
  html: '<p>Hi {{{FIRST_NAME|there}}}, three things shipped.</p><p><a href="{{{UNSUBSCRIBE_URL}}}">Unsubscribe</a></p>',
});

// Refused with a 422 until the From domain is verified and the team has a postal address.
await rasket(`/broadcasts/${campaign.id}/send`, {}, "october-update-send");

The unsubscribe is built in

Every campaign carries the headers that make Gmail and Yahoo show their own unsubscribe button.

For developers: the headers

List-Unsubscribe (RFC 2369) and List-Unsubscribe-Post (RFC 8058):

List-Unsubscribe: <https://www.rasket.com/u/v1.1.eyJ0…>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

If the body has no {{{UNSUBSCRIBE_URL}}} or {{{PREFERENCES_URL}}} link, a footer with one and your postal address is added. An unsubscribe is recorded against the topic, so leaving the newsletter does not stop receipts or password resets. The one-click unsubscribe guide explains the headers.

Sending marketing through the email API instead

You can. Then the unsubscribe link, the consent check and the footer are your job. Rasket also watches for newsletters sent this way: the same message without an unsubscribe link reaching many people through the API or SMTP in a day can get the team a warning, and then a 422 with the reason bulk_requires_unsubscribe. Sending it as a campaign avoids both.

If you run a shop, a booking site or a SaaS product

If your store or booking platform already sends receipts, reminders and shipping notices, keep it doing so: it knows the order. Check that they come from your own domain. On Shopify, go to Settings → Notifications and click Email domain authentication under Sender email; if the domain is not authenticated, Shopify rewrites the sender to a shopifyemail.com address. On any platform, send yourself a test, open it in Gmail, click More (the three dots next to Reply) and choose Show original. The DKIM line should name your domain; DKIM is a signature that shows which domain vouches for the message.

Abandoned cart reminders are marketing: send them with an unsubscribe, never to someone who unsubscribed, and in the EU and UK only to people who agreed to marketing or fall under the soft opt-in. In Rasket that is an automation triggered by your cart event, and automation sends get the unsubscribe header and footer added. Order confirmation and abandoned cart emails covers both.

A SaaS product sends most of its mail from code. Invoices, failed payments, trial-ending and usage-limit notices go through the email API from the event that caused them. Send an onboarding sequence as a marketing automation if it nudges toward an upgrade or reaches people in the UK or EU: the sign-up starts it, and its unsubscribe stops the tips without stopping invoices.

Which path to use, what it costs, and when Rasket is not the fit

  • Use the email API (or your shop platform) for anything caused by one person’s action, with an idempotency key from the event that caused it.
  • Use campaigns or automations for anything you send to a group or as a sequence.
  • Give each subdomain its own API key when you split them: a sending key limited to send.yourshop.com for product mail, and a full-access key for campaigns, because creating contacts and campaigns needs more than a sending key allows. Keep the full-access key on your server only, since it can also read your contacts. Either can be revoked without stopping the other stream.

Both kinds count toward one monthly email allowance, and each plan includes a number of contacts. Free covers 3,000 emails a month of any kind, at most 100 a day with campaigns included, and 900 contacts. A startup sending 20,000 transactional and 10,000 campaign emails a month to 3,000 contacts pays $20 a month: Pro’s tier for up to 50,000 emails, with 4,500 contacts included. The price rises with volume. At 100,000 emails and 10,000 contacts it is $70.20: $35 for Pro’s 100,000-email tier, which includes 6,750 contacts, and $35.20 for the contacts past them. The pricing page has the calculator.

If your marketing team works entirely in a visual campaign tool and nobody on your side writes code, a dedicated email marketing platform will suit them better; keep the transactional side wherever your developers are. Two tools work too; the cost is two bills, two sets of DNS records, and unsubscribes and bounces kept in two places that have to agree. The email API page and the campaigns page show what each side includes.

Frequently asked questions

Do I need a separate service for transactional and marketing email?

No. One service can send both if it gives each kind its own From address or subdomain, adds an unsubscribe to marketing only, and sends marketing only to people who agreed. A second service makes sense when a marketing team wants a visual campaign tool and nobody writes code.

Does a marketing unsubscribe stop transactional email on Rasket?

No. An unsubscribe is recorded against the topic the campaign was sent under, and it stops campaigns and automations only. A receipt or password reset sent through the email API still goes out. Hard bounces and spam complaints are different: they suppress the address for every kind of mail.

Will a receipt land in the Gmail Promotions tab?

Usually not, as long as it reads like a receipt. Google does not publish how Gmail picks a tab, but a receipt that leads with offers and images reads like a promotion. Keeping offers out of receipts helps with the tab and with the law.

Do I need consent to send transactional email?

Not a marketing opt-in. The account or the purchase is the reason for the message, and CAN-SPAM exempts transactional and relationship messages from most of its rules. It is still not permission to send a newsletter to everyone who ever bought something; that needs the consent rules of the countries you mail.

When should I send through SMTP instead of the API?

When the software sending the mail only speaks SMTP: a CMS, an authentication service, a printer, an older framework. Point it at smtp.rasket.com with rasket as the username and an API key as the password, and the messages land in the same log as API sends. For code you write, the API gives you idempotency keys and structured errors.

Is an order confirmation with product recommendations still transactional?

Under CAN-SPAM, generally yes if the order details come first and the subject line does not advertise, because its primary purpose is still the order. If the recommendations dominate the message or the subject, it is commercial. Where the EU or UK rules apply, keep recommendations out unless you have marketing consent.

Sources

  1. CAN-SPAM Act: A Compliance Guide for Business — US Federal Trade Commission, read 2026-10-16
  2. Email sender guidelines — Google, read 2026-10-16
  3. Email sender guidelines FAQ — Google, read 2026-10-17
  4. RFC 2369: The Use of URLs as Meta-Syntax for Core Mail List Commands — IETF, read 2026-10-17
  5. RFC 8058: Signaling One-Click Functionality for List Email Headers — IETF, read 2026-10-17
  6. How do we identify direct marketing? — Information Commissioner’s Office, read 2026-10-17
  7. The Privacy and Electronic Communications (EC Directive) Regulations 2003, regulation 22 — legislation.gov.uk, read 2026-10-17
  8. Set up your sender email — Shopify Help Center, read 2026-10-17
  9. Trace an email with its full headers — Google, read 2026-10-17
  10. Directive 2002/58/EC on privacy and electronic communications, Article 13 — EUR-Lex, read 2026-10-17
  11. Rasket docs: Topics API reference — Rasket, read 2026-10-17
  12. Rasket docs: Broadcasts API reference — Rasket, read 2026-10-17
  • Marketing email: types, rules and examples — What marketing email is, how to tell it from transactional mail, types with shop and SaaS examples, and the US, EU, UK and Canadian rules, cited.
  • Should you use an email subdomain for marketing? — When a marketing subdomain like news.example.com is worth it, by volume: what it separates from your domain, what it shares, and the DMARC and DNS records.
  • How to set up one-click unsubscribe (RFC 8058) — Add the List-Unsubscribe and List-Unsubscribe-Post headers, sign both with DKIM and answer the POST: exact headers, a tested Node handler and curl checks.
  • Campaigns — An audience you own: contacts with typed properties, segments, topics people subscribe to, and campaigns sent through the same pipeline as your other mail.
  • Email API — Send email over one REST call: idempotent sends, batches, scheduling, attachments, templates and a delivery timeline for every message.
  • Gmail bulk sender requirements: the full checklist — What every Gmail sender must do, what bulk senders add, and Yahoo and Outlook.com side by side: SPF, DKIM, DMARC, unsubscribe, spam rate and error codes.

Start sending this morning

Sign up, verify a domain and send your first email in minutes.