Changelog
What changed, and when.
Every customer-visible change to SendBeam, in plain language, newest first. Small fixes ship every day; this page lists the ones you would notice.
Last updated 26 September 2026. Something missing or unclear? Tell us.
-
Product
Automations go first, and big arrivals are smoothed
Automation email now has priority over a running campaign: campaigns leave a share of each hour to automations, so a welcome email is never starved. And when a large number of contacts enrol at once — an import, a list add — the ones beyond the hour's threshold start over the next couple of hours instead of all at the same moment; the automation page shows them as Starting later. Nothing to set.
-
Product
New sending domains warm up
A newly verified sending domain ramps up over its first two weeks: each day has a ceiling, sends over it wait for the next day, and Settings → Domains shows which day the domain is on and how much of today's figure is used. It applies to campaigns and automations alike; after the last day there is no warm-up cap, and the shared address needs none.
-
Product
Spread a campaign over a few hours
The Details step has a Pace setting: as fast as the plan allows, or spread over two hours up to two days — the queue paces the send at audience ÷ hours, on top of the plan's ceilings. Settings → General takes a workspace default pace and your own hourly cap below the plan's; the campaign page shows the pace of a send in progress. API: `send_pace_hours` on campaigns.
-
Product
A hosted form can stand as a page
Give a form a headline, a line of copy, a button label and an image, and its hosted page shows them above the form and uses them as the preview when the link is shared — a signup page for a social bio or a print QR code without building one on your own site. The page stays out of search engines unless you turn that on for the form.
-
Product
Send at each contact's best hour
A campaign can now reach each contact at the hour they usually open your emails — the most common hour of their opens over the last six months — within a day of the start, with everyone else at the start. Tick it on the Details step; the campaign shows as sending for up to a day, and Stop sending on its page ends it early, keeping what has gone out. Pro and Business plans. From the API: send_at_best_time.
-
Product
Test a second version of a form
A form can now carry a second version — a different headline, line of copy, button label, thank-you message or button colour — and show it to half the people who see the form, picked at random on each view. Each version's views, submissions and conversion rate are counted on their own, the form's page says which is ahead and when there is enough to go on, and you choose which to keep; nothing switches by itself. A form also has a headline, copy and button label of its own now, for its hosted page. From the API: ab_test and versions on every form.
-
Product
Multi-language campaigns: figures per language, and the language travels with imports and automations
A campaign sent in more than one language now reports sent, opened and clicked for each version that went out, on its page and from the API, and the web version shows a reader the language they were actually sent. Contacts moved in from Mailchimp, Brevo, MailerLite, Kit or EmailOctopus bring their language with them when the platform recorded one. The Set Field automation step can set a contact's language, from a form answer for instance.
-
Product
Custom blocks: your own email blocks, written once in MJML, filled in by anyone
Under Templates → Custom blocks, whoever looks after your brand writes a block in MJML — a hero, a product card, a footer with the legal line — and marks what may change as slots: [[headline]] for text, [[cta:url]] for a link, [[hero:image]] for an image. A split editor compiles it as you type. The block then appears in the email builder under Your blocks; whoever writes the email fills in the slots and cannot break the design. Compiled once on save, so sending is unchanged; the same from the API.
-
Product
A/B test the send time
What to test now includes the send time: the same email goes to an equal share of the sample at two to five times, from an hour to a day apart. Opens and clicks are compared over the same length of time after each release, so the earliest time does not win by default, and the rest of the audience goes out at the winning time of day the next time it comes round. From the API, test_on is send_time and each version carries send_offset_minutes.
-
Product
A workspace audit log
Settings → Audit log shows a workspace admin who did what, when and from where: sign-ins and sign-outs, two-factor and passkey changes, API keys created and revoked, team changes, sender and domain changes, webhooks, connections, exports and the account security policy. Entries cannot be changed by anyone and are kept for a year. A key with the new audit:read permission reads the same entries from GET /api/v1/account/audit-log.
-
Product
Split tests inside an automation
A Split step sends a share of contacts down branch A and the rest down branch B, placing each contact once, and a Send Email step can carry a second subject line that half of the contacts get. The automation page shows entered, sent, opened, clicked and revenue per branch, and opens and clicks per subject, and marks the side ahead once both have enough sends. Nothing is promoted for you: set the split to 100% for the better branch when you have seen enough.
-
Product
Campaigns in more than one language
Contacts carry the language they read in — set on the contact page, through the API, an import column or a form field, and usable in segments. A campaign can carry up to five translations, each with its own subject and body, and every contact receives the version in their language or the campaign's own. Test sends and the web version follow the same rule.
-
Product
A poll can tag people by their answer
The Poll block takes an optional tag per answer. A recipient who taps an answer gets its tag straight away, a tag that does not exist yet is created, and answering again moves the tag to the new answer. An automation triggered by that tag starts as usual, and the report shows which tag each answer applies.
-
Product
Refunds and cancellations net off revenue
The store-events endpoint accepts order_refunded and order_cancelled, keyed on the order id an order_placed carried. A refund takes its amount off the order, a cancellation removes it, and every revenue figure — campaign, automation step, A/B version, Insights — and the contact's lifetime value follow. Shopify's refunds/create and orders/cancelled webhooks map to them.
-
Product
SCIM provisioning for accounts
An identity provider such as Okta, Microsoft Entra ID or Google Workspace can now create, update and deactivate the people on an account through SCIM 2.0. Assigning someone the SendBeam app gives them a seat in every workspace on the account; removing them takes the seats away the same day. A workspace admin generates the token under Settings → Account.
-
Product
Session rules for accounts: SSO-only, a session lifetime, an idle limit
The account security policy gains three rules. Require single sign-on sends every member through the company identity provider. A session lifetime ends a session a set number of hours after sign-in, and an idle limit ends one after a set number of minutes without activity. All three live under Settings → Account → Security policy.
-
Product
Sign in with a passkey
Add a passkey under Settings → Security and sign in with your face, fingerprint or device PIN: no password, no code, and nothing a look-alike site can steal. The sign-in page offers it in the email field on browsers that support it, and through a button on the rest. A passkey counts as two factors, so it is never followed by an authenticator code.
-
Product
Trust this browser: no two-factor code for thirty days
The two-factor challenge now offers to remember the browser for 30 days, so your own phone or laptop is not asked for a code on every sign-in. Remembered browsers are listed under Settings → Security, can be forgotten one by one or all at once, and are forgotten automatically when you change your password or your authenticator.
-
Product
Sign in with GitHub, or with your company's single sign-on
The sign-in and sign-up pages now offer Continue with GitHub, and a work email whose company has single sign-on set up goes straight to that identity provider. Either way the account and its first workspace are created on the first sign-in, so there is no separate signup step.
-
Product
Account security policy: require two-factor, restrict by IP
An account owner can now require two-factor authentication for everyone in the account, and can limit sign-in to a list of IP addresses or ranges. Both live under Settings → Account → Security policy. A list that would lock out the person saving it is refused.
-
Billing
Negotiated plans and invoicing for Business accounts
A Business account can carry its own contracted limits, a purchase-order number and invoice billing instead of a card. The billing page shows the arrangement rather than a checkout button. Ask us at hello@sendbeam.io to set one up.
-
Product
Send history is kept for 400 days
Per-recipient delivery and engagement events older than 400 days are now removed on a rolling basis. Campaign totals, reports and contact records are unaffected; this is the raw event trail behind them, which nobody needs after thirteen months and which should not sit around forever.
-
Website
A security questionnaire you can hand to procurement
The answers a vendor-assessment form asks for — hosting, data location, access control, encryption, backups, incident handling, sub-processors — are now on one page, written to be copied into a questionnaire.
-
Product
Filter contacts by list or tag, across the whole workspace
The contacts page, the export and the API can now filter by list membership or tag, and the filter applies to every contact in the workspace rather than the rows already on screen. Combine it with search, status and the other filters as before.
-
Product
Segments describe their rules in words
The Segments list now says what each segment matches — "Email contains @example.com and tagged Customer" — instead of showing a rule count. Lists and tags a rule refers to are named, not numbered.
-
Product
Webhook endpoints can be edited
A webhook endpoint's URL, name, events and description can now be changed in place from the row menu, without deleting it and creating a new one. The signing secret and the payload format stay as they were.
-
Product
WordPress plugin 1.8.4: orders carry their ID and time
The order_placed event the WordPress plugin sends now includes the WooCommerce order ID and the time the order was placed, so an automation or a webhook can refer back to the order.
-
Product
Segments: a list you can read, and a builder with room to work
The rule builder no longer shares the Segments page with the list. Segments is now a list like Campaigns — search, sort, filter by how many contacts a segment reaches or when it was created, and one menu per row for Edit and Delete — and the builder has a page of its own. Field, operator and value line up row to row, and the count at the foot keeps itself up to date as you write the rules: how many contacts the segment can reach today, and how many match in total. Deleting a segment is at the foot of its own page. Old links into the old editor still work.
-
Migration
Exporting contacts needs its own API permission
contacts:export was split out of contacts:read, so a key that looks contacts up can no longer also download the whole list — or the suppression list — as a file. Existing keys that had contacts:read kept the ability to export; new keys ask for it separately, as "Export contacts" under Audience when you create one.
-
Product
Show some recipients something different
An email can now carry content only some recipients see. Wrap it in {{#if custom_fields.plan is "pro"}} … {{else}} … {{/if}}: the field is any merge tag, the operator is a word (is, is not, contains, is set, is greater than…) and the value is what you would type into a segment rule. Conditions work in the body and the text version, in campaigns, automations and templates, and can sit one inside another. The Review step lists a condition it cannot evaluate the way it lists a tag that will not resolve, and Render as on the Preview tab shows the email as one chosen contact would get it.
-
Product
Ask your readers a question from inside the email
The email builder has a Poll block: one question and two to five answers, each a button. A recipient taps the one that fits and is done — no form, no page to fill in. The campaign's page gets a Poll answers panel with the split, and the same numbers are in the campaign report API. One answer per person (their latest), and link scanners are left out.
-
Product
Forms show how many people saw them
A form's submissions were only ever a total. Every form now counts its views — on the hosted page, in the pop-up, through the WordPress plugin and where the inline code is pasted — and shows submissions as a share of them, on the Forms page, on each form's own page and in the API. Crawlers and prefetches are left out. Inline embeds pasted before today need their code copied again to start counting views.
-
Product
Contacts search as you type
The contacts page now searches and filters as you type — across every contact in the workspace, not just the rows on screen — and the table, the count and the paging update in place. The address bar keeps up, so a filtered view can still be bookmarked or shared. The API's contact list and export accept the same list, source and date-added filters the page has.
-
Product
Every trigger says who it enrols
A trigger's name tells you when it fires, not who for. Each one now carries a "Who this enrols" line that changes as you configure it — "Contact created" reads Everyone and names the routes (by hand, a form, the API, a row of an import), "Tag added" reads Everyone until you choose a tag, and adding an "Only if" rule reads Narrowed. The same label appears beside each automation on the Automations page and on its own page.
-
Product
The Automations page shows what actually triggers each one
The list showed a single trigger and, for any automation not built in the builder, described it as "any tag" when it was in fact bound to one specific tag — it was reading a copy of the name rather than looking it up. Both pages now name the real tag, list or form, show every trigger where there is more than one, and the automation's own page lists any "Only if" rules with them.
-
Product
An import no longer runs your automations
Importing contacts used to start your automations for every contact it created — a welcome series going out to a list you were only moving in. It is now a choice on the import screen, off unless you tick it, and the summary says how many enrolments it started. Through the API it is `run_automations`, which defaults to false: a key that relied on the old behaviour has to ask for it now.
-
Product
Narrow a trigger with "Only if…"
A trigger can now be limited to the contacts you mean, from the builder: open the trigger and add a rule — their source, a field, a tag. Someone who fails it is never enrolled, which is different from entering the automation and taking a Condition step's No path. Worth doing on "Contact created", which otherwise fires for everyone however they arrive; SendBeam now says so when you activate an automation in a workspace whose contacts come from several sources.
-
Product
Automations can call your own systems
A new Call Webhook step tells whatever you like that a contact has reached a point in a flow — a CRM to update, a task to raise, an order to check. It carries no address of its own: it sends the automation.step_reached event, and the webhook endpoints you already have deliver it, signed and retried, so one endpoint serves every automation and a URL that changes is changed in one place. Give the step a label and the receiving system branches on that. An endpoint can now also be scoped to particular automations.
-
Product
Anything can tell SendBeam that something happened
POST /api/v1/events with a name — {"event": "deal_won", "email": "…"} — and every automation listening for that name runs. You type the same name into the new "Something happened elsewhere" trigger, so the sender says what happened and you decide what it should do; neither side needs the other's automation ids. An event never creates a contact: an address you do not already hold comes back matched: false rather than quietly becoming a subscriber.
-
Product
What your email earned, and segments for who bought
Where your store sends SendBeam its orders, each with its order id, a campaign's report now shows the revenue and the number of orders that followed it, beside the opens and clicks — and so does each Send email step on an automation's page, each version of an A/B test (which can now pick its winner by revenue per recipient instead of opens or clicks), and Insights across every workspace on the account. Segments can be built on buying too — whether someone has ordered, what they have spent, how recently. Amounts keep their own currency rather than being added together.
-
Product
Offer another workspace's list on the preference page
If you run several sites on one account, a list can now be offered to people who subscribed on another of your workspaces — from their own preference page, as a tick they choose, never a transfer you make. Two switches control it: the list has to be marked offerable on its own page, and the person has to tick it. Both workspaces must be on the same account.
-
Product
A deleted workspace can be recovered
Deleting a workspace no longer happens on the click. It is held for 14 days and can be restored in that window, and nothing inside it is deleted meanwhile — so a request to erase somebody that arrives during the wait still works normally. You can still ask for an immediate purge.
-
Product
Erase a person from every workspace on the account
A privacy erasure now covers every workspace on the account in one action, rather than being repeated workspace by workspace — which is what a request under the UK GDPR actually asks for. What is kept afterwards (a hash, so a suppression still works) is unchanged.
-
Product
Filter contacts by list, source and when they were added
The contacts page gained the filters the other list pages have — by list, by where the contact came from, and by date added — with paging and type-ahead search on every list page in the app, so a workspace with tens of thousands of rows is navigable rather than scrollable.
-
Product
Send notifications to Slack or Microsoft Teams
A webhook endpoint can now be a Slack or Microsoft Teams channel: paste the channel URL and events arrive as readable messages rather than raw JSON. Only the events that channel can usefully render are offered. Teams' retired Office 365 connector URLs are refused with an explanation of what replaced them.
-
Product
A delivery log you can search
Activity now shows every send with its outcome, filterable and paged, and stays fast as the log grows. Webhook and API-key lists became searchable at the same time.
-
Website
An integrations directory
Every platform SendBeam works with now has a page: what it does, who supports the connection, and a setup guide. The directory can be filtered by category and by who maintains it, and it works without JavaScript.
-
Migration
Sending a campaign needs its own API permission
campaigns:send was split out of campaigns:write, so a key that builds campaigns no longer also sends them. Existing keys that had campaigns:write kept the ability to send; new keys ask for the two separately.
-
Product
Start an automation from a cart, a product view or an order
Three e-commerce triggers — Cart abandoned, Product viewed, Order placed — fed by your store through the e-commerce events endpoint or a Shopify webhook. An order also adds its value to the contact's lifetime_value field, increasing the running total rather than replacing it.
-
Product
Save a workspace as a blueprint, and start the next one from it
Capture a workspace's configuration — its custom fields, its automations and its email templates, images included — as a blueprint owned by the account, then start a new workspace from it. Contacts and lists are never copied (they are customer data, not configuration), and sending domains stay per workspace because each is verified in DNS on its own.
-
Product
Account-wide Insights
A new Insights page adds up every workspace on the account: contacts, sends, opens and clicks together, and each workspace beside the others. It is derived live, so it never disagrees with the workspace it came from.
-
Product
A/B tests: subject line, from name or content, up to five versions
Run an A/B test now tests what you choose — the subject line, the from name, or the email itself — between two and five versions, on every plan. Content versions are written on the Email step, each starting as a copy of the one on screen. The sample is split evenly, the winner by opens or clicks goes to everyone else after the wait (or when you pick it), and the campaign page shows every version with its numbers. A subject-line test you set up before this change runs exactly as before.
-
Product
Automations answer at once
When something you or a visitor does starts an automation — a form is submitted, a tag is applied, a contact is created or joins a list, a field changes, or the API says so — the first steps now run straight away instead of on the next scheduled pass. Waits, and triggers that watch a date, are still checked about once a minute, and the docs say so plainly.
-
Product
Every workspace has an owner
One seat per workspace is its owner: the only person who can delete the workspace, change the account's plan or open the billing portal, and hand ownership to someone else from Settings → Team. Admins keep everything else. Whoever created a workspace owns it; existing workspaces went to their earliest admin, and nobody lost access.
-
Product
Pop-ups for contact forms
A contact form now has a Pop-up snippet too: a floating Contact us button that opens the form in a modal, never a timed interruption, with the same notification email, origin list, rate limits and bot check as the inline form. A pop-up for any form that restricts origins now only opens on the sites you listed.
-
Product
Custom fields with types, and a place to manage them
Settings → Custom fields lists every custom field your contacts carry, with a label, a type (Text, Number, Yes/No, Date or Dropdown) and how many contacts use it; add, edit and delete them there. The contact page edits each field with the right input — a date picker, a Yes/No choice, a list — instead of a JSON box, and every way a value arrives (the API, a CSV import, a signup form, an automation) checks it against the field's type and says what is wrong. Segments, automation rules, forms and merge tags now all name a field the same way, the merge-tag bar lists your fields so nobody types {{custom_fields.plan}} by hand, and the pre-send check flags a field that does not exist. Changing a field's type never alters stored values.
-
Product
Save any email as a template
The campaign wizard's Email step and every campaign page now have Save as template, which keeps a copy of the email under Templates with a name of your choosing. Emails built in the visual builder are saved with their blocks, so the template — and any draft you come back to — reopens in the builder rather than as HTML only, and the builder's starter picker now lists your own templates too.
-
Product
Divider colour and text-block headings
The Divider block's settings now include its line colour, and a Text block can carry an optional heading rendered as its own line above the body. Existing emails render exactly as before.
-
Product
Anniversary automations repeat yearly by default
A new automation with an Anniversary of a date trigger starts with repeats switched on and a 300-day gap between runs, so a birthday or signup-anniversary email comes back every year instead of firing once and never again. The builder says so beside the box, and warns if you switch it off. Automations created before this change are not altered: open one and tick "Let a contact go through this more than once" if it should be yearly.
-
Product
RSS feeds are checked when you add them
Adding or changing a feed URL fetches and reads the feed there and then: you see how many posts it holds and the newest title, and a URL that is not a working feed is refused with the reason instead of failing quietly on the first scheduled check. The Send now dialog's second button is now labelled Resend latest posts…, which is what it does — after one more confirmation.
-
Product
Rename a workspace
Workspace settings → General now has the workspace name as a field. Admins can rename a workspace at any time; the slug and the sender name stay as they are, and the change is recorded in the audit log.
-
Product
Unsubscribed can now mean blocked
Setting a contact to Unsubscribed — on the edit page, with the new bulk Unsubscribe action, or through the API — can now also block the address, so no later import, API call or signup form brings it back as a subscriber. The box is ticked by default in the app; the API takes suppress: true. The contact page shows a Suppressed badge whenever an address is blocked, and a blocked unsubscribe is lifted from the edit page by confirming the person asked to be re-subscribed.
-
Product
API contact updates merge custom fields
PATCH /api/v1/contacts/{id} now merges custom_fields: the keys you send are set, a key sent as null is removed, and every other field on the contact is kept. Before this, sending one field replaced them all. Send replace_custom_fields: true if you want the old behaviour.
-
Product
Placeholder addresses are caught before they fail
Imports skip addresses that can never receive mail — example.com, reserved test domains like .test and .invalid, and abuse@ or postmaster@ mailboxes — and name them in the summary. A campaign's Review step and its page list any such addresses in the audience before you send.
-
Product
Merge-tag fallbacks
Any merge tag can carry a fallback after a pipe — {{first_name|there}} or {{custom_fields.plan|free}} — used when the contact has no value, in the subject line, the email body and the plain-text version. No more "Hi ," for contacts imported without a name.
-
Product
Typos in merge tags are caught before you send
The Review step, the campaign page, Send test, templates and automation email steps now list any {{tag}} that will not resolve — with the tag you probably meant — and a campaign cannot be sent with one until it is fixed or you choose Send anyway.
-
Product
Read back recent events from the API
GET /api/v1/events?type=contact.created returns the latest events of that type your webhook endpoints were sent, newest first and in the same shape, so an integration can show real data before anything new happens. It needs an API key with webhooks:read.
-
Product
SendBeam for n8n
The official SendBeam node for n8n is on npm as n8n-nodes-sendbeam: 25 actions for contacts, lists, tags, campaigns, automations and email, and a trigger that starts a workflow on any SendBeam event. Install it from Settings → Community nodes in n8n.
-
Product
Test webhook events look like real ones
Send test event now sends the same fields a real event of that type carries — a contact event has the person under data.contact — with test: true and obviously fake values, so anything you map from a test keeps working when real events arrive.
-
Docs
The send API returns message_id only
Responses from POST /api/v1/send carry the message's ID as message_id. An older field that repeated the same value has been removed; if your code read it, read message_id instead.
-
Docs
Upstream failures now answer 503
When a delivery provider or another service we depend on fails, the API answers 503 with the reason in the body, where it used to answer 502. If you check for 502 in your code, check for 503 as well.
-
Product
Automations say when they cannot run
Activating an automation now checks it first — a template that no longer exists, a deleted tag, a step with nothing to send, a workspace that cannot send — and refuses with the reasons instead of showing Active while doing nothing. The same checks show on the automation page while it runs, a "Needs attention" badge appears in the list, and if a run fails the reason is recorded on the automation and the workspace admins get one email a day about it. Email steps also gained a clearer choice between a saved template and writing the email in the step.
-
Product
Connect your DNS provider instead of pasting a token
Adding a sending domain no longer asks for a Cloudflare API token. Where your DNS provider supports Domain Connect — Cloudflare, GoDaddy, IONOS, Vercel, WordPress.com and more — the domain card offers "Connect with <provider>": approve the two records at your provider's own login and they are added for you. SendBeam never sees a password or a token.
-
Product
Send your site's own email through SendBeam
A new API call, POST /api/v1/transactional, delivers the email a site sends to its users — order confirmations, password resets, booking reminders — from your verified domain, to any address. The WordPress plugin has a switch for it: turn on "Send this site's email through SendBeam", paste a key with the new Send site email permission, and WooCommerce, membership and form plugins all go out the same way. No SMTP anywhere.
-
Product
Imports skip domains that cannot receive mail
CSV and platform imports now check every address's domain first. Domains that do not exist, refuse mail outright or have no mail servers are skipped rather than imported to bounce later, and the summary names the domains with the most rows lost.
-
Product
WordPress plugin and Zapier app
SendBeam for WordPress adds a form block, shortcodes and a pop-up to any WordPress site from one settings page. The Zapier app brings instant triggers for new contacts, unsubscribes, list joins and form submissions, plus contact and send actions; ask for the invite link until it is listed.
-
Product
Subject-line suggestions
A "Suggest subject lines" button under the subject field writes five alternatives from the email you have drafted — different angles, under 60 characters, no clickbait — and drops the one you pick into the subject (or into subject B for a test). Written from the email's own text; nothing about your contacts is sent, nothing is stored. A daily allowance per workspace.
-
Product
Email builder: six new blocks and eight more starter designs
The builder gains Feature (image beside text and a button), List, Quote, Video (a linked thumbnail), Latest posts (for RSS to email) and a raw HTML block. The template picker grows from six to fourteen finished designs — blog digest, product update, win-back, launch announcement, onboarding tips, event reminder, order confirmation and a monthly round-up.
-
Product
Delete drafts, and a campaign's own From address is honoured
Draft and cancelled campaigns can be deleted from their page or with DELETE /api/v1/campaigns/{id}; sent campaigns stay as a record. And when a campaign names its own from name and address, they are used whenever the address is one your workspace may send as (a verified domain or your shared address) — otherwise the workspace sender is used, as before.
-
Product
Campaign reports: links clicked, and what people opened with
A sent campaign now shows every link with its clicks and how many people clicked it, and the share of opens by email client (Gmail, Apple Mail, Outlook, Yahoo, Thunderbird) and device. Scanner and prefetch opens are left out. Also available as GET /api/v1/campaigns/{id}/report.
-
Product
RSS to email: new blog posts become a campaign on a schedule
Add a site's RSS or Atom feed under Messaging → RSS to email, pick the audience and a schedule (as posts appear, daily or weekly at an hour you choose), and every new post goes out as a normal campaign — with the built-in digest layout or any template that has the new "Latest posts" block. Nothing is sent when nothing is new; each send has its own stats. One feed per site, one account for all of them.
-
Product
Subject-line A/B tests
Tick "Test a second subject line" on a campaign: a sample of the audience (10–50%) gets subject A or B, and after the wait you choose (30 minutes to 24 hours) the subject with the better open or click rate goes to everyone else. The campaign page shows both subjects' live numbers and lets you end the test early and pick the winner yourself. Audiences under four recipients send plain.
-
Product
View in browser: every sent campaign has a web version
A new {{web_version_url}} merge tag — in the email builder's Footer block by default and on the merge-tag buttons — links to the campaign's own page at sendbeam.io/c/<id>. Each recipient's link is personalised: their merge tags filled in and their unsubscribe link working. Drafts have no page; the page is not indexed by search engines.
-
Product
Unsubscribe from one list, stay on the others
The unsubscribe page is now a preference page for anyone on your lists: every list ticked, the one this email came from marked, Save preferences to leave just some, or Unsubscribe from everything. Leaving a list fires contact.list_left and, when it was the campaign's list, counts in that campaign's unsubscribes. Mailbox one-click unsubscribes stay global, as Gmail and Yahoo require.
-
Product
Forms: a hosted page and a pop-up for every form
Each active form now has its own page at sendbeam.io/f/<id> — a link for a bio, a QR code or a site you cannot edit — and signup forms get a one-line pop-up snippet that opens the form in a modal after a delay, on a floating button, or from any link you mark up. Both use the same fields, double opt-in and thank-you message as the inline embed.
-
Product
Segments by engagement, and send again to non-openers
Segments can now use what people did: opened or clicked a specific campaign, received it but did not open, or opened or clicked anything in the last N days — which makes "hasn't opened in 90 days" a one-rule segment. Every sent campaign gets a Send again to non-openers button that drafts a copy aimed only at the people it reached who did not open it; change the subject and send.
-
Product
Contacts: add to or remove from a list in bulk
Select contacts on the contacts page — or everything matching a filter — and put them on a list or take them off it from the bulk bar, next to the tag actions. Only subscribed contacts join, a double opt-in list holds them pending without sending mail, and the result says how many were added, already there or skipped.
-
Product
API: add or remove many contacts from a list at once, and fetch one tag, segment or webhook
The bulk contacts endpoint gains add_to_list and remove_from_list, so a thousand contacts join a list in one call instead of a thousand. Tags, segments and webhook endpoints can now be fetched by id, with live counts on tags and segments.
-
Billing
Sending domains and automations are per workspace
A domain and an automation belong to one site, so their plan limits now apply per workspace instead of being shared across the account. On Free every workspace gets its own sending domain and live automation; on Starter three domains and five automations each. Contacts, emails and seats still pool across the account.
-
Product
Quick start: first email in about five minutes
New workspaces get a four-step card on the dashboard: paste a few contacts, pick a starter design, create a campaign or a welcome automation, and send yourself a test — all without leaving the card. Steps tick themselves off from what exists, so it never nags about things already done; hide it and pick it up later from the sidebar.
-
Product
Send a test to yourself
Every campaign can be sent to your own inbox first, exactly as subscribers will see it, with "[Test]" in front of the subject. Test sends do not count against your plan.
-
Billing
Yearly billing: two months free
Every paid plan can now be billed yearly at ten months for twelve, in USD, GBP, AUD or CAD. Choose it on the pricing page or under Settings → Billing; the amount shown is the amount charged.
-
Billing
Only subscribed people count towards your plan
The contact limit now counts subscribed addresses across your account. Someone on two of your sites counts once, and contacts who unsubscribed, bounced or complained never count.
-
Product
More workspaces on Free and Starter
Free accounts now get two workspaces and Starter five, so a second site no longer needs a paid plan and five small sites fit on Starter. Pro and Business stay unlimited.
-
Migration
Import straight from Mailchimp, MailerLite or Kit
Paste a read-only API key and the importer brings subscribers, tags, custom fields and consent evidence into a list. Existing unsubscribes arrive unsubscribed. Re-subscribes are handled the same way on every route in.
-
Migration
Suppression list import
Upload the unsubscribes, bounces and complaints from your old platform before any contact is imported, so nobody who opted out there is ever emailed here.
-
Migration
Move-in: we move every site on your account
A done-for-you migration from Mailchimp, MailerLite, Kit, Brevo, beehiiv, Substack, EmailOctopus or Sendy. Subscribers, suppressions, consent evidence, forms and sending domains for every workspace, with a 30-day unsubscribe sync after cutover. Included on Pro and Business.
-
Product
Campaign audience preview
Before you send, the campaign page shows exactly who will receive it and why: list, segment, suppressions and plan limits applied, the same way the sender applies them.
-
Product
Segments show how many people are reachable
Each segment now shows two numbers: how many contacts match, and how many of those can actually be emailed once unsubscribes, bounces and pending opt-ins are taken out.
-
Billing
Plans belong to the account, not the workspace
Contacts, emails, domains and seats now pool across every workspace on your account. Adding a site never adds to the bill; only your total audience does.
-
Billing
Card payments, upgrades and invoices
Upgrade from the billing page and pay by card. Change or cancel from the customer portal, download invoices, and see the plan change take effect within seconds.
-
Product
One login, many workspaces
Switch between the sites you run from the sidebar. Each workspace keeps its own contacts, lists, forms, automations and sending domain. Free accounts get one workspace, Starter three, Pro and Business as many as you need.
-
Product
Export or delete a workspace yourself
Settings now has a Your data section: download everything a workspace holds, or delete the workspace outright, without contacting support.
-
Product
Contact forms that email you, protected by Turnstile
A form can now be a contact form: the message is emailed to you with the visitor as reply-to and no contact is created. Every form gets an origin allow-list, rate limits and optional Cloudflare Turnstile.
-
Docs
Public documentation and API reference
49 pages of docs, an API reference generated from the OpenAPI spec, the spec itself at /openapi.json, Markdown versions of every page, and llms.txt for people who read with an assistant. Search across all of it from the sidebar.
-
Product
Segment by tag, and act on a whole filter
Segments can include or exclude contacts by tag. On the contacts page, bulk actions apply to everything matching the current filter, not just the visible page.
-
Product
Full contact export, clearer scheduled campaigns
Export every field, tag and consent record for your contacts as CSV. Scheduled campaigns now say when they will go out and what will happen at the limit.
-
Product
The app works on phones and tablets
Tables fold into cards, toolbars wrap, and form controls no longer trigger zoom on iOS.
-
Website
New sendbeam.io, pricing and contact pages
A front door that explains the product, a pricing page that matches what is enforced, a contact form that runs on SendBeam itself, and a public health endpoint the footer reads live.
-
Product
Sign in with a link, and two-factor on your devices
Email-first sign in with a one-click link or a six-digit code, email verification on signup, and optional TOTP two-factor authentication per device.
-
Product
Command palette, help drawer and a first-run checklist
Press Cmd/Ctrl-K to jump anywhere. The Help button opens the right docs page beside the screen you are on. New workspaces get a checklist that walks through domain, list, form and first send.
-
Product
Test-send a campaign from its page
Send a campaign to yourself before it goes to the list, with merge tags filled in.
-
Product
Self-serve signup and plan limits that explain themselves
Create an account without talking to anyone. When you hit a limit, the app tells you which one and what to do; sending pauses rather than failing silently.
-
Product
Your own sending domains, with one-click DNS on Cloudflare
Verify a sending domain per workspace. If the domain is on Cloudflare, the records are written for you; elsewhere you copy two records. Pick any address on a verified domain as the From address.
-
Product
Opens that are not people are filtered out
Analytics now ignore opens generated by mail scanners and prefetchers, so open rates reflect readers.
-
Product
Campaigns send through a queue
Large sends are queued and resume after a limit or an interruption. Scheduled campaigns are picked up on time without anyone keeping a tab open.
How this list is kept
Entries are written by the people who shipped the change, on the day it reached production. Fixes that nobody outside the team would notice, and changes to internal tooling, are left out. Dates are the day the change went live, not the day work started.