Skip to main content

Easier cart design and event previews

Cart blocks now open with design presets, image and typography controls, and a compact event summary. You can apply suggested fields with explicit price units and preview empty carts, long names, missing images and mobile layouts. API, CLI and MCP clients get the same presets, suggestions and scenario data. Repeat previews also load real event rows without placeholder data getting in the way.

Create campaigns from a selected group

Choose Create campaign from filtered contacts, selected rows or an email activity group, then choose a template. The complete group is saved directly in the draft without creating a list or changing sequence enrollments. Saved lists and segments retain campaign and sequence creation. Sequence activity selections include A/B email steps. Drafts show an Audience set chip, and the API, CLI and MCP support the same direct audience selection.

Lemon Squeezy reconciliation and disconnect

Lemon Squeezy revenue now reconciles refunds and historical imports without counting payments twice, and delayed payments preserve expired subscription state. Imported subscriptions retain the comparison state needed for future trial conversions and plan changes. You can also disconnect Lemon Squeezy through the API, CLI, or MCP and retry managed webhook cleanup if the provider is unavailable.

Test email delivery history

You can see pending, successful and failed test sends in Sent emails and through the API, CLI and MCP.

Custom reply domain verification

Custom reply tracking now checks verification of your receiving domain before showing it as active. If a legacy reply domain needs a verification TXT record, you can retrieve it in the dashboard, API, CLI, or MCP and retry verification while keeping existing reply addresses.

Subscriber import checker removed

CSV imports no longer run list-risk scoring, block entire files based on list patterns or source, or send import-risk alerts. You can import without a safety bypass. Contact validation, permission confirmation, suppression handling, and email-sending safeguards remain in place. If an earlier upload was blocked, upload the file again.

Rename matching email footers

When you rename your company, you can now update matching company names in editable email footers and saved components at the same time. Custom names and protected campaigns stay unchanged. The same option is available through the API, CLI and MCP.

Review a whole sequence

Review saved email steps and A/B variants with one sample contact, move between emails while editing, and check timing and branches before activation. Use the existing activation and enrollment controls when you are ready.

Restored signup list compatibility

Your existing API keys can again create or update subscribers with explicit lists using subscribers:write. We reverted the additional lists:write requirement introduced on September 8 for POST /api/v1/subscribers. You do not need to change your key or integration. Imports into explicit lists and dedicated list membership endpoints keep their existing permission requirements. Review rejected signups before retrying them, since successful requests can trigger onboarding automations.

Event properties in sequence tests

Test abandoned-cart and other event-driven sequences with your own JSON event properties, including cart IDs, arrays and nested objects. Copy your latest received event payload or enter JSON in the live sequence test dialog, or start and inspect a live test through the API, CLI or MCP. Live tests run real actions for your selected subscriber and mark emails as tests.

Connect Lemon Squeezy

Connect your Lemon Squeezy store to import customer revenue, keep subscriber metrics up to date, and receive purchase, subscription, refund, and dispute events automatically. You can set it up from the dashboard, API, CLI, or MCP, with managed webhook provisioning available by default.
Turn off unsubscribe tracking to send footer and one-click unsubscribe links directly to sequenzy.com, even when you use a custom tracking domain. The setting applies to subsequent sends, through the dashboard, API, CLI, and MCP. Actual unsubscribes and their email attribution are still recorded.

Script sends with JSON receipts and piped content

You can send emails from scripts with explicit workspace selection, JSON receipts, and piped HTML. Supported text-file inputs also accept stdin. CLI and MCP failures now include structured recovery information and API retry hints, while CLI diagnostics preserve request keys for interrupted operations.

A better HTML editing experience

Edit HTML blocks and full email source with syntax highlighting, code completion, folding, find and replace, and undo and redo. Expand the editor for more space without losing your selection or undo history, and search rendered HTML directly from the HTML tab.
You can now apply your default footer to selected sequences, draft or scheduled campaigns, transactional emails, and reusable templates. Review affected counts and before/after previews first, with customized footers preserved by default. The same workflow is available through the API, CLI, and MCP, including HTML previews for agents.

More reliable Make searches

Sequenzy’s Make connector now follows API pagination for campaigns, sequences, subscribers and suppressions, with a configurable result limit on every search. Filtered modules use clearer Search labels, live dropdowns load more choices. Setup guidance also covers list imports and double opt-in delivery.

Accurate non-opener resend previews

Your non-opener resends now exclude openers across every audience format, including manually added recipients. Counts and previews stay consistent throughout the campaign wizard, and resending a resend preserves earlier opener exclusions.

Rewrite Ask AI prompts from your goal

Describe what you want to achieve in the Ask AI prompt editor, then choose Rewrite prompt to refine the current prompt without first generating a contact preview.

Signup notifications for recent timestamps

New-subscriber notifications now work when your API, CLI or MCP integration supplies a signup timestamp at most one hour old. Older timestamps and bulk imports remain silent on creation; double opt-in confirmation can still notify.

Easier dashboard use on your phone

You can configure sequence conditions, review campaigns, inspect personalized email previews, and manage contacts and settings with layouts that fit smaller screens. Contact tabs stay visible, and preview data and deliverability checks are now accessible on mobile. You can expand compact contact rows to see more details.

Clearer cart and order data settings

Cart and order settings now open on a Data tab showing where items come from and whether your preview uses real data or samples. You can map product names, images, quantities, prices, and other item fields to your own data, choose fields from preview examples, and catch missing values or invalid prices inline. The Data tab also shows the triggering event and lets you inspect the items payload. Use Appearance to choose what is visible. See Cart and Order Blocks.

Background contact tasks

You can add tags to filtered audiences in the background, keep working while tasks run, and return to check progress, inspect failures or cancel future work. The same workflow is available through the API, CLI and MCP. Contact browsing also avoids unnecessary count requests and uses cursor pagination when sorting by creation date.

Clearer sequence setup and email previews

Review activation blockers in one checklist and jump to the step that needs attention. Step pickers show where your new step will go, and email steps now offer a quick saved-content preview with an Edit email shortcut.

A calmer email editor

Block settings open when you select a block on desktop, with unified controls and an animated Settings / AI switch that highlights when you pick a block and returns to the assistant when you deselect it. Image pickers keep your settings selected. Discard offers content recovery and confirms settings resets. The library lists sections with summaries, readable sample previews and expanded Advanced options. Variable now opens a searchable dialog with custom names, fallback text and a personalization preview. Heading numbers are optional. The tablet assistant opens beside your email; phones get preview data, test sends and simulation controls.

Fewer steps from an audience to a send

Saved segments and lists now offer Create campaign and Create sequence, with animated guides and a banner keeping your selected audience visible during setup. Sequences trigger when contacts enter the segment or join the list. Shopify settings show tracking and sequence status separately, with one step to review an existing sequence or set one up. The CSV importer remembers your last mapping corrections and import options for explicit reuse after reviewing column differences. Consent, contact source and sequence enrollment are still confirmed on every import.

Automatically save your first generated email

When you create a campaign or transactional email from a prompt, your first applied result now saves automatically so reopening or refocusing the editor does not restart generation after a successful save.

Smarter saved AI styles

Saving an AI style now asks follow-up questions. The dialog shows what gets reused and the layout habits it noticed, such as a dotted divider above and below every button or opening with a video, so you can keep or drop each one and add notes. New AI emails follow the kept habits and get those dividers inserted automatically. After a generation, the assistant offers a few follow-up suggestions proposed by the writer for that email, and the Save as AI style chip stays hidden while the email already matches your saved style. The API, CLI and MCP accept the same layoutRuleIds and notes.

Explicit email restyling

Your visual requests now take priority over saved designs and company color defaults, including when you ask for new copy. Text-only results are retried instead of being presented as a restyle. Reference looks, such as “make it OpenAI style”, now return a complete palette and fonts, with one retry when the colors are missing. You can manage your saved AI style from the AI Assistant header.

Manage saved AI styles from your tools

You can now inspect, save and clear your company’s AI email style through the API, CLI and MCP, including unsaved canvas snapshots. Revision checks protect newer styles from stale requests, with the same source permissions and validation as the editor.

Reuse an email’s style for AI

Choose Save as AI style from the AI sidebar’s header style button, the suggestion after generation, Style settings, or Campaign settings. Confirm to make the design your company’s default for future AI emails. Explicit requests for a different look, such as a ChatGPT welcome email, take precedence over your saved style. New generations reuse its fonts, colors, spacing, and matching block styles with fresh copy. You can replace or clear the saved style with confirmation; existing emails stay unchanged. Learn more.

Protection against repeated transactional junk

Repeated transactional content sent to many recipients can now trigger a junk/list-testing review. Substantiated junk findings reject later matching deliveries without pausing unrelated email. Review continues in the background, and rejected deliveries appear as failed rather than being held for automatic replay. Read about delivery status and retries.

Cart, order, and free-shipping blocks

Store emails can now show each recipient their own basket. The new Cart items and Order summary blocks render the trigger event’s line items with thumbnails, quantities, line totals, a total row, and a checkout or tracking button. The Free shipping bar shows how far a cart is from your threshold. Product cards gained a sale badge, a star rating, and a low-stock note. Cart Recovery uses the new blocks, and ten store designs join the gallery, from Price Drop and It’s Back to Shipping Cutoff. The designed gallery now shows every design whatever your site type, with the closest fits first. See Cart and Order Blocks.

Accurate counts for older segments

Saved segment filters without internal filter IDs now retain their conditions when evaluated, fixing inflated counts and audiences without requiring you to recreate the segments.

Start sequence emails from your own templates

Every Send Email step now has a Start from picker: your saved templates, the designed template gallery, or any existing email. Whatever you pick is copied into a new email for that step, so one master design can carry a whole sequence while each step keeps its own copy and images. Describe the step and Generate in this design rewrites only the text inside the layout; steps that still share one email show a Shared chip with a one-click way to detach. Mark any email as a template from the Emails page, the editor header, or with isTemplate over the API, CLI, and MCP.Interface scope: standalone/sequence source-design copying and AI rewriting within the selected layout are dashboard-only in this release, keeping source, translation, and fallback-copy review in the interactive authoring flow. REST, CLI, and MCP support template marking and normal content creation; they do not yet expose equivalent standalone/sequence source-design operations. Existing campaign copying through REST or MCP with templateId remains available. This intentional parity exception is documented with the supported alternatives below.View documentation

Lifecycle templates and Shop components

The template gallery gains a Lifecycle category for stores - brand lookbook, welcome offer, cart recovery, post-purchase, review request, care guide, and win-back - and the editor gains a Shop component category with lookbook tiles, category tiles, product spotlight, review strip, perks row, and announcement bar, none of which need a product catalog. View documentation

Marketer team role

Invite teammates as Marketer when they should run campaigns but not the workspace. Marketers create, edit, schedule, and send campaigns and sequences, manage subscribers, lists, tags, segments, forms, and landing pages, and read analytics and the inbox. They never see transactional emails, settings, billing, integrations, API keys, or the team page, and the same limits apply when they use a personal API key, the CLI, or MCP. Assign the role from Settings → Team, the team API, sequenzy team invite --role marketer, or the invite_team_member tool. View documentation

Higher API rate limits

The standard API budget is now 300 requests per minute per key (up from 100), and POST /api/v1/transactional/send has its own budget of 1,000 requests per minute and 50 per second so bursts of confirmation emails no longer compete with your subscriber and campaign calls. View documentation

Dedicated OpenAI-reviewed MCP surface

ChatGPT and the OpenAI plugin directory now use the dedicated https://api.sequenzy.com/v1/mcp/openai surface. It shares Sequenzy’s MCP implementation while omitting secret-producing integration, API-key, webhook, raw-delivery, and inbound-secret rotation operations. Open-ended contact, event, form, webhook-sample, personalization, and feedback inputs reject restricted personal-data fields; responses remove restricted fields, internal diagnostics, and unnecessary account or credential identifiers. Restricted merge-tag selectors and third-party credential-bearing URLs are blocked, and email previews on this surface use sample or policy-checked inline subscriber data instead of loading an uninspected stored subscriber by ID.The standard remote endpoints (/mcp and /v1/mcp) and local stdio package retain the full MCP feature set for trusted clients, including their existing credential-based integration setup and one-time API-key and webhook-secret flows. The OpenAI-reviewed surface omits raw nested API error payloads while the standard surface retains its existing debugging detail. Product feedback is sent only when the user explicitly asks. View MCP data and privacy guidance

Delete obsolete sender profiles safely

Sender (From) profiles can now be permanently deleted through the REST API, CLI, and MCP. Sequenzy blocks deletion while a live sending surface uses the profile, protects the last sender, and reports the fallback chosen for eligible drafts and account defaults. View documentation

A full Sequenzy app for Make

The Make custom app now covers the platform rather than just subscribers. Eight instant triggers start scenarios from subscriber, email, reply, poll, SMS, campaign, sequence, and import events, and new modules handle lists, segments, bulk tags, imports, sequence enrollment, campaign scheduling and metrics, transactional sends, deliverability suppressions, and commerce orders and checkouts. Lists, tags, segments, sequences, campaigns, and templates now load as live dropdowns instead of pasted IDs. View documentation

Start n8n workflows from Sequenzy events

The Sequenzy n8n community package now includes a trigger node that starts workflows from selected email, SMS, campaign, subscriber, and sequence events. It creates and manages the signed outbound webhook for you, and the opt-in campaign.sent event provides one completion signal after an email or SMS campaign settles. View documentationThe Monday weekly report now goes only to the workspace owner by default. Teammates who want it can turn it on for themselves under Settings -> Notifications, via sequenzy notifications set --weekly-report weekly, or with the update_notification_preferences MCP tool.Tag pickers and per-tag subscriber counts now stay responsive in workspaces with tens of thousands of tags.

Weekly report every Monday

Each workspace that sent more than 10 emails last week now gets one short Monday email: one row of numbers against the week before and the sequences that slipped, each linked so the fix is one click away. The report is on by default and per person; turn it off under Settings -> Notifications, sequenzy notifications set --weekly-report off, or the update_notification_preferences MCP tool. View documentationVideo blocks now accept a custom thumbnail everywhere: pick an image in the editor, or set thumbnailUrl in API, CLI, and MCP block writes. Omit the field to fall back to YouTube’s own still while keeping videoUrl as the click destination.Hosted unsubscribe pages and embedded subscription preferences now show public list names without exposing list descriptions. Descriptions remain internal workspace metadata.Hosted unsubscribe pages now lead with a single Unsubscribe action that clearly stops marketing email, then keep granular preferences available below. The success state stays visible with an undo option, and free-tier attribution has been reduced to quiet footer text.
Emails generated through the API, CLI, and MCP now follow your designed/plain email style setting the same way the dashboard does - designed by default unless you chose plain text - and the style parameter accepts designed or plain to force a specific style per request.Each company can now send up to 100 test SMS messages in a rolling 24-hour window, replacing the previous five-per-hour cap. Test sends still require a verified number, charge SMS credits, bypass quiet hours, and stay out of campaign and automation statistics. View documentation

Map Attio lists without reconnecting

A connected Attio integration with no list mappings used to be dashboard-only to finish. Agents can now read live Attio people-lists and save listMap with the stored token — no access token re-paste.
  • GET /api/v1/integrations/{id}/attio returns Sequenzy lists, live Attio people-lists, and the saved map
  • PATCH /api/v1/integrations/{id}/attio saves mappings ({} clears them) and/or company matching
  • CLI: sequenzy integrations attio <id> and sequenzy integrations set-attio-lists <id> --map list_abc=field-guide
  • MCP: get_attio_mapping and update_attio_settings
  • get_integration now recommends mapping when mappedListCount is 0, and availableActions includes update_attio_settings
View documentation

Landing page reports like Mailchimp

Published landing pages now record visits, unique visits, clicks, and subscribes, with a conversion rate, daily chart, referrers, and UTM sources. Known crawlers are excluded from the main totals and listed separately as crawler hits, so a founder can tell whether 31 views were people, Googlebot, or the team opening the public URL. Preview URLs and the editor still do not count. Open Stats from a page’s list row, or use get_landing_page_stats / GET /api/v1/landing-pages/{id}/stats / sequenzy landing-pages stats. View documentation

Enrollment history shows why a branch took else

Completed sequence tokens now keep a redacted record of how they entered and which if/else they took: enteredVia, entryContext (event keys, never values), and branchDecisions (compared field name plus missing/empty/nonempty/equals_expected). New enrollments persist that decision on the token. For older completed tokens, GET /api/v1/sequences/{id}/enrollments/{enrollmentId}, get_sequence_enrollment, and sequenzy sequences enrollment reconstruct the graph walk from ClickHouse and redact any raw compared values that were stored in node-completion metadata. API docs · MCP docs · CLI docs

Agents can explain and resolve Sequenzy email branding

get_company, GET /api/v1/companies/{companyId}, and sequenzy companies get now report the effective “Sent with Sequenzy” entitlement: whether the badge is visible, whether the current owner subscription removes it, the plan/status reason, and the required upgrade or renewal action. They also return the real Account -> Subscription URL; get_app_urls and sequenzy urls --settings-tab billing now resolve there instead of constructing a nonexistent billing Settings tab. Branding remains a server-enforced plan entitlement rather than a writable footer toggle, and entitlement changes automatically apply to future sends from existing live sequences. API docs · CLI docs · MCP docs

Block field lookup survives a partial MCP grant

Agents authoring email blocks are now told to enable get_email_block_schema on the Sequenzy connector when it is missing from the tool list, and pointed at the same reference on sequenzy://email-blocks, GET /api/v1/email-blocks, and sequenzy blocks <type> instead of inferring field names from live HTML. Body copy color is documented as styles.textColor (or the top-level textColor alias), not an inline style on <p> or <span>. View documentation

Manage toll-free numbers like sending domains

Every SMS number now has its own detail page: status, the toll-free verification data you submitted, per-number usage (sends, delivered, failed, credits, last sent), and a label or brand-prefix override, all in one place. You can also remove a number you no longer need - freeing one of your workspace’s number slots, now raised to 100 so multi-brand senders can register a number per brand - and choose exactly which number a test send goes out from. View documentation

One design system per brand, coherent sequences

Every AI-generated email now renders inside a single per-company design system: one composition style, one visual grammar (kickers, alignment, buttons, dividers, density, openers), and one theme - instead of each sequence email re-rolling its own look. Sequence steps no longer drift to different colors, fonts, or design languages mid-sequence. The identity lives in your design direction text (Settings), starts derived from your brand, and is adjustable via the API (/api/v1/email-design-system), the CLI (sequenzy email-design-system), and MCP (get_email_design_system / update_email_design_system). API docs · CLI docs · MCP docsBrand onboarding also got sharper: enrichment now retries transient failures instead of silently giving up, and your email theme’s mood follows the brand’s actual tone of voice.

Native Attio destination for list joins

Gated lead magnets and other list-gated content can push new subscribers into Attio without Zapier. Connect with an Attio access token, map a Sequenzy list to an Attio list, and each subscriber.list_subscribed upserts the person by email (optional company from the work domain) and adds them to that Attio list. Outbound only: no inbound webhook, no backfill, add-only. View documentation

Safer agent access can edit sequence A/B variant copy

Safer agent access now includes ab_tests:write, so an agent can rewrite cart and browse abandonment variant bodies without bumping to AI drafting. Live tests still need confirmLiveChange. Rejected writes through update_template, update_sequence_node, or the sequence emails[] array now name update_ab_test_variant, include the test and variant IDs when known, and say to enable that tool on the connector rather than retrying another email tool. GET /api/v1/templates/{id} also surfaces that pointer when the email belongs to a variant. Existing Safer agent access keys need the preset re-applied (or ab_tests:write added) to pick up the new permission. View documentation

Sequence A/B variant copy on get_sequence

GET /api/v1/sequences/{id} now returns each A/B variant’s full blocks on emails[].abTest.variants[] when the key has ab_tests:read, so a sequence audit (cart or browse abandonment included) can read competing CTA, promo, and review copy without a second get_ab_test call. Step-level blocks are still control variant A only. View documentation

Segment by marketing vs transactional email activity

Engagement filters can now be scoped to an email type: marketing:<timeRange> matches marketing-policy sends from campaigns, automations, and the Send API, while transactional:<timeRange> matches transactional-policy sends. That lets you build guardrail segments like “no marketing email in the last 7 days” without receipts or password resets counting against the rule. Policy scopes use the snapshot captured with each send; ambiguous older automation and Send API events without one remain available through unscoped engagement filters. The scoped values work in the dashboard segment builder, the API, the CLI, and the MCP tools. View documentation

Preview a landing page before publishing it

Draft landing pages now include a signed previewUrl on create, get, list, and update, and a POST /api/v1/landing-pages/{landingPageId}/render endpoint plus the render_landing_page MCP tool. The preview shows the visitor-facing page without putting it on your public domain, is not indexed, and does not collect form signups until you publish. View documentation

Sequence simulation

You can now dry-run a sequence before turning it on. GET /api/v1/sequences/{id}/simulate, sequenzy sequences simulate, and the simulate_sequence MCP tool report who currently matches and activation blockers - without sending mail or enrolling anyone. Activating does not auto-enroll existing matches. Pass a stored subscriber to walk their branch path, for example to confirm a paid user would not get an upgrade email. View documentation

MCP specification 2026-07-28

The hosted Sequenzy MCP server at https://api.sequenzy.com/v1/mcp now speaks the 2026-07-28 MCP specification while remaining compatible with 2025-era clients. Modern clients discover the server per request, send Mcp-Method/Mcp-Name headers, and receive cacheable list results; existing Claude, Codex, and other 2025 clients keep working through the same URL. OAuth now advertises Client ID Metadata Documents, includes the RFC 9207 iss parameter on authorization redirects, and accepts application_type during dynamic client registration. View documentation

Image shapes

Mask any image with a fixed URL into an arch, circle, leaf, petal, squircle, scallop, flower, or blob straight from the image block’s Style settings - external images are saved into your media library automatically when you apply a shape. The shape is baked into the delivered image on our servers, so it renders identically in every email client - Gmail and Outlook included - and matches the editor preview exactly. View documentation

Group email content into responsive layouts

The email editor can now group sibling blocks into a stack, equal-width row, grid, or image overlay without rebuilding the content. Groups keep their layout in preview and sent email HTML, can be nested up to three levels, and can be moved, duplicated, ungrouped, or reorganized with keyboard and drag controls. The same recursive group structure is documented for the API, CLI, and MCP so existing grouped emails remain readable across every surface.

Sequence AI assistant can no longer discard your emails

The sequence AI assistant now refuses to delete existing email steps unless you explicitly ask for them to be removed or rebuilt - asking it to reorder, connect, or space out your emails keeps every email exactly as you wrote it and only adds delays or updates around them. Before applying AI changes, the approval box also lists each high-impact change (like deletions) by name and states clearly that approving saves immediately to your live sequence.

Default lists apply to new contacts, not every write

Your Default Lists setting now decides where a contact created by an untargeted write lands without changing memberships during ordinary profile or attribute upserts. Passing lists explicitly still works as before, while capture submissions and explicit reactivation events can reapply target or default lists so returning contacts actually resubscribe. View documentationGET /v1/account, sequenzy account, and the MCP get_account tool now report whether the current API key can actually deliver mail (canSendLive) and which delivery permissions it lacks (missingLiveDeliveryScopes), so an agent holding drafting-only permissions like transactional:write finds out before writing an email it cannot send. View documentation

Abuse protection for public signup forms

Public form and popup endpoints now enforce daily per-IP limits alongside the existing per-minute burst limit, so slow scripted signups that stayed under a one-minute window are caught. A privacy-preserving cross-workspace recipient limit also caps how often a single address can be signed up through forms, popups, and landing pages, which contains subscription bombing even when an attacker rotates IPs and signup surfaces. Every non-restricted workspace member is alerted by email when a workspace’s public signup volume spikes far above its usual baseline. View documentation

Trial lifecycle events for Polar

Polar trials are now tracked as trials instead of purchases: a trial signup fires saas.trial_started, converting fires saas.trial_ended, cancelling during the trial fires saas.trial_cancelled, and Sequenzy schedules saas.trial_will_end about 3 days before the trial ends (Polar has no native reminder webhook - the reminder is cancelled automatically if the trial converts or is cancelled first). The 0trialstartordernolongerrecordsapurchase,duplicatepurchase/canceleventsfromPolarswebhookfanoutarecollapsed,andabandonedPolarcheckoutsnowfiresaas.checkoutexpired(existingPolarconnections:addcheckout.expiredandsubscription.uncanceledtoyourwebhooksselectedeventsinthePolardashboard).Stripegotthesametrialaccuracyfixesfor0 trial-start order no longer records a purchase, duplicate purchase/cancel events from Polar's webhook fan-out are collapsed, and abandoned Polar checkouts now fire `saas.checkout_expired` (existing Polar connections: add `checkout.expired` and `subscription.uncanceled` to your webhook's selected events in the Polar dashboard). Stripe got the same trial-accuracy fixes for 0 invoices and checkouts. Payment webhooks now also apply the same status tags (trial, customer, cancelled, churned, billing-interval tags) that a manual Sync Revenue run applies, so webhook-created contacts are tagged consistently. View documentation

Branded double opt-in confirmation

The hosted confirmation page that double opt-in links open now shows your company name, logo, and brand color instead of the Sequenzy site chrome, and you can set where subscribers land after confirming - a thank-you or welcome page on your own site - from Settings, the API, the CLI, or MCP. Without a redirect, confirmed subscribers stay on your branded confirmation page; nothing sends them to sequenzy.com anymore. View documentation

Python, PHP, and Go SDKs

Official Sequenzy SDKs are now available in Python (pip install sequenzy), PHP (composer require sequenzy/sequenzy), and Go (go get github.com/sequenzy/sequenzy-go), alongside the existing TypeScript SDK. All four are generated from the same OpenAPI spec, so every endpoint and field in the API reference is available in each language. The TypeScript SDK’s v2 release keeps the same import and constructor (new Sequenzy({ apiKey })) and the same resource layout (client.subscribers.create), but some method names and signatures changed from v1 - review your call sites when upgrading.

Send from several brands under one business

If you trade under more than one name, each toll-free number can now be registered with its own brand: its own DBA name, website, verification contact, consent flow, and use case. Your legal business details - registered name, EIN, address - are stored once and reused by every number, so nothing is retyped. Carriers register each number as its own messaging program and check that the brand people opted in to matches, which is why a second brand needs its own number rather than a second copy of the first one’s application. View documentation

Verification is per number, with its own page

Each number now shows its own status and its own carrier feedback in Settings -> SMS, and Verify this number opens a page for just that number. A number waiting on the carrier no longer blocks adding another, so a new brand can start its registration while an earlier one is still in review. The Business name field is for your registered legal entity only - a DBA there is the most common cause of “Business Name Must Match Official Records”. View documentation
The quick filters above the subscriber table now adapt to your workspace: revenue, trial, order, and cart filters only appear when the matching tags and attributes actually exist in your data, so you see shortcuts you can use instead of empty ones.Asking the email AI assistant to add content - “add more information from our changelog” - now keeps the email you wrote and extends the matching section instead of rewriting the email or bolting on a duplicate section, and requests are understood in any language and phrasing (including timeframes like “last 1 month”) when pulling changelog updates.

Send as a non-default brand from MCP, CLI, and the Send API

POST /api/v1/transactional/send, the send_email MCP tool, and sequenzy send now accept optional senderProfileId/fromEmail/fromName and replyProfileId/replyTo/replyToName so a one-off send can use an existing verified brand identity instead of the company default. Multi-brand accounts no longer need a throwaway draft campaign to test a non-default From. Pass fromEmail (and fromName if that address has several identities) without looking up profile IDs. These fields look up existing send-ready identities and do not create new profiles. API docs · MCP docs · CLI docs

Audience size is on stats and lists

GET /api/v1/metrics (and the get_stats MCP tool) now returns live subscriberCount and activeSubscriberCount next to send metrics, so you do not have to page search_subscribers to learn how big the audience is. GET /api/v1/lists (and list_lists) includes the same two fields on every list. API docs · MCP docs

Use your own icons in feature blocks

Feature blocks are no longer limited to emojis: upload an image or paste an icon URL - an exported Lucide icon, a Flaticon PNG, anything on a public URL - and it replaces the emoji for that item. One Icon size setting keeps every icon in the block the same size, and the icons render identically in the editor, the preview, and the sent email. View documentation

Sequences can start from several lists or tags

A contact_added trigger can now name more than one list, and a tag_added trigger more than one tag - so “enter this sequence when someone joins Newsletter or Trial” no longer needs two duplicate sequences or a throwaway segment. Pick several values in the trigger step, or send listIds / tagNames through the API, CLI, and MCP. A contact still enters once no matter how many values they match. The automatic stop condition follows the value that enrolled each contact: leaving Newsletter stops a Newsletter enrollment, while leaving Trial stops a Trial enrollment. View documentation

Every enrollment says what caused it

The sequence subscriber list now shows Entered via on each contact - the list, tag, segment, or event that enrolled them, or “Enrolled manually” for a dashboard or API enrollment. The same attribution is available as enteredVia on the enrollments API, in sequenzy sequences enrollments (including CSV exports), and through MCP. It answers the first question a multi-list or multi-tag trigger raises: which one actually brought this person in. View documentation

API, CLI, and MCP renders say which conditions they could not check

A conditional block that splits on a tag, segment, or other stored subscriber state is evaluated per recipient at send time, so a render preview had nothing to evaluate it against and quietly returned the else branch - identical to what a contact who genuinely does not match would see. The render endpoints, sequenzy campaigns render and its siblings, and the render_email MCP tool now return every condition they could not evaluate as unevaluatedConditions, and can evaluate tag conditions for an ad-hoc contact that lists its own tags (--tag on the CLI). The block reference gained conditionFields: which operators each condition field accepts, how its value is shaped, and what a preview needs to check it. Dashboard previews are unchanged. CLI docs · MCP docs

Test emails tell you what actually happened

Sending a test used to report success the moment the job was queued, before anything had been attempted - so a test that was suppressed, hit a blocked sending domain, or failed at the provider still showed a green toast and never arrived. The confirmation now says the send is scheduled, and any test send that fails, bounces, or is suppressed appears in Sent emails marked as a test, with the reason. Successful tests stay out of the list. View documentation

See exactly who your emails skip, and keep bounce blocks in your workspace

Subscribers has a new Suppressed tab listing every associated recipient you cannot reach, with the reason, when it happened, and whether the block is platform-wide or specific to your workspace. Only SMTP evidence that conclusively identifies an invalid destination creates a global block. Ambiguous hard bounces remain protected inside the sending workspace, spam complaints are protected, and workspace soft-bounce escalations have one-click removal. Repeated delivery failures now suppress an address for your workspace only instead of everywhere, so one recipient’s spam filter can no longer block that person for other senders. The same list is available through the API, sequenzy suppressions list, and MCP. View documentation

Remote MCP connections stay up in third-party clients

Clients that open the optional event-stream request on https://api.sequenzy.com/v1/mcp were handed a stream that closed immediately, which many of them read as the server dropping the connection and answered by reconnecting every second. The endpoint now declines that request the way the protocol expects, so those clients connect once and stay connected. The remote MCP endpoint also gets its own request budget of 300 per minute instead of sharing your REST API limit, so a busy agent session no longer throttles itself into a dropped connection. View documentationselect_company now persists for the life of a local MCP session, and get_account recovers cleanly when the selected company is later deleted or becomes inaccessible. View documentation

Test sends now tell you when a recipient is suppressed

Test emails to a suppressed address used to report success while nothing arrived, which read as “email is broken”. The test-email dialog now warns up front which selected recipients are suppressed and why, and the send result names them instead of reporting plain success.

A/B test steps are visible and editable from the sequence surface

A sequence step converted to an A/B test kept its copy on the test’s variants, but nothing in the sequence surface said so: the step disappeared from sequence.emails, emailCount read 0 for a sequence made entirely of A/B steps, and rejected edits gave no hint where the content had gone. GET /api/v1/sequences/{id} now lists A/B steps with their variants and a pointer at the endpoints that edit them, sequenzy sequences get prints each variant, and update attempts on the node redirect to update_ab_test_variant instead of failing as an unknown field. View documentationThe block field reference now expands nested objects, so get_email_block_schema, sequenzy blocks <type>, and GET /api/v1/email-blocks describe a repeat block’s productSource in full - including the strategy field that picks the best-sellers, newest, or recently-viewed ranking - instead of reporting it as an opaque object. Rejected writes and dropped-field warnings name the same nested fields. View documentationSequence email positions shown by sequenzy sequences get, MCP, the sequence AI chat, and the editor’s step badges are now derived from the sequence’s actual structure instead of stored ordinals that can go stale after edits. GET /api/v1/sequences/{id} exposes this value as structuralStepNumber while retaining the legacy stepNumber field for compatibility. Emails in parallel branches intentionally share a structural depth; after unequal branches merge, numbering continues from the longer incoming path.

Built for data pipelines: bulk events, idempotent imports, completion webhooks

Syncing from a warehouse or DAG into Sequenzy no longer needs one request per contact. The new POST /api/v1/subscribers/events/imports endpoint records bounded batches of up to 25 events for many subscribers in one call, with a required source-owned event ID so retries preserve one receipt and repair downstream work idempotently. Subscriber imports accept an idempotencyKey, and subscriber_import.completed publishes final reconciled counts from a durable retry intent. All three are available from the API, CLI (sequenzy subscribers events-import, --idempotency-key), and MCP. View documentation

Subscriber imports account for every skipped row

A finished import now explains every row it excluded: the skipped-reason counts add up to the skipped total. Previously an import processed in several chunks could report more skipped rows than reasons, because chunks completing at the same time overwrote each other’s reason counts. Rows dropped for having no usable email or phone are now reported as missing_identity instead of disappearing from the totals, and sequenzy subscribers import-status prints the reasons. View documentation

Cc, Bcc, and multiple recipients from the CLI and MCP

The transactional send API has always accepted a shared recipient list, but sequenzy send and the send_email MCP tool took a single address, so agents had to fall back to raw HTTP or send one copy per person - which never produces a real Cc. Both now accept up to 50 to addresses plus cc and bcc lists on a transactional send, so one email reaches everyone with the recipient list they expect. Marketing sends are unchanged: one recipient, no Cc or Bcc. View documentation

Landing pages on root domains

Landing pages can now live on a root domain like example.com, not just a subdomain. Connect the root domain from the dashboard, API, CLI, or MCP and point an A record at 76.76.21.21 - the dashboard shows the exact record to add. If www has a CNAME record pointing to pages.sequenzydns.com, it redirects to the root automatically. Subdomain setups are unchanged. View documentationThe API, CLI, and MCP can now restyle a single sequence email. Email steps accept an emailTheme patch that overrides just that email’s colors, typography, and layout - so making one draft’s background white no longer means changing the account-wide theme. The patch merges into the email’s current theme, null clears the override, and GET /api/v1/sequences/{id} reports the stored override per step. View documentation

Contact-added sequences can wait for a list, or not

The Contact added trigger now says which of the two it means. Any contact - the default, and what every existing sequence already did - starts the sequence for every contact added, including the list-less contacts that integrations such as PostHog, Stripe, or Supabase create when no list targeting is set. Any list is new and waits until the contact actually joins a list. Enroll Existing Subscribers follows the same rule, so backfilling an Any contact sequence no longer skips contacts who are in no list. Available from the dashboard, API, CLI (--list-scope), and MCP (listScope). View documentationDuplicating an email step in a sequence no longer reports “AI is writing this email” with a button that does nothing. The copied step now shows the subject of the email it is copying, says its copy is created when you save the sequence, and offers to swap in an existing template if you change your mind.A duplicated email step also takes the next step number instead of reusing its source’s, so GET /api/v1/sequences/{id}, sequenzy sequences get, MCP, and the AI chat no longer show two different emails as the same step.A segment built as a list of specific email addresses now opens quickly on large audiences. Naming dozens of addresses in one segment could previously take long enough to time out and return an error when the segment was listed in the dashboard or through GET /api/v1/subscribers.Agents on the hosted MCP server no longer insist you reauthorize an hour after you connect. The credential never expired, but we advertised an expiry for it, so clients such as Claude reported the connection as unauthorized and asked you to authorize again while every tool call kept succeeding.
The toll-free SMS verification form now remembers what you last submitted to the carrier, so if the carrier asks for changes you can fix a single field and resubmit from any browser, device, or teammate’s account instead of retyping the whole form.

Video blocks on landing pages

Landing pages now have a Video element: paste a YouTube link and Sequenzy builds the right embed, so embed code no longer has to go in a Custom HTML block. Pick a 16:9, 4:3, 1:1, or 9:16 shape and a width. YouTube videos load from youtube-nocookie.com, so no tracking cookies are set until someone presses play. Other providers and direct video files are not supported. Custom HTML blocks also now render in the editor’s Preview mode instead of showing a placeholder. View documentation

Content above the hero on landing pages

Landing pages can now carry a full-width band above the hero for an announcement bar, banner image, or logo strip. Drag a section onto the top half of the hero to place it there, or move any section up past the hero - and the hero’s move-down control now lifts the section beneath it above the hero. The hero keeps its own layout, including the form card beside it. In page content these blocks use the new top slot, so the API, CLI, and MCP can set them too. View documentation

Anchor CTAs and scroll animation for landing pages

Landing page buttons and pricing CTAs now accept in-page anchors, so a long page can repeat its call to action and scroll back to its single signup form with #form instead of sending visitors somewhere else. Anchor CTAs stay in the same tab and scroll smoothly, and #section-<sectionId>, #block-<blockId>, and #top work the same way. The Style panel also gained a scroll animation setting - fade, slide up, or zoom in at three speeds - that plays as each section enters the viewport on the published page and is skipped for visitors who prefer reduced motion. Both settings work from the dashboard, API, CLI, and MCP. View documentation

Read and set your workspace default lists from the API

The Default Lists setting - which lists a contact joins when a form, API call, event, import, or integration creates it without naming one - is now readable and writable outside the dashboard, as defaultSubscriberListIds on get_company / update_company, sequenzy companies update --default-list, and the company API. This matters most before connecting a store: an integration without its own list targeting, such as WooCommerce, sends its whole customer backfill to whatever this points at. In the dashboard the setting lives under Contacts -> Lists -> Default Lists. View documentation

Merge tags with a fallback no longer hide typos

A merge tag whose name nothing provides used to disappear from preview diagnostics as soon as it had a fallback, so {{ subscriber.frstName | default: "there" }} greeted an entire list as “there” - stored first names included - while the rendered email looked perfectly personalized. Previews now report those under unresolvedMergeTags with reason unknown, and stay quiet when the fallback is simply covering a contact who has no first name. {{subscriber.firstName}}, .lastName, .email, and .name also resolve now, so both the prefixed and unprefixed forms work. View documentationThe per-workspace sending cap is now 300,000 accepted emails in a rolling 24-hour window, up from 200,000, so high-volume campaigns no longer have to spill into the next day.Connecting a landing page domain now rejects root domains like example.com up front - with a pointer to use a subdomain such as www or pages - instead of accepting them and then asking for a CNAME record that DNS cannot create at a domain root.

Group form and popup blocks into responsive layouts

Forms and popups can now group related blocks into stacks, equal-width rows, grids, or image overlays directly on the builder canvas. An overlay uses one direct image as its background and supports tint color, intensity, and content position. Its gap setting spaces the foreground blocks without affecting the background image; nested images only enable Overlay for their own subgroup. Groups can be nested up to three levels, dragged as a unit, and moved into or out of other groups. The same recursive group structure is supported by the API, CLI, and MCP, and hosted forms, native snippets, and popup embeds continue to discover nested fields for validation and submission. View documentation

Change an integration’s target lists from the API

Choosing which lists an integration’s new contacts join is no longer dashboard-only - it is now on the API, CLI, and MCP too. Useful when an auth or ecommerce integration is adding every new signup to lists it should not: point it at one list, at none, or back at your workspace defaults. New targeting applies from the integration’s next write onward and never removes anyone from a list, and pausing bulk sync remains a separate setting that does not stop the provider’s live webhook. Use PATCH /api/v1/integrations/{id}, sequenzy integrations set-lists, or the set_integration_list_targeting MCP tool; integrations get now reports the current targeting with list names. View documentationHTML blocks in the email editor are now easier to work with: selected blocks open in a visual editor (the same one used for imported HTML emails) so you can edit text, links, and formatting in place, with a Code toggle for raw HTML and a Paste HTML button that replaces the block’s content straight from your clipboard.

See whether a stop condition has already matched

Enrollment listings now show the sequence’s configured stop condition, including its match filters or comparison, and can report whether it matches a contact right now. A stop condition is re-checked when an enrollment next runs a step rather than when its event arrives, so a contact whose stop event has landed can keep reporting “waiting” until the delay expires. Pass --stop-condition-match in the CLI, stopConditionMatch=true on the API, or stopConditionMatch: true to the list_sequence_enrollments MCP tool to inspect the current state. The result is a non-atomic snapshot, so a step already past its stop check may still finish. View documentationCampaigns you imported after they were already sent elsewhere are now labelled “Imported” in the campaign list and on the campaign page, where the empty analytics explain that the delivery data stayed with the platform that sent them. Resending to non-openers is unavailable for those campaigns, since Sequenzy has no opens to resend against.The migration prompt on your home screen now remembers which platform you are coming from, instead of re-deriving it from your DNS records on every visit. The first detection is kept, and picking a provider in the migration flow overrides it for good - so a slow DNS lookup no longer hides the prompt, and platforms that leave no DNS trace can still be named once and remembered.

Segment integration

You can now stream your Segment events into Sequenzy. Add a Webhooks (Actions) destination pointing at your Sequenzy webhook URL and track calls arrive as product.* events that trigger automations and power segments, while identify calls keep subscriber names and attributes in sync. It is one-way, works with your existing instrumentation, and connects from the dashboard, API, CLI (sequenzy integrations connect segment), or MCP. If you use Segment Unify, connecting can also backfill your existing contacts’ recent event history (the last 14 days Segment’s Profile API serves) so event-based segments start with real activity - historical events never start automations or send emails. View documentation

On-site tracking for any website

Browse abandonment and cart recovery no longer need a Shopify store. Create a publishable key in Settings → Integrations → Website tracking, paste the script tag into your site, and product views, cart activity, collection views, and searches start flowing into the same automations. Visitors who browse before signing in are not lost: their activity is held in the browser and replayed against their contact after your backend mints a short-lived identity token and you call sequenzy.identify(email, identityToken). Keys are restricted to your own origins and manageable from the API, CLI, and MCP. Developers can also install the browser client from npm as @sequenzy/web-sdk. View documentationA sequence step’s Reply-To address now follows the reply profile it points at. Steps used to store a copy of the address made when the step was saved, so editing a reply profile’s name or address left already-built sequences replying to the old mailbox even though the editor showed the new one. Editing a reply profile now updates every sequence step using it, and a profile still in use by a step can no longer be deleted. View documentation

Send campaigns in each recipient’s timezone

Scheduled campaigns can now be delivered at the same wall-clock time in every recipient’s own timezone - schedule for 8pm and each contact receives it when their local clock reaches 8pm. Store a contact’s IANA timezone via the new timezone field (API, CSV import, CLI, MCP, or the contact page), then pick “Recipient’s local time” on the schedule step; the wizard shows how many recipients have a known timezone, and everyone else receives the campaign at your scheduled time. Also available as sendInRecipientTimezone on the schedule API, --in-recipient-timezone in the CLI, and the schedule_campaign MCP tool. View documentationBot filtering now catches security appliances that detonate short emails. An email with only three links - a button, a social icon, and a privacy link - previously slipped past the scanner check, because catching a sweep required four links being fetched at once; three distinct links fetched in the same instant now count as machine activity, so Microsoft Defender Safe Links prefetch no longer inflates click rates on small emails. Strict bot filtering additionally recognizes Exchange Online Protection as a scanner source, while leaving the ranges people actually read mail from alone. View documentation

A field reference for email blocks

You can now look up exactly what each email block type accepts instead of inferring it from examples: required and optional fields, the allowed values of every enum field, and the shape of nested item arrays. Available as GET /api/v1/email-blocks, sequenzy blocks, and the get_email_block_schema MCP tool. Rejected block writes now name the block type they were validated against and its fields, so a mistake is usually fixable without a second lookup - most usefully for numbered lists, which are their own list or steps block rather than a variant of a text block. View documentation

One design direction for all your emails

All AI-generated emails for a company now follow one brand-derived visual identity - kicker style, title alignment, button shape, dividers, spacing, and how emails open - across campaigns, sequences, and transactionals, so everything looks like it comes from one brand while each email still varies in content and composition. The first email generation writes this direction into the Design Direction field in Company Settings as plain text: edit it to change how your emails look, or clear it and the next generation fills it in again. View documentation

Event retries no longer double-count

eventId is now an idempotency key for live events, not just history imports. Send the same ID twice for a contact and event name and the repeat records nothing, enrolls nobody, and comes back with duplicate: true - so a retrying workflow tool or redelivered queue job stops inflating “purchased 3 times” conditions and revenue totals. It is best-effort for events sent within about a second of each other, so keep your own ledger if you need a strict guarantee. View documentation

Published event payload schemas

You can now look up what a built-in event payload actually contains instead of guessing. Each documented event returns a real example payload per provider, every property path with its type, and the merge tag that resolves it - plus notes where the sample alone is ambiguous, such as which money fields are cents and which are whole currency units. Available as GET /api/v1/events/schemas, sequenzy events schema, and the get_event_schema MCP tool. Custom events keep working exactly as before: they carry whatever properties you send and are never validated against this list. View documentationPopup and form block writes over the API, CLI, and MCP now reject a property the block kind does not have, naming it (blocks[3].content), instead of dropping it and saving an empty block. Every content kind’s properties are documented too - a custom-html block carries its markup in html, not content. View documentationA popup whose image panel has no usable image now falls back to the accent rail and keeps the content full width, instead of showing a blank column beside it. Setting the image visual style without an https imageUrl is rejected up front, so the state cannot be saved by mistake. View documentationBranch paths now reject an unrecognized step type by name - including a branch nested inside a path - instead of treating it as an email and asking for a subject. The error points at the supported step types, and nesting a branch on a path is documented as a second insert_sequence_step call that reconnects to the shared steps you already built. View documentationCreating a company with a company-scoped API key (seq_live_... or a legacy ek_... key) now fails with a clear error instead of quietly creating a workspace that key can never open. Use a personal account key (seq_user_...) from Account -> API Keys, or create the workspace in the dashboard. View documentation

Random splits for sequence A/B tests

A Branch step can now route by percentage instead of by condition, so you can run a true concurrent A/B test inside a sequence - for example sending half of your abandoned-cart contacts a discount offer and half a free-shipping offer at the same time, rather than running duplicate sequences one after another and comparing across different weeks. Add a Percentage Split from the dashboard sequence builder, or set splitMode to random with randomPercentages through the API, CLI, or MCP. Variants that differ only in the email content are still better served by an A/B test on that step. View documentation

Ask AI steps can read a contact’s recent activity

An Ask AI step can now include the contact’s latest events, newest first, with the count you pick (1-50), so a prompt can react to what someone actually did rather than only to the event that started the sequence. The Contact data section is now a short list of questions - trigger event data, recent activity, custom attributes, tags - with each source’s settings appearing only once you turn it on, and new steps start with trigger event data included. Adding a step now walks through Prompt, Contact data, and Output, with Cmd+Enter to move on and arrow keys to jump between sections. Generated copy also stays a line or two that your email drops in, without em dashes or marketing filler. Previews fall back to example event data when a contact has no stored enrollment, so a step can be checked before the sequence has ever run, and you can tune the prompt by saying what should be different about a generated line. Ask AI generations are free of charge for the rest of this week while the step is in beta - pricing after that is still being decided, and you will be told before anything is billed. View documentation
Brand logos in generated emails are now legible for dark-themed websites: logo files that only paint through the website’s own styling are skipped in favor of a usable variant, and white dark-mode-only logos automatically get a dark backdrop behind them.AI-generated emails now mirror your brand’s own emoji usage - brands whose copy never uses emojis get emoji-free emails by default - and numbered section headings and icon lists render with tighter, better-proportioned alignment. Section label chips and pricing badges also follow your brand’s corner style now: brands with a rectangular design language get square labels (or plain uppercase text labels across a sequence) instead of rounded pills. Every company also gets a consistent visual identity across all of its generated emails: section labels render in one brand-derived style everywhere (a rounded chip for rounded brands, a plain uppercase label for square ones), every email opens with the same small kicker treatment, quotes are never framed in stray dividers, and the logo size stays identical from email to email and sequence to sequence.

Property filters for sequence stop conditions

Event stop conditions can now match on event properties: a matchConfig with propertyFilters (for example quota_used greater_than 1) stops the sequence only when a later event satisfies every filter, using the same operators as event trigger filters. Event stops also now only count events received after enrollment, so a sequence that triggers on an event can stop on the same event name without cancelling itself at the trigger. Available in the dashboard’s stop-condition editor and via the API, CLI, and MCP, with validation errors that spell out the expected matchConfig shape. View documentationSearching contacts by a full email address is now an exact lookup rather than a substring scan, so it returns instantly on large audiences instead of timing out across the dashboard, the API, the CLI, and MCP. Partial terms such as gmail.com or a first name still search across email, external ID, name, and tags as before. View documentationMigrations that fail because your provider rejected the API key now say so straight away, and tell you to reconnect with a key that has the required read permissions, instead of stalling through several retries and then asking you to try again.The image on an image card can now be hyperlinked: set an Image link in the card settings and clicking the photo opens that URL, independently of the card’s button. View documentationA freshly inserted image card now shows an Add image prompt in its image slot, and image card, hero, pricing, and product buttons no longer render as blank pills or stay hidden while you are still filling in their link.The Ask AI step editor is now organized into Prompt, Contact data, Output, and Advanced sections, and opens pre-filled: a fast model drafts a starting prompt, output fields, and context selection from what the sequence already knows, ready to review, regenerate, or replace with a blank slate.The Sent emails list now shows the destination under every recipient whose latest status is “Clicked”, and a send’s detail page lists every link that recipient opened, so a click no longer reads as “probably the main button” when it was a footer or social icon. These views follow the recipient’s own click: if a security scanner sweeps the links afterwards, the row still describes the human click that set the status. Open counts also now say plainly that bots are already excluded while privacy features such as Apple Mail Privacy Protection still prefetch tracking pixels, which is why a fresh send’s opens arrive within minutes and read high. View documentation

Retry transactional sends without duplicate email

Transactional sends now accept an Idempotency-Key across the REST API, CLI, and MCP. Repeating the same logical request returns its original delivery ID for 14 days, including after a temporary queue failure, while using the key for different content is rejected. Authenticated /api/v1 requests now also enforce the documented shared limit of 100 requests per minute per API key with a 20-per-second burst limit and standard retry headers. View documentation

Emails that look like your website

Connecting a website now derives much more of your brand into the email theme: the real call-to-action color and fill style of your site’s buttons (solid or outline), their corner radius, padding, and label weight, your heading scale, weight, and letter spacing, heading/body font pairings mapped to email-safe stacks, your site’s spacing density, text and card colors, and your wordmark logo sized correctly for email headers. Landing page previews and onboarding both use the richer theme, and every value stays clamped to email-friendly ranges with readable contrast. The new theme fields are also editable through the API, CLI, and MCP. View documentation

Steer how AI designs your emails

Your workspace now has a design prompt alongside Tone & Voice: free-form art direction that tells Sequenzy AI how your designed emails should be composed - layout and density, which sections belong in an email, imagery, and how prominent the call to action is. Tone & Voice shapes the writing; the design prompt shapes the design, and it overrides Sequenzy’s default composition rules when the two disagree. Edit it in Company Settings under AI Context, or set it through the API, CLI, and MCP. View documentation

Ask AI steps in sequences

Sequences can now generate personalized text per contact with a new Ask AI step. Write a prompt with merge tags, choose exactly which contact data the model may see (tags, trigger event data, specific attributes), and define the named fields it must return - later emails insert them with {{ai.KEY.field}} merge tags, with your fallback text used if generation ever fails. Preview the output against real contacts before activating, and let “Draft for me” write a starting prompt from what the sequence already knows. Available in the builder and with full parity over the API, CLI, and MCP. View documentationLinks typed as a bare domain (example.com) are now saved with https://, so they no longer arrive as dead links in the delivered email. Bold, italic, colour and links applied to a testimonial quote or author line are kept instead of being dropped when you click away, and fields that can only hold plain text no longer offer the formatting toolbar. Emptied fields keep a visible placeholder so they can still be clicked, size and spacing inputs can be cleared and retyped without snapping to zero, and closing the tab with unsaved changes in a campaign email now warns you first.

Inline CID images survive an SMTP relay

Emails relayed through Sequenzy SMTP now keep their embedded images embedded. A multipart/related message with <img src="cid:..."> used to have its images flattened into data: URIs, which Gmail renders as a broken image; the parts are now forwarded and re-sent as related attachments with the original Content-ID. Ordinary file attachments are forwarded too (up to 10 files, 7MB total), and the transactional API gained an attachment contentId field for the same effect. View documentation

Simpler campaign audience targeting over the API, CLI, and MCP

Campaign create, update, and schedule now accept a plain listIds shorthand (--lists in the CLI) to send straight to one or more lists without building a targetLists object, and a malformed targetLists now returns an error that names the offending field and the accepted shapes instead of a bare “Invalid input”. Campaigns created or updated through the API also clone your default footer component now, matching emails built in the editor. View documentationThe Insert Image dialog is now fully keyboard driven: left and right switch source tabs, down drops into the results, arrow keys move between thumbnails, Enter selects the highlighted image, and Cmd+Enter (Ctrl+Enter on Windows) runs the current tab’s action.Fixed nested repeat blocks placed inside a column or a conditional branch: their item values (like {{priceband.total}}) rendered blank instead of the row’s data.Fixed the Preview tab dropping nested repeat rows when the preview data also held a leftover value named after the repeat’s item alias - the editor showed the rows, but the preview rendered none.Long merge tags like {{shows.performance_starts}} now wrap inside multi-column layouts in the editor instead of stretching their column and pushing the neighboring columns out of view.Campaigns, transactional emails, sequence emails, and standalone templates can now be shared with anyone through a public link - like the classic “view in browser” page, but anonymized instead of tied to one recipient. The hosted copy renders with a sample contact, an inert unsubscribe link, and no open or click tracking, so you can safely forward it to stakeholders, clients, or people outside your audience. Click Share in the campaign, transactional, or email editor to open the public page - the link is created automatically on first use, and drafts work too, so you can share before anything is sent. Links can also be managed from the API (/api/v1/campaigns/{id}/share-link and /api/v1/templates/{id}/share-link), with sequenzy campaigns share/unshare and sequenzy templates share/unshare, or through the share_campaign and share_template MCP tools. View documentation

Clearer automation flowcharts

The sequence flowchart now keeps chained conditionals readable: a nested branch’s paths merge back onto their own lane instead of jumping to the center of the canvas, so steps no longer render on top of each other and connectors no longer cut across unrelated branches. Branch paths also sit closer together - each gap is now sized from the two paths beside it rather than the widest path anywhere in the split - so wide flows need far less horizontal scrolling. You can also zoom out much further or use fit view to see a large flow on one screen.

Rotate an API key without giving away key management

A key that lacks the api_keys:manage permission still cannot create or revoke keys - that stays closed so a leaked key can never mint a full-access successor. But it can now hand the work to you: request_api_key_handoff in MCP and sequenzy api-keys handoff return a dashboard link that opens the create-key form with the requested name and permissions already filled in. Add --replaces current and the dashboard offers to revoke the predecessor once the replacement exists, so a rotation finishes in one visit with you confirming it. View documentationThe sequence canvas also picked up a set of quality-of-life improvements: a dot-grid background, duplicate and delete buttons right on each step card when you hover it, and a keyboard shortcut overview - press ? to see every shortcut.
The default email footer and the rest of your saved email components are no longer dashboard-only. You can now read and replace them over the API (/api/v1/email-components), with sequenzy components footer get/set, or through MCP, so an agent or script can change the footer every new email is built with instead of hand-writing a footer band into each email. A default footer always keeps its unsubscribe link enabled, and existing emails keep the footer they were built with. View documentation

Retry a PostHog history import from anywhere

A PostHog event-history import no longer fails over a handful of unusable subscriber addresses: rows whose address is invalid, disposable, or already bounced are skipped and counted, while real infrastructure failures still stop the import loudly. If BullMQ exhausts retries or declares an import terminally stalled, the integration is marked failed and can be retried from the dashboard, the API, the CLI, or MCP through the same sync action. Retries restart from the beginning and already imported events are deduplicated, so nothing is written twice. View documentation

Multiple SMS numbers with per-number sender identity

Workspaces can now hold up to 5 toll-free numbers: add one from Settings -> SMS and pick which number each SMS campaign sends from, right in the campaign’s Message step. Every number can carry its own label (like “Marketing” or “Support”) and its own brand prefix override, so one workspace can text under several sender identities. Labels and prefixes can also be managed through the REST API, CLI, and MCP; sequences and one-off sends keep using your default number. View documentation

Run the Supabase user backfill without the dashboard

The Supabase user sync is now available from the API, CLI, and MCP through the existing sync action, so an agent preparing a campaign can import users who existed before the database trigger was installed instead of asking you to open Settings. It reads the project, schema, and table already saved on the integration, so choosing the source stays a one-time dashboard step. View documentation

Target every active Stripe price

Stripe product sync now imports every active price of a product as a variant (the variant ID is the Stripe price ID) and no longer reports an archived default price as the product’s price, so purchase-triggered emails can target the exact offer you currently sell. View documentationA sent campaign now shows the date and time it went out next to its Sent badge, with its recorded pacing - no pacing recorded, spread over a set number of hours, or at each recipient’s optimal send time - available from the adjacent info button. Imported campaigns may not carry pacing metadata from their source provider. Hovering the Sent badge in the campaign list gives you the same record without opening it, and the pacing fields come back from the campaigns API, CLI, and MCP. View documentationCreating or updating a segment now returns a warning when an attribute filter references a custom attribute no subscriber has a synced value for - including a casing suggestion - instead of silently matching zero subscribers (or everyone, for empty checks).The html. merge tag prefix also renders subscriber custom attributes as raw HTML - {{html.subscriber.body_html}} in a campaign body sends each recipient their own stored markup unescaped, now covered in the campaign personalization docs.Variable pickers now suggest every custom attribute in use across your account instead of only the ones carried by your most recent contacts, so typing an attribute set on older subscribers finds it in the email editor, SMS composer, and segment builder.Change Plan now applies your new tier immediately from the upgrade dialog on every Stripe plan, including older grandfathered ones that previously redirected to the billing portal. Your locked-in rates carry over to the tier you move to.

Release contacts past a sequence step in bounded waves

You can now move a capped batch of enrolled contacts from one sequence step onto another over the API, CLI, and MCP, instead of cancelling and re-enrolling them. The enrollment keeps its entry event properties, stop-condition snapshots, and start date, and each release can carry a daily cap, a sort order, tags, and a note that later shows up on the enrollment. It defaults to a dry run and works even while new enrollment is paused. View documentation

Realign waiting contacts after a sending window change

Changing a live sequence’s sending window used to leave everyone already waiting on an email-bound delay step on their old time, and narrowing it pushed them to the next allowed day - a full extra week on a weekly sequence. You can now realign them instead, from the API, sequenzy sequences realign-enrollments, or the realign_sequence_enrollments MCP tool. Waits move to the window’s opening on the day they were already scheduled for, never onto a different day and never earlier than now, and nobody is cancelled or re-enrolled. Sequence windows never advance SMS, webhook, or other non-email actions. Applied realignments run as background jobs with pollable status, so large live sequences do not hold an API request open while contacts are re-queued. View documentation

Opt-out dates and auditable unsubscribes

Subscribers now carry unsubscribedAt, the date the contact opted out, across the API, CLI, and MCP tools, and you can narrow a list to a window of opt-outs with unsubscribedAfter and unsubscribedBefore. Unsubscribes are also recorded in the contact’s activity timeline and unsubscribe stats even when unsubscribe link tracking is turned off - previously that setting silently suppressed the record as well as the link rewriting. View documentation

Manage popups from the API, CLI, and MCP

On-site signup popups are no longer dashboard-only. You can now list, read, create, update, duplicate, and delete them over the public API, with matching sequenzy popups CLI commands and MCP tools, and get back the one-line script tag that deploys them. Trigger, page targeting, schedule, and display frequency are all editable, and setting a popup to draft stops it showing without losing its view and conversion counts. Every popup now also reports its full funnel - shown, started, submitted - with conversion rates. Existing widgets-scoped API keys work unchanged. View documentationSMS messages also got shorter: tracked links now use the dedicated sqzy.io domain and the first-message compliance footer is 10 characters tighter, so more of your copy fits in a single billed segment.Feedback submissions from the API, CLI, and MCP server can now carry structured reproduction detail - user intent, the ordered tool calls that led to the problem, expected vs. actual outcome, and affected resource IDs - so agents can report exactly what went wrong. View documentationThe SMS add-on volume slider now runs all the way to 500,000 credits a month, with new bundles at 100k, 150k, 200k, 250k, 300k, 400k, and 500k credits that bring the rate down to $0.0106/credit. View documentation

Clearer sending-domain readiness in the API and CLI

Sending-domain responses now answer “are my DNS records right?” and “can this domain send?” as two separate questions. When DNS is verified but the domain is still activating, verify says so instead of claiming it is ready, and readiness.reason reports a customer-actionable reason (activation_pending, activation_failed, sending_unavailable, or a dns_* reason). The CLI gained sequenzy websites verify to run a fresh DNS check from the terminal. The internal fields readiness.homeTransport, homeTransportReady, and homeSesRegion were removed from the public payload. View documentation

Wait until a weekday window in sequences

Sequences can now hold a contact until the next occurrence of a chosen weekday inside a local-time window - for example, next Sunday between 09:00 and 12:00 in America/Los_Angeles. Contacts that reach the step while the window is open continue immediately; everyone else waits for the next occurrence, so a Friday enrollment waits until Sunday morning rather than sending right away.This reschedules the flow itself, which makes it different from a sequence sending window: a sending window holds each email until the next allowed local time, while a weekday wait moves where the contact sits in the graph, including contacts handed off from another sequence mid-week. Weekly digests, Sunday-only rituals, and day-specific programs can pin their send day by placing one delay step immediately before the email.Configure it on any Delay step in the dashboard by setting Wait to “Until a weekday” and choosing the days, local-time window, and timezone. The same step is available via the API (waitUntilWeekday on a step, or a delay with mode: "until_weekday"), the CLI (sequenzy sequences create/update step JSON), and the MCP sequence tools (create_sequence, insert_sequence_step, update_sequence_node). If the platform ever misses a wake-up past the window’s end, the step rolls to the next configured day instead of resuming late. View documentation

Poll responses per respondent

Poll and NPS answers can now be read one respondent at a time, not just as a distribution. GET /api/v1/metrics/campaigns/{id}/poll-responses, the list_poll_responses MCP tool, and sequenzy poll-responses --campaign <id> each return one row per respondent per poll block, newest answer first, with their email, the answer and its stored value, the subscriber attribute it was saved to, and the response time. Scope to one poll with blockId, or pass a sequence email step’s automation node ID to read that step’s answers. Only each subscriber’s latest answer per block is returned, so the counts match the campaign stats summary. This is the only place a response time is available - the poll attribute holds the latest answer to any email and carries no timestamp. View documentationSubscriber search now filters by custom attribute. search_subscribers accepts attribute (written as "attributeName:value") with an optional attributeOperator for contains, numeric comparisons, or is_not_empty, and the CLI gained the matching sequenzy subscribers list --attribute / --attribute-operator flags. Since poll answers are stored as attributes, finding everyone who answered a given poll no longer means paging the whole audience.MCP tools now reject arguments they do not support instead of ignoring them. An invented filters or sortBy used to come back as a full, unfiltered result set that looked like a real answer; the call now fails with the list of supported arguments and, where it applies, the supported way to express the same request. list_templates also documents the label filter it already accepted.The search_subscribers MCP tool and sequenzy subscribers list can now filter by a custom attribute (attribute with attributeValue and an optional attributeOperator, including is_not_empty for “has this attribute set at all”), so enumerating everyone with a given attribute no longer needs a throwaway segment. Both surfaces also accept cursor, offset, and page alongside limit and report hasMore, nextCursor, and nextOffset, so a large audience can be read in chunks instead of only ever returning the first page.Listing templates is no longer capped at 50. GET /api/v1/templates, list_templates, and sequenzy templates list now accept limit (up to 100) and offset and return a pagination block with the full total. Every campaign and transactional body counts toward that list, so accounts with a long sending history could previously not reach anything older than their 50 most recent emails. list_templates also gained the label filter its API has always supported.
Safer agent access now includes lists:write and tags:write, so an agent key can create the list and tags a new opt-in path needs instead of reusing an unrelated existing list. Defining a list or tag is setup, not contact mutation: changing who is in a list still requires subscribers:write, and deleting one still requires lists:delete or tags:delete. Existing keys are unchanged - edit their permissions to pick this up.Removing subscribers from a list now requires subscribers:write alongside lists:write, matching what adding them has always required. Keys with lists:write alone can still create, rename, and read lists.

Multi-select polls

Poll blocks can now let recipients pick several answers instead of one. Turn on Multiple answers in the poll settings (or set "allowMultiple": true on the block via API, CLI, or MCP) and every answer link opens a hosted selection page: the option the recipient clicked arrives pre-checked next to their previously saved choices, they check as many options as they like, and a single save records the whole set - no confirmation page per selection. Ideal for interest surveys and “select all that apply” questions that previously needed an external form. Multi-select is available for text answers; image-answer polls remain single-choice so the hosted page never drops essential visual context.The subscriber attribute stores the list of selected values, so segments filter it with contains (for example interests contains yoga), and saving again later replaces the list. The poll.answered event and outbound webhook carry the selection as values/answers arrays for sync rules, sequences, and your own systems. Poll Results, the campaign metrics API, sequenzy stats --campaign, and the get_campaign_stats MCP tool report multi-select blocks per option with respondent counts as the denominator, and answer rows still drill into the exact respondents. Because the selection page records nothing until the save, link-scanning bots cannot fabricate or destroy selections. View documentationCampaigns, transactional templates, and saved email bodies now report emailPreset - the per-email Style > Format - in their get and list responses, the same way sequence steps already did. Comparing branded vs minimal chrome across your emails no longer needs a render call per email. Available on the API, in sequenzy campaigns/transactional/templates output, and through the matching MCP tools. Campaign create and update now accept that field too, and sequenzy campaigns create|update expose it as --email-preset for native block emails.

Diagnose and restore paused sending from the API, CLI, and MCP

When a workspace is paused for a high bounce or complaint rate, every send stops
  • campaigns, sequence steps, transactional email, and test sends. Until now that state lived only in the dashboard banner, so anyone working through the API, CLI, or an agent saw sends fail with nothing to explain why and no way to recover.
sequenzy sending status, GET /api/v1/sending-status, and the get_sending_status MCP tool now return the whole picture: the pause reason, your measured permanent-bounce, temporary-bounce, and complaint rates against the thresholds that apply at your volume, the state of the automated sender-health review, whether you can restore sending yourself, and ordered remediation steps. Reading it needs only the account:read scope, so a read-only monitoring key can diagnose a blocked account.The response also states plainly what the rate is measured over. Sender-health enforcement uses all-time totals counted from a reset watermark, not a rolling window, so a paused rate never expires and waiting does not restore sending - metricsWindow.expiresAt is always null.Once the cause is fixed, sequenzy sending resume --confirm-list-sanitized, POST /api/v1/sending-status/resume, and the resume_sending MCP tool restore sending. These are new clients of the same control behind the dashboard’s Resume sending button, with the same gates: only a permanent-bounce pause qualifies, the automated review must have cleared it, and suppressions are never removed. Resuming resets the bounce watermark so your rate is recalculated from later sends, and requeues paused campaigns and due sequence steps. When resume is not available, the response names the blocking gate instead of failing opaquely.Test sends now fail fast too. send_test_email and send_sequence_test_email previously accepted the request and dropped the job later, reporting success for an email that never sent; they now return the pause reason and the steps to clear it. View documentation

Preview your email the way Gmail, Outlook, and Apple Mail will render it

The Preview tab can now simulate Gmail, Outlook (web and classic Windows), and Apple Mail, including common font, CSS, and Gmail clipping differences. The pre-flight checker also flags client-compatibility risks such as unsupported backgrounds and layouts, animated GIFs, forms, and video. These previews are estimates; classic Outlook’s Word-based rendering remains approximate.

Compare one sequence step across every sequence

“How many step-4 emails have we sent?” used to mean one stats call per sequence and a spreadsheet, or paging the raw event stream and counting by hand. There is now a single per-email view: one row for every campaign and every individual sequence email step, each with its own delivery funnel, attributed conversions, and revenue.Sequence rows carry the sequence, the step number, and the step’s node ID, so you can total a step across sequences, rank every email in the account by open rate, or find the steps driving revenue. Filter by email type, a list of sequences, or a step position; sort and page as needed. Totals always cover every matching email rather than the page you happen to be looking at, and counts read from retained event storage - two years of events, not the 14-day delivery history - so old sends stay answerable. Available as sequenzy stats --emails, GET /api/v1/metrics/emails, and the list_email_metrics MCP tool. View documentationGetting from a step’s numbers to its actual recipients is also direct now: the sequence event stream and the sent-emails list both accept an automationNodeId, so you can list who received one specific step instead of filtering a whole sequence’s history yourself. sequenzy stats --sequence <id> also prints each step’s sent, delivered, opened, and clicked counts, which the per-step data already carried but the terminal output did not show.Sending fromEmail with fromName over the API, CLI, or MCP now gives you that display name even when the address already sends under another one: one mailbox can carry several sender identities, so a single campaign or sequence can go out as “Brennon at Example” while everything else keeps the shared name. View documentation
Numbered lists and bullets now keep their line breaks in the plain-text version of an email, instead of running together into a single line for the clients and filters that read that version.The deliverability checker now points out a Reply-To on a free mailbox (Gmail, Outlook, iCloud and similar) that does not match your sending domain. Sequenzy still sends the message - the pattern is legal and common - but some filters score it as suspicious, so the checker flags it in case placement suffers.A hidden form field left without a value now stores whatever your page submits for it, so machine-filled data such as UTM parameters lands on the contact; a hidden field with a value still pins that value and ignores the page. Form field blocks are also documented properly now - field types, mapsTo targets, choice options (only value is required), and hidden field behavior - and form validation errors name the property that failed, such as blocks[3].options[0].value. View documentation
Poll blocks can now match a hand-designed brand email: set the answer buttons’ corner radius (0 for square corners on any style), pick the poll’s font and the size, weight, tracking, and casing of the answer labels and question, recolor the question line on its own, and use your accent color with the Brutal style. Available in the editor’s new Typography section and in block JSON via the API, CLI, and MCP. View documentation

Fix an API key’s permissions instead of replacing it

API key permissions can now be changed in place. Because a key’s secret is only shown once, picking a slightly-too-narrow permission set used to mean minting a replacement key and re-wiring everything that held the old one. Now you edit the key you already have: Edit permissions in Settings → API Keys, sequenzy api-keys update, PATCH /api/v1/api-keys/{apiKeyId}, or MCP’s update_api_key. The key value does not change, so clients keep working, and widened permissions apply to the very next request rather than after a cache delay. Removed permissions may remain usable for up to five minutes while API caches expire. Presets and scope lists replace the whole selection rather than merging into it, so read the current scopes first.Tagging existing contacts also got its own permission. Safer agent access now includes subscribers:tag, which adds and removes tags on contacts that already exist without granting the ability to create, update, or unsubscribe them - so an agent key can reconcile a tag backfill without being widened to full contact write access. Bulk tagging previously demanded subscribers:write and tags:write even when every tag already existed; now tags:write is only required when a request would introduce a tag name the workspace has never seen. Existing keys that carry subscribers:write keep tagging with no change. View documentation

Browse every SMS you have sent

A new Sent SMS page in the dashboard lists every text message your workspace has sent, newest first, with the recipient, delivery status, message preview, segment count, credits charged, and the campaign it came from. Search by phone number or contact email, filter by status (delivered, failed, skipped, suppressed, and the rest), and page through the full history. The header totals show how many messages match your filters and how many credits those messages charged, so you can answer “what did this send cost?” without adding up rows.Opening a message shows the full body with its line breaks, any attached MMS media, a created/sent/delivered timeline, the failure or skip reason in plain language, the credits charged versus quoted, segments, encoding, destination country, sending number, and links to the campaign, sequence, and contact behind it. The page appears in the sidebar under Activity once the SMS add-on is enabled.Subscriber timelines now show SMS activity too: sends, deliveries, failures (with the error code), link clicks, and opt-outs appear alongside email activity on each contact’s page, with an SMS filter in the activity dropdown. The same events are included in the subscriber activity returned by the API, CLI, and MCP.Two SMS billing changes also land today: included monthly credits now reset at the start of each billing period instead of rolling over, and bundle upgrades are no longer prorated - upgrading restarts your billing cycle, charges the full new bundle price, and resets your balance to the new bundle amount so every period starts clean. View SMS documentation

Turn on Shopify storefront tracking from the API, CLI, and MCP

The Shopify storefront pixel is what produces product views, collection views, storefront search, cart activity, and browse abandonment. Until now it could only be installed from the dashboard, which made it possible to build a browse-abandonment or cart-recovery sequence that was correct in every respect and could still never fire - the events it waited on were never being sent, and nothing anywhere reported a problem.Pixel state is now readable and fixable programmatically:
  • GET /api/v1/integrations/{id}/pixel reports whether the pixel is installed, which endpoint it posts to, whether its endpoint and signed configuration are current, and the event names that depend on it. A Shopify read error is reported as unknown rather than as a confirmed tracking outage.
  • POST /api/v1/integrations/{id}/pixel installs it, or repoints an existing pixel at your account. It is idempotent, and returns changed: false when the pixel is already live.
  • The CLI adds sequenzy integrations pixel <id> and sequenzy integrations enable-pixel <id>.
  • MCP adds get_integration_pixel and activate_integration_pixel, and get_integration now carries a pixel section for Shopify with a prioritized recommendation that escalates to an error when a sequence is already waiting on an event the pixel is not delivering.
Every read queries Shopify directly, because a merchant can remove the pixel from the Shopify admin without Sequenzy hearing about it. Activation takes effect on the next storefront visit and does not backfill the period the pixel was off, so turn it on before building the sequence that depends on it. If the store granted an older permission set, activation fails with a message naming the reconnect step instead of quietly doing nothing.View documentationDouble opt-in can now be read and switched on outside the dashboard: it is returned in the consent block of GET /api/v1/tracking-settings, set with doubleOptInEnabled on PATCH /api/v1/tracking-settings, and available as sequenzy tracking update --double-opt-in on and the update_tracking_settings MCP tool.

Filter analytics by mailbox provider

Metrics can now be segmented by recipient mailbox provider - Gmail, Microsoft (Outlook/Hotmail), Yahoo, iCloud, Orange, and every other provider your audience uses. A new provider dropdown on the Metrics page and on each sent campaign’s stats view scopes sends, deliveries, opens, clicks, bounces, unsubscribes, top countries, best emails, and clicked links to that provider’s recipients, so you can see at a glance whether a deliverability or engagement problem is provider-specific. The dropdown only lists providers you have actually sent to, ordered by volume.The same filter is available programmatically: pass mailboxProvider to GET /api/v1/metrics or GET /api/v1/metrics/campaigns/{campaignId}, or use sequenzy stats --mailbox-provider gmail in the CLI. Replies, conversions, and attributed revenue cannot be segmented per provider and are reported as 0 (or hidden in the dashboard) while a provider filter is active.Repeating-content blocks now have a Custom space between blocks item style setting, so you can tighten (down to 0px) or widen the vertical gap between the image, title, and button inside each repeated item - in the editor, in sent emails, and via layout.itemStyles.contentSpacing in the API.Campaign responses across the API, CLI, and MCP now include emailId, the campaign’s linked email body, so you can look up a dashboard-designed email in the templates API and reuse it as templateId when creating campaigns programmatically.You can now set a contact’s native phone number when updating them - phone on the update subscriber API, --phone on sequenzy subscribers update, and phone on the update_subscriber MCP tool - instead of only at creation time. All three surfaces also take a new phoneCountry hint (for example IT) so national-format numbers from another CRM no longer have to be converted to E.164 first.Pulling a large audience is dramatically faster and no longer times out. GET /api/v1/subscribers now accepts limit up to 1000 and returns pagination.nextCursor on every response - follow it instead of incrementing page to walk a full list in a fraction of the requests, with results that stay stable while contacts are being added or removed. The CLI and the search_subscribers MCP tool use it automatically, so full-account backups of tens of thousands of contacts now complete reliably.

Rename a sending identity without changing your defaults

Sender and reply-to profiles can now be renamed directly: PATCH /api/v1/sender-profiles/{id}, sequenzy sender-profiles update, and the update_sender_profile MCP tool all change a profile’s display name in place.Renaming was previously only possible through the company update, which renames the profile it simultaneously promotes to your account default. That made it awkward to standardize a display name across the several identities one mailbox can carry - consolidating something like “Viraj from SnapCount” down to “SnapCount” moved your default From selection around on every call. The new endpoint touches the name and nothing else: the address, its sending domain, and your default From/Reply-To selection stay exactly as they were, and campaigns and sequences pinned to that profile pick up the new name on their next send.Because a company cannot have two sender identities with the same name on one address, a rename that would collide is rejected and tells you which profile already holds the name. Renaming requires the companies:manage scope. View documentation

Connect integrations from the API, CLI, and agents

Integrations that only need an API key or webhook secret - Polar, Paddle, Dodo Payments, Whop, Creem, Chargebee, Clerk, PostHog, and Affonso - can now be connected without opening the dashboard. POST /api/v1/integrations/connect validates the credentials against the provider where possible, stores them encrypted, queues the same initial backfills as the dashboard flow (revenue sync for payment providers, affiliate backfill for Affonso, optional event history import for PostHog), and returns the webhook URL to configure at the provider. The CLI exposes it as sequenzy integrations connect <provider>, with environment-variable secret input to keep credentials out of shell history, and agents get the matching connect_integration MCP tool. The integration catalog now lists connectFields per provider, so you can discover exactly what each one needs before connecting. OAuth and app-install providers (Stripe, Shopify, Supabase, GitHub, WooCommerce) still connect in the dashboard, since those flows need a browser. View documentationHistorical event imports (PostHog history and backdated API events) now also move each contact’s signup date back to their earliest imported event - never later - so migrated contacts stop showing as “added today” in date-added segments and growth reports.

Update saved forms from the API and agents

Saved signup forms can now be edited programmatically: PATCH /api/v1/forms/{formId} and the matching update_form MCP tool rename a form, retarget its lists and tags, edit its headline, description, button, and success copy, restyle its theme to your brand colors, or replace its content blocks entirely - so an agent can repair or restyle a published form without recreating it. The Sequenzy CLI exposes the same update workflow through forms list and forms update, including JSON/file inputs for theme and block changes. create_form also accepts the same theme overrides, so new forms come out in your brand instead of the default accent. In the builder, blocks added from the Add panel now land above the submit button instead of at the bottom of the form. View documentation

Deliver to Apple Private Relay subscribers

If your app uses Sign in with Apple, some of your contacts have an @privaterelay.appleid.com, @private.icloud.com, or legacy relay @icloud.com address. Apple only forwards mail from domains you have registered in your Apple Developer account, and it checks the Return-Path domain rather than only the From address your recipients see - so mail to these subscribers bounces until every source is registered, and the Return-Path domain was not visible anywhere in Sequenzy.When your audience includes relay subscribers, your sending domain settings show an Apple Private Relay section with the exact domains to copy into Apple’s Email Sources, and these rejections are recorded as temporary bounces labelled clearly, so the subscribers stay on your list instead of being suppressed for what is a one-time setup step. Once you register, the same addresses start delivering.View documentation

See what every integration actually does

Integrations are no longer a list of connection statuses. The API, CLI, and MCP can now explain what each provider does and what it is doing for your account right now.integrations catalog describes every provider whether or not you have connected it: what it syncs, every event it can emit and the real-world moment that produces it, the subscriber attributes it writes, and its caveats. Coverage genuinely differs between providers, and the catalog says so plainly - only Shopify has storefront browse tracking, only Stripe and Chargebee cover the full trial lifecycle, and Polar emits no payment-failure event, so a dunning sequence built on Polar would never have fired. Use it to compare providers before picking one, or to check that an event your sequence needs actually exists.integrations get takes that and crosses it with your own configuration. For each event it shows the tags your sync rules apply, the conditions gating that rule, and which of your sequences trigger on it - plus the events nothing is listening to at all. That last list is usually the fastest way to find automation you have not built yet: a store quietly emitting ecommerce.price_drop with no sequence attached, or a payment-failure event with a dunning sequence that exists but stopped accepting enrollments. Recent webhook activity and prioritized recommendations sit alongside it, so “connected but nothing is happening” has an answer instead of a shrug.It also reports which events have actually reached you, not just which ones the provider could send. That difference catches a failure nothing else does: an integration that takes payments normally but has never once delivered saas.trial_started is almost always a webhook missing a topic, and until now it looked completely healthy because everything it does send arrives fine.Two safe actions come with it. For payment providers that advertise sync controls, disable-sync pauses future imports while keeping the connection and its credentials, so turning it back on does not need another OAuth round trip. An import already in progress must finish first. sync re-runs a payment provider’s customer and revenue import. Connecting and disconnecting stay in the dashboard, because both handle stored credentials and provider-specific cleanup.Everything is available on all three surfaces: GET /v1/integrations/{id}, sequenzy integrations get, and the get_integration MCP tool. sequenzy integrations guide also brings the integration code examples that were previously MCP-only to the terminal.View documentation
Workspaces that use SMS now get a dedicated SMS page in the sidebar, with their credit balance alongside it, and you can upgrade your monthly SMS bundle any time from that page - the new credits are added to your balance immediately.

Get notified when someone subscribes

Sequenzy can now email you when a contact joins your workspace, and when a campaign finishes sending. Both are off until you opt in, so turn on the ones you want in Settings -> Notifications.New-subscriber notifications arrive either per signup or as one daily summary listing who joined. Campaign notifications arrive when a send completes, with the final sent and failed counts. Each teammate chooses their own settings, in Settings -> Notifications, and changing yours never changes anyone else’s.Two things keep the volume sane. Imports never trigger notifications, so migrating 40,000 contacts produces no email at all. And if a workspace passes 50 real signups in a day while set to per-signup email, the rest of that day is rolled into a single summary rather than filling your inbox.The settings are available through the API, the CLI (sequenzy notifications get / set), and MCP. For Slack, Zapier, or your own service, there is also a new subscriber.created outbound webhook event carrying the contact’s origin source and the lists they joined. View documentation

Agents can finish workspace setup on a safe key

The Safer agent access preset can now edit your workspace profile: the company name, branding, the physical mailing address your email footers need, and the product context and tone of voice that AI writing uses. Until now those lived behind the same permission as creating a workspace, so an agent asked to “set up my account and build my emails” would fail on the first step and need a full-access key for the rest of the job.Creating workspaces and changing your account-wide From and Reply-To defaults still require the broader Manage workspaces permission, so an agent with a safe key cannot silently repoint where your mail comes from. A request that mixes the two is rejected as a whole rather than half-applied.Keys keep the exact permissions they were issued with, so nothing you already use changes behaviour: create a new key (or reauthorize your MCP connection) with Safer agent access to pick up the new profile permission. View documentation

PostHog event history import

Connecting PostHog now imports your existing event history, not just events from the moment you connect. Enable Import event history in the connect modal with a personal API key (Query Read + Project Read scopes) - Sequenzy detects your region and project automatically and backfills up to 5 years of identified events with their original timestamps. An event-based segment like “performed product.signed_up in the last 30 days” is populated immediately instead of starting from zero.Historical events count for segments, campaign audiences, and the contact timeline, but they never start automations - no sequences, waiting steps, sync rules, or goal conversions. Events without an identified email are skipped, the import is safe to re-run, and events that already arrived through the webhook are never duplicated. A failed import shows a Retry button on the PostHog card without ever affecting the real-time webhook connection.The integration also gained real event settings: a picker that lists the event names your project actually emits (loaded through the same API key) so you choose your allowlist instead of typing names from memory, and new connections now skip noisy PostHog-internal events like $pageview unless you opt in. View documentation

Import history with its real dates

When you move to Sequenzy from another platform, your contacts and their events no longer all arrive stamped with today’s date. Subscribers can be created with the date they originally signed up, and events can be recorded with the date they actually happened, so audiences like “signed up in the last 30 days” or “purchased in the last 90 days” are correct the moment your migration finishes instead of months later.Pass createdAt when creating a subscriber (single, bulk import, CLI --created-at, or the add_subscriber and create_subscriber_import MCP tools). An existing contact’s signup date only ever moves earlier, never later, so re-importing can add history but never erase it. Any list they join is dated the same way.Pass occurredAt on an event (single, bulk, CLI --occurred-at, or the trigger_subscriber_event MCP tools) to record when it happened. An event more than an hour old is treated as history: it is stored with its real timestamp and counts for segments and the subscriber timeline, but it deliberately runs no sequences, sync rules, waiting steps, goal conversions or webhooks. That is what makes it safe to import years of history in one afternoon - otherwise every imported purchase would enroll the contact and send a real email. Events within the last hour behave exactly as before, so ordinary queue lag is unaffected.Set your flows up first. You do not have to import before building your sequences. Switch on everything you want, then bring your data over. Imported contacts and events are kept out of the calculations flows use to decide who to enroll, so a year of imported purchases will not satisfy a “bought 5 times in the last 30 days” flow, and imported contacts will not look like new arrivals to a “joined in the last 30 days” flow. They still count for the segments, filters and reports themselves - only the enrollment decision ignores them, and only for the imported records. Real activity after the import triggers your flows exactly as normal.Imports are safe to re-run. Give an event your own eventId and re-sending it writes nothing new; without one, identical events are deduplicated by content. Custom event history is now kept for five years, and a timestamp older than that is rejected with a clear error rather than accepted and silently discarded. View documentation

Segment suggestions

The Segments page now has a Suggested segments section that sticks around after you create your first segment, instead of only appearing on the empty page. It shows ready-made segments you haven’t created yet, matched to your business type, and each one opens prefilled in the segment editor.Click Suggest with AI and Sequenzy goes further: it looks at what is actually in your workspace - your tags, custom attributes, which events have been firing recently, your lists, and the segments you already have - and proposes segments built from that data. Every AI suggestion is checked against your real subscribers before it is shown, so each card comes with a live subscriber count and empty suggestions are filtered out. Nothing is created until you click a suggestion, review the filters, and save it. Suggestions are kept on the page across visits until you use them or generate new ones.A segment on its own doesn’t send anything, so every AI suggestion also comes with a recommended next step, like “Send a VIP-only discount” or “Start a win-back flow”. Save the segment and one click takes you there: a new campaign opens with its audience already set to the segment, or the sequence template picker opens with the new sequence set to trigger when contacts enter the segment - where the existing “enroll subscribers who already match” flow picks up the people who are in it today.

Phone-Only Contacts

You can now add contacts that have a phone number and no email address - for SMS-first audiences moving over from another platform. Map a phone column in the CSV importer and leave email unmapped, or create them through the API (POST /api/v1/subscribers with only phone), the CLI (sequenzy subscribers add --phone '+14155550123'), or the add_subscriber and create_subscriber_import MCP tools. Phone-only contacts are automatically excluded from email campaigns and sequence email steps, receive SMS normally once they have consent, and deduplicate by phone number on re-import. View documentation

Earlier SMS Sending With Recipient-Local Quiet Hours

SMS quiet hours are now evaluated in each US and Canadian recipient’s own timezone, inferred from their phone number’s area code, instead of a single nationwide window that opened at 11:00am Eastern. US numbers open at 8:00am local time - the TCPA floor - and close by 8:00pm local, with Sunday sends held until noon for Texas numbers. Canadian numbers follow the CRTC’s rules instead: 9:00am to 8:00pm local on weekdays and 10:00am to 6:00pm local on weekends. Numbers whose timezone can’t be inferred keep the previous conservative window, and out-of-window messages are still deferred, never dropped. View documentationThe sequence Subscribers dialog’s Enroll tab now has a Search flow next to the trigger-criteria one: look up any active subscriber by email and enroll them from the first step, even when they don’t match the sequence trigger. The dashboard now matches what the enroll API endpoint and the enroll_subscribers_in_sequence MCP tool could already do.Sequence email steps created or updated through the API, CLI, or MCP now validate their blocks against the block schema, the same way campaigns and transactional emails already did. A block that is not a valid block is rejected with the step, block index, and field named, instead of being stored and then failing every enrollment at that step; blocks written with buttonText and buttonUrl are accepted as aliases for a button’s text and url. Advisory warnings come back on success for fields that will not render as their name suggests. View documentationTransactional email templates can now be deleted outside the dashboard, with sequenzy transactional delete <slug>, DELETE /api/v1/transactional/{idOrSlug}, or the delete_transactional_email MCP tool. Deleting frees the slug for reuse, keeps past deliveries and their stats, and leaves the email content behind as a reusable template. The CLI also gains sequenzy transactional update <slug> for editing a template’s name, subject, preview text, enabled state, or body, which the API and MCP could already do. View documentationFailed sequence enrollments now report failedReason, so you can see why an enrollment stopped rather than only that it did. Filter with sequenzy sequences enrollments <id> --status failed, or the status argument on the API and list_sequence_enrollments. The same reason repeated on one step points at that step’s content or configuration rather than at the contacts. View documentationSending an outbound webhook test through the API, CLI, or MCP now behaves like the dashboard test button: the test always reaches the endpoint you named, even when that endpoint subscribes to no event types, and the response returns the queued delivery so you can check the result right away instead of waiting for it to appear in the delivery list. View documentation

SMS Campaigns

Workspaces with the SMS add-on can now send one-off text blasts, not just automation texts. The Campaigns screen gains an Email / SMS switch at the top; an SMS campaign walks through the same steps as an email campaign - message, recipients, schedule, review - with a phone-style preview throughout. You pick recipients with the same lists, segments, and filters as email campaigns, and Sequenzy narrows the audience to contacts who can actually receive SMS (consent, phone number, no suppression) and shows the estimated credit cost before you confirm. Delivery respects per-recipient quiet hours, can be scheduled or stopped mid-send, and campaign stats cover sent, delivered, clicked, failed, skipped, and credits used. View documentationThe Stripe integration can now import customers that have no subscription or payment at all - useful when your app creates a Stripe customer for every signup, including free-tier users. Enable Sync customers with no subscription or payment in the Stripe setup screen; it stays off by default so abandoned-checkout emails are never imported unless you opt in. These customers arrive through the Stripe sync rather than webhooks, so ones created later show up the next time you run Sync Revenue. View documentationA WooCommerce store sync no longer stops at the first customer whose email address cannot receive mail. Stores with real order history usually carry a few addresses on domains that have since been shut down, and a single one of those previously failed the whole import - leaving the integration in failed with nothing brought in. Those buyers are now imported as suppressed profiles instead, so their orders still count toward revenue history and segments while nothing is ever sent to them. The affected addresses are listed under lastSyncSkipped on the integration, visible in Settings -> Integrations, in sequenzy integrations, and through the list_integrations API and MCP tool. View documentationWriting email blocks for campaigns, templates, transactional emails, and A/B test variants through the API, CLI, or MCP now returns a warnings array when a field you sent is not part of that block’s schema, or does not control what its name suggests - for example styles.backgroundColor on a button, which colors the band behind the button while the fill comes from buttonColor. Each warning names the field and lists what that block does accept, so a successful write that quietly ignored a field no longer looks like it took effect. View documentationEmail renders across the API, CLI, and MCP now return unresolvedMergeTags, so a misspelled merge tag is no longer indistinguishable from one that is simply blank for the previewed contact - both render as an empty string. Rendering a sequence step that follows a create-discount step also fills {{discount.code}} and the other discount tags from that step’s real configuration, using a placeholder code, so discount emails can be checked before anyone is enrolled. View documentationTransactional templates can now insert a variable’s HTML unescaped by prefixing a merge tag with html., as in {{html.prerenderedHtml}} - useful for passing a prerendered order summary through the API while the template keeps your branded header and footer. Regular {{variables}} stay HTML-escaped, and injected HTML is sanitized. View documentation.

Call Webhook Steps In Sequences

Sequences can now call your own API mid-flow and use the response in later emails. Add a Call Webhook step from the builder, point it at any HTTPS endpoint (GET, POST, PUT, PATCH, or DELETE), and give it a result key like lookup. When a subscriber reaches the step, Sequenzy makes the request with merge tags like {{email}} and {{event.order_id}} resolved in the URL, headers, and JSON body, and saves the response for that enrollment.Later emails can then insert fresh values with merge tags such as {{webhooks.lookup.data.status}}, so details are looked up at send time instead of being frozen when the sequence started. Useful whenever the source data keeps changing between enrollment and send: wait for the right moment, fetch the current values, then send the email that references them. The email editor’s variable picker offers these tags for every webhook step that runs before the email, suggests the actual field names seen in recent responses (with sample values) once the step has run, and prefills the preview with the most recent response so you can see real data while writing.You control what happens when the endpoint fails or times out: continue, exit the sequence, or stop the enrollment with an error. Either way you can see what came back: the step’s completed list shows the HTTP status and the endpoint called for each subscriber, flagging failures the sequence walked past, and clicking a subscriber opens the full response including the saved JSON body. Test runs show the same status line for the request they really sent. Webhook steps can also be created and edited via the API, CLI, and MCP (insert_sequence_step with stepType: "webhook" now supports body, resultKey, and onError). View documentationSequence branches can now stay empty: saving and activating no longer require every branch path to have a step. Empty paths pass subscribers straight to the next step, and the editor now shows where each empty path leads, highlights empty paths on live sequences, and lets you remove an empty path in one click when it leads to a step of its own. View documentationAccount-wide tracking settings - open, click, and unsubscribe tracking, the default attribution window, and automatic UTM tagging - can now be changed outside the dashboard through the API (PATCH /api/v1/tracking-settings), the CLI (sequenzy tracking update), and MCP (update_tracking_settings). View documentationCustomers imported from Shopify and the WooCommerce plugin who already placed orders are now tagged as e-commerce customers, so they appear in the “E-commerce customers”, “Repeat buyers”, and other purchase-based segments right after the initial sync - re-run the sync from the plugin to backfill existing imports. WooCommerce initial syncs are also processed in the background now, making them reliable on large stores.TikTok and Pinterest can now be saved under Product Info and added to the social block, so their icons render in your emails alongside the platforms already supported.If you publish a DMARC policy on your sending subdomain, domain verification now reports its status and value against that exact record rather than the one at your root domain, and automatic Cloudflare setup no longer reports success while a problem there is still blocking verification.

Landing Page Favicons, Search Visibility, And Duplication

Three additions to Page settings and the landing-page list.Your favicon, not ours. Published pages showed the Sequenzy icon in the browser tab. Now you can upload a favicon per page, and any page without one falls back to your workspace logo automatically, so a customer never sees Sequenzy branding in the tab.Hide from search engines. Pages on a verified custom domain are indexable by default, which is wrong for private client previews and internal launches. Turn on Hide from search engines and the page serves a noindex, nofollow tag so Google and other crawlers keep it out of search results. The link keeps working for anyone you share it with. Landing-page domains also no longer serve Sequenzy’s own robots.txt sitemap.Duplicate a page. Copy a page you already like instead of rebuilding it. The copy is created as a draft with its own slug and stats, and the original keeps its published URL and metrics.All three are available through the API, CLI (sequenzy landing-pages duplicate), and MCP (duplicate_landing_page, plus seo.faviconUrl and seo.hideFromSearchEngines on page content). View documentation
Transactional API sends can now disable click or open tracking per send with the new trackingSettings field, useful when tracking redirects break universal links. View documentation

See who is inside a sequence right now

Sequence stats have always told you how many contacts sit at each step. You can now pull the contacts themselves. A new enrollments listing returns one row per enrolled contact with their email, name, the node they are currently on, when they entered the sequence, and when a waiting contact resumes.Filter by step, status, subscriber, or email address, sort by soonest resume to see who moves next, and page through the full list to export it. This answers the question counts cannot: not “how many are waiting at Wave 1”, but “who”.It is available on all three surfaces:
  • API: GET /api/v1/sequences/{sequenceId}/enrollments
  • CLI: sequenzy sequences enrollments <id>, including --all --csv for a one-command export
  • MCP: list_sequence_enrollments
View documentation
Email segment filters now accept is and is_not for exact, case-insensitive address matching in the dashboard, API, CLI, and MCP, so allowlists and exclusions of specific contacts no longer have to be built out of contains filters. View documentation
fromName and replyToName can now be sent on their own through the API, CLI, and MCP to rename the display name of your default From and Reply-To profiles without changing the address, and the new senderProfileId / replyProfileId fields pick exactly which profile becomes the default when one address carries several display names. View documentation
Sequence reads across the API, CLI, and MCP now return an unambiguous effectiveStatus (draft, live, enrollment_paused, paused, archived) so a sequence that is active with paused enrollment can no longer be mistaken for one that takes new subscribers. View documentationWindowed delivery stats are now a funnel over the sends made inside the period, so open, click, and reply rates can no longer exceed 100% when older emails are opened or replied to during the window. View documentationAI sequence generation now writes up to 10 emails at once instead of 3, and the progress dialog lists every step in sequence order with its live status.

Segment by Purchased Collection

Segment on a whole collection instead of one product at a time. Pick “Purchased Collection” in the segment builder and the segment matches everyone whose orders contain any product in it, with the same bought / didn’t buy / order count options as the product filter. Works retroactively against your existing orders, and is available through the API, CLI (--commerce-collection), and MCP.Membership is evaluated against your catalog as it stands now, so moving a product out of a collection also removes its past buyers from the segment.View documentation

Bulk Sequence Cancellation, Bulk Tagging, and Test Events

Three lifecycle-migration gaps are now covered across the API, CLI, and MCP. Sequence enrollments can be cancelled with cancelAll: true or a batch of subscriberIds, which is the only way to stop contacts already mid-flight - pausing a sequence just blocks new entrants. Bulk targets default to a dry run, and sequenzy sequences cancel-enrollments <id> --all --apply pages through large cancellations for you. Tags can be added or removed across up to 500 existing subscribers per request; unknown identifiers come back in notFound instead of creating contacts, and tag automations stay off unless you ask for them. And the new trigger_subscriber_event MCP tools emit the same events an integration would, so triggers, branch conditions, and stop conditions can be tested without waiting for real traffic.View API documentation · View CLI documentation · View MCP documentation

Read-Only Account Audit Tools

You can now check how an account is wired up without holding any write access. Four read-only surfaces across the API, CLI, and MCP cover connected integrations and their sync health, sender and reply-to profiles with the sending domain behind each address, tracking and attribution settings, and a campaign’s resolved audience. The audience check is the one to reach for before a send: it turns stored list and segment IDs into names, flags references to deleted records, recomputes the recipient count at read time, and warns when targeting is unset, because scheduling such a campaign sends to every active subscriber. Integration credentials, access tokens, and webhook secrets are never returned.View CLI documentation - View MCP documentation

Render Emails to HTML for Your Own Preview

If you build your own dashboard or email builder on top of Sequenzy, you can now fetch the rendered email instead of only its block JSON. POST /api/v1/campaigns/{campaignId}/render, POST /api/v1/sequences/{sequenceId}/nodes/{nodeId}/render, and POST /api/v1/templates/{templateId}/render return the exact email-safe HTML that would be sent, plus the resolved subject, preview text, and locale. The same renderer powers real sends, so an embedded preview cannot drift from what recipients receive.Pass subscriberId, an inline subscriber, or nothing at all to render for a sample contact, and variantId to preview an A/B test variant. Links stay clean unless you pass tracking: true. All three endpoints are read-only. The same capability is in the CLI as sequenzy campaigns render (plus sequences and templates), and as the render_email MCP tool.View documentation

Campaign Audience Before Scheduling

Campaigns managed through the API, CLI, or MCP can now save and change their audience without scheduling a send. POST /api/v1/campaigns, PUT /api/v1/campaigns/{campaignId}, create_campaign, and update_campaign all accept targetLists (or the segmentId shorthand), and update_campaign accepts targetLists: null to clear saved targeting again. In the CLI, sequenzy campaigns create and sequenzy campaigns update accept --segment, --target-lists-json, and --target-lists-file, campaigns update adds --clear-target-lists, and sequenzy campaigns schedule now accepts --segment alongside its existing target list flags. Campaign reads return the saved audience as targetLists, and campaigns create, campaigns update, and campaigns get print it on the Audience line.View CLI documentation

Undeliverable Mail No Longer Counts as a Bounce

A bounce means the receiving provider told us the mailbox is bad. Until now, a message that simply ran out of delivery routes was recorded the same way, so a temporary problem on our sending infrastructure could mark a perfectly valid address as bounced, stop future sends to it, and count against your bounce rate.These are now separated. When every delivery route for a message is exhausted, the message is marked Delivery failed, with the explanation “The recipient provider rejected all currently available delivery routes.” A failed send:
  • does not suppress the address, so the contact stays subscribed and receives your next campaign;
  • does not count toward your bounce rate, or toward the automatic sending pause that protects your sender reputation;
  • reports as a new email.failed webhook event instead of email.bounced, so your own systems can tell “we could not get through” apart from “this address is invalid”.
Genuine bounces are unchanged. An unknown mailbox still bounces, still suppresses the address, and still counts.If you use outbound webhooks, check your subscription. Sends that would previously have reached you as email.bounced now arrive as email.failed. Endpoints created from now on include email.failed in the default event set, but existing endpoints keep the exact event list they were created with, so add email.failed to yours if you want to keep hearing about undelivered mail.Deliverability dashboards now also break out Comcast, GMX/WEB.DE, Proton and many more Microsoft, Yahoo, Orange, Free and SFR domains by name instead of lumping them into “Other”. Existing history keeps whatever provider it was recorded under, so charts step-change on the day this ships rather than being rewritten.

Anonymous Shopify Browsing Is Backfilled After Identification

Most shoppers browse your store and add items to their cart before ever typing their email. Sequenzy’s Shopify browse pixel now remembers that anonymous activity in the shopper’s browser (for up to 14 days) and backfills it onto the contact the moment they identify - by entering their email at checkout or signing in. Product views, add-to-carts, cart views, collection views, and searches all land on the contact’s activity timeline with their original timestamps, so you see the full journey that led to a checkout instead of a contact who seems to appear out of nowhere. Once identified, later visits from the same browser are tracked in real time, which also makes browse- and cart-abandonment automations work for customers who first showed up anonymously. Backfilled historical events never trigger event-received sequences, never advance a sequence a contact is already in, and never send abandonment emails retroactively. They do update segment membership, so a contact can still enter a segment-triggered sequence if your segment matches the backfilled activity.View documentation

Sequences Now Run for Unsubscribed and Bounced Contacts

Unsubscribed and bounced contacts are no longer blocked from entering sequences. When a trigger matches, they enroll like anyone else and move through every step: tag changes, attribute updates, webhooks, and emails marked as transactional (an order-shipped notification, for example) all still run. Marketing email steps are skipped automatically for them, so consent is never violated. Contacts who unsubscribe while already inside a sequence keep the previous behavior - the remaining enrollment is cancelled. This makes event-driven flows like order updates work for every customer, whether or not they are subscribed to marketing email.View documentation

Whop Integration

You can now connect your Whop account to sync payments and memberships straight into Sequenzy. Once connected, purchases, failed payments, cancellations, and refunds flow in as subscriber events, and each matching subscriber gets revenue attributes (mrr, ltv, whopCustomerId) you can use to build segments and trigger automations - for example targeting high-MRR customers or launching a win-back sequence when a membership churns.Connecting takes a Whop API key with the member, email, payment, plan, access-pass, phone, and promo-code read permissions listed in the setup guide, plus a webhook pointed at your Sequenzy company. Existing customers and memberships are backfilled automatically on connect, and you can trigger a manual re-sync from the integration card at any time.View documentation

Immediate Campaign Cancellation

Cancelling a sending campaign now stops outgoing emails within seconds: batches already being processed check for the cancellation before every email instead of finishing their full batch first.

Live Sequence Enrollment Stage Counts

Sequence metrics now include enrollmentCounts, a live snapshot of active and waiting enrollment runs grouped by current node. The same breakdown is available from the REST sequence metrics endpoints, sequenzy stats --sequence, and the MCP get_sequence_stats tool, so agents can answer “how many are waiting at each stage?” without scanning subscribers individually. Historical date filters still scope engagement metrics while enrollment counts reflect current state.View sequence metrics documentation

Stable DNS for Unified Sending Domains

Domains created in the new unified cohort receive one Sequenzy-owned DKIM, SPF, and bounce-MX record set that remains stable when Sequenzy changes the underlying delivery transport. The setup also requires one valid DMARC record; the suggested v=DMARC1; p=none; value is a safe monitoring policy, and an existing valid policy at the organizational domain is accepted.Existing sending domains keep their current Amazon SES DNS records and are not migrated automatically. API and agent integrations should publish every record returned by domain creation instead of assuming a fixed provider or record count.When an operator later attaches a unified domain to Sequenzy’s MTA, customer mail stays blocked from that route until a hidden transactional probe receives a correlated delivery receipt. Failed or missing receipts remain visible to operators and can be retried without changing customer DNS.View domain verification documentation

Safe Step Deletion in Live Sequences

Deleting a sequence step no longer strands subscribers who are currently in it. Anyone waiting inside a deleted step (a delay, a wait-for-event, or an email step) now moves to the next step immediately and continues through the sequence, matching the rewired flow new enrollees follow. The editor warns you before the delete when people are in the step, and the sequence canvas now shows a notice if any subscribers are stuck on a step that was removed in the past. The same behavior applies to sequence edits made through the API and MCP, which report how many recipients were moved. Existing deletion protections still apply to trigger and end steps and to active or generating A/B tests. For otherwise-deletable steps, recipient migration is refused when people are in a branch step and multiple paths survive, since there is no single next step to move them to.View sequences documentation

Account-wide API Keys

Account Settings now has an API Keys page for creating and revoking personal seq_user_ keys. One account key can work across every workspace the user can access, including newly created workspaces; API requests select the target with the x-company-id header. Permission presets still apply, so multi-workspace automation can be limited to read-only, data-ingest, transactional, safer-agent, or full access. Viewer memberships remain read-only even if the account key has broader permissions.View authentication documentation

Reliable Cart Abandonment Trigger

Cart recovery no longer depends on shoppers visiting the cart page. Sequenzy now maintains a live cart snapshot for every known shopper from add-to-cart, remove-from-cart, and cart-view activity (Shopify web pixel and the WooCommerce plugin). Each cart change restarts an inactivity timer; once the cart sits untouched for the configured window (1 hour by default) with no checkout or order, the new Cart Abandoned trigger (ecommerce.cart_abandoned) fires with the full cart - every line item with title, variant, quantity, price, image, and product URL - so recovery emails always show the complete cart, not just the last product added. Starting a checkout or placing an order cancels the pending trigger, and a per-shopper cooldown prevents repeat sends. Timing and cooldown are configurable per store in the Shopify integration settings and via the API (/api/v1/shopify/automation-settings), CLI (sequenzy shopify settings), and MCP. The Abandoned Cart Recovery sequence template now uses the new trigger, and the legacy ecommerce.cart_started event (which only fired on cart-page views) keeps working for existing automations but is no longer offered for new ones.View documentation

Direct Sequence Step Test Sends for Agents

Agents can now send any saved sequence email step straight to one or more internal reviewers without copying it into a temporary campaign. The MCP send_sequence_test_email tool accepts a sequence ID, email-step node ID, and up to ten reviewer addresses. The REST API and sequenzy sequences test CLI command expose the same workflow, returning a durable email send ID for each recipient so delivery problems can be inspected directly.View documentation

Send API Engagement Metrics

Send API open and click rates are now available through the account metrics API with emailType=transactional, the CLI with sequenzy stats --email-type transactional, and the MCP get_stats tool with emailType: "transactional". This includes direct and saved-template sends; the returned emailSendId still provides the delivery-level status and event timeline through the email-sends API, CLI, and MCP tool.View documentation

Searchable Delivery History and Per-Email Stats

The recent sent-email history is now queryable by subject/title, recipient, delivery status, email type, bounce type, date window, and source across the REST API, CLI, and MCP. Returned delivery IDs drill into exact open/click timestamps and events. Saved transactional emails also have dedicated aggregate metrics by ID or slug, with optional time windows.Transactional template lists can now search name, slug, or subject, filter active state, and sort by sends, opens, clicks, open rate, or CTR across REST, CLI, and MCP. Per-template stats now include top clicked links, complaints, replies, permanent/transient bounce details, and human-versus-machine engagement. The CLI can export the complete filtered delivery history with email-sends list --all --csv email-sends.csv, and CLI/MCP delivery results include direct dashboard URLs.List sent emails · View transactional email metrics

Scheduled Campaigns Can Return to Draft

Scheduled campaigns can now be unscheduled without permanently cancelling and recreating them. The dashboard, public API, CLI (campaigns unschedule), and MCP (unschedule_campaign) all remove the pending send and recurrence, return the campaign to an editable draft, and preserve its content and audience. View documentation

Subscriber Names in Transactional API Sends

Single-recipient transactional sends now use the matched subscriber’s saved first and last name when the API request omits those variables. Matching works with subscriberExternalId or the recipient email, and explicit request variables still take precedence. Multi-recipient sends remain shared messages and do not borrow one subscriber’s profile.View documentation

Per-Enrollment Sequence Attachments

Event-triggered sequences can now attach a different file for every enrollment. In an email step, choose From trigger and use an event URL such as {{event.file_url}}; filenames can also use event values, for example file-{{event.order_id}}.pdf. Sequenzy resolves values from the original enrollment event, validates the final public URL and filename, and fetches the file when the email sends. The same { filename, path } templates work through the sequences API, CLI, and MCP tools. View documentation

Per-Customer Predictive Analytics

Every customer with order history now gets individual predictions computed nightly from your store’s buying patterns: predicted spend over the next 12 months (predictedLtv), churn risk (churnRisk), expected next order date (expectedNextOrderAt), and typical order cadence (avgDaysBetweenOrders). Predictions are stored as ordinary subscriber attributes, so they work everywhere attributes do - segment filters (including relative dates like “expected to reorder in the next 7 days”), campaign targeting, subscriber API and CLI responses, and the MCP get_subscriber tool - and each subscriber’s profile shows a Predictions panel with confidence and freshness. Three predefined segments ship with it: At-risk customers, Predicted VIPs, and Due to reorder soon. Two new automation events, ecommerce.reorder_window_missed and ecommerce.churn_risk_elevated, fire once per order cycle so winback and at-risk sequences trigger on each customer’s actual buying cadence instead of a fixed delay. Works with Shopify, WooCommerce, and Commerce API order sources. View documentation

Product Recommendations: First-Class Block, Ranking Strategies, and Revenue Attribution

Personalized product recommendations are now a first-class part of Sequenzy. A new Recommended products block in the email editor’s Commerce section drops in a ready-made product list that picks different products for every recipient at send time - no configuration required.You can now choose how products are ranked: Personalized for each recipient (browsing activity first, then similar shoppers, then store-popular products), Best sellers by recent order volume, Newest products, or Recently viewed. Activity-based strategies accept a configurable activity window.Recommendations now report their own funnel. Campaign and sequence stats show how many recommended products were shown and clicked, plus attributed orders and revenue - an order counts when a subscriber buys a recommended product within 7 days of clicking it - along with a per-product breakdown. The same time-range-aware numbers are available from the API (recommendations on campaign and sequence metrics), the CLI, and the MCP get_campaign_stats and get_sequence_stats tools. Revenue totals stay separated by order currency.View documentationThe dashboard now includes an “Ask Your Agent” section with copy-ready prompts - like analyzing customer LTV or building high-ROI sequences - that you can paste into any AI agent connected to Sequenzy via MCP, the CLI, or the API.Plain emails are now truly minimal - text, one clear call to action, and at most a discount code on offer emails - across AI generation and the Classic campaign template gallery, while designed styles keep their rich layouts, making the two clearly distinct.

Visibility for Skipped Sequence Enrollments

When an unsubscribed or bounced contact triggers an event that matches an active sequence, the skip is no longer silent. The dashboard activity feed marks the contact and shows “Would trigger if subscribed” on the matching sequence instead of “Triggered”, the sequence trigger step shows a skipped count, and the contact’s activity timeline records an “Enrollment skipped” entry with the reason. Sequence stats also expose the skip counts through the API (enrollmentSkipped on GET /api/v1/metrics/sequences/{sequenceId}), the CLI (stats --sequence), and the get_sequence_stats MCP tool.Deleting a user in a connected auth provider (Supabase, Clerk) unsubscribes the contact, and that specific unsubscribe is now reversible by the same provider: re-creating the user reactivates the contact automatically. Explicit opt-outs (unsubscribe link, dashboard, API) are never undone. View documentationDashboard pages now show content-shaped loading skeletons instead of spinners, so navigating between campaigns, sequences, subscribers, and other screens feels smoother and less jumpy.

Dynamic Carts in Generated Recovery Emails

AI-generated abandoned cart and abandoned checkout sequences now render each recipient’s actual cart. Generated emails include a dynamic item list bound to the trigger event’s line items (product image, title, quantity, and formatted price resolve per recipient at send time), and checkout recovery CTAs link to the recipient’s personal resume-checkout URL when the commerce source supplies one, with the brand’s cart page as a safe fallback. This applies to the prebuilt Abandoned Cart and Abandoned Checkout templates and to any cart or checkout event-triggered sequence generated via the dashboard, API, CLI, or MCP. Consecutive recovery steps now rotate through stable, recovery-specific item layouts instead of repeating the same card treatment; visual emails use card-row, editorial-row, product-grid, and receipt-row presets, while plain emails use restrained thumbnail, receipt, and subtle-card variants. Checkout events use a consistent optional checkoutUrl contract, and order events sync a lastOrderAt subscriber attribute for recency-based personalization.The sequence editor now shows a persistent chip on the canvas whenever a sequence is not active, with a one-click Activate action - so a freshly generated draft is never mistaken for a live automation.

Predictive Commerce Analytics

Shopify order history and live commerce orders now power explainable predicted AOV, predicted 12-month customer value, and a 90-day order and revenue forecast. The Metrics dashboard shows confidence-aware ranges and reports the exact data still needed instead of estimating from sparse history. The same forecast is included in GET /api/v1/metrics, sequenzy stats, and the MCP get_stats tool. Forecasts use provider-neutral commerce order events, so the model also works with WooCommerce and Commerce API orders. View analytics API documentation

File Attachments on Sequence Email Steps

Sequence email steps can now include real file attachments - ideal for lead magnets and guides delivered by event-triggered sequences. Attachments are URL-backed: provide a public HTTPS URL and a filename, and Sequenzy fetches the file at send time and attaches it to the email, so you can update the file at its source without editing the sequence. In the dashboard, upload a file from the email editor’s settings (gear) menu - Sequenzy hosts the upload for you. You can also set attachments on email steps through the sequences API, the CLI’s step JSON, and the create_sequence / update_sequence / update_sequence_node / insert_sequence_step MCP tools. Up to 10 attachments and 7MB total per email. Most email platforms don’t support attachments in automated flows at all - for broad marketing sends, a hosted download link is still the deliverability-friendly default. View documentation

Email Theme in API, CLI, and MCP

The company default email theme - preset, colors, typography, and layout - can now be updated through the public API, CLI, and MCP server, not just the dashboard. PATCH /api/v1/companies/{id} accepts an emailTheme object, companies update gains --email-theme-json / --email-theme-file, and the update_company MCP tool accepts the same field. Updates are partial: omitted fields keep their current value, numeric values are clamped to supported ranges, and passing null resets the theme to the platform default. View documentationThe email preferences page now shows a clear Unsubscribe button (and a Resubscribe option after unsubscribing) when a company has no public subscriber lists, instead of an empty page with no way to opt out.Saved templates can now have their inbox preview text updated through REST, the sequenzy templates update --preview-text CLI option, or MCP’s update_template tool without opening the dashboard.The default footer text and link color in sent emails is now darker (#6b7280 instead of #9ca3af) so unsubscribe links and the subscription reason stay readable on the default white email background. Footer background choices and custom colors are unchanged.

Full Sequence Authoring Parity for API, CLI, and MCP

insert_sequence_step can now create logic_wait_for_event and logic_branch nodes with typed arguments. Branch paths can atomically wire to existing node IDs - including the sequence completion node - with targetNodeId and elseTargetNodeId, while still supporting newly created path steps. This makes flows such as “reply in this sequence → complete, otherwise → send the follow-up” possible without creating a dashboard node and then replacing the graph in a second call. The REST API and CLI branch JSON use the same target fields, and target-aware writes reject cycles or disconnected flows before anything is saved.The same public surfaces now cover every dashboard sequence setting: inbound webhook triggers, descriptions, labels, recipient cancellation, typed stop condition matching, segment-exit behavior, sequence and per-step delivery identity, transactional emails, and CC/BCC recipients. Typed insertion also covers delays, conditions, tag/list actions, subscriber updates, discounts, outbound webhooks, SMS, wait nodes, and branches. Sequence email nodes can be converted into A/B tests with independent variants, and sequence-level duplicate, archive, and restore actions are available through REST, CLI, and MCP.Sequence authoring can now also start from a blank dashboard-compatible draft, atomically replace trigger types, configure and rotate inbound-webhook endpoints, manage persisted event or subscriber-attribute conversion goals, filter the sequence list by status/search/labels, and read the user attribution for enrollment pauses. REST, CLI, and MCP expose the same typed contracts.API keys can now be safely cleaned up after a failed secret handoff. The public API, CLI, and MCP server can list company keys as non-secret metadata and revoke an exact key by ID. list_api_keys never returns the plain key or stored hash; revoke_api_key is canonical and delete_api_key remains available as an alias. The CLI provides matching api-keys list and confirmed api-keys revoke / delete commands.Workspace settings now open on the Domain tab, and the old Product Info page is split into focused tabs: Product Info (name, logo, social links, legal details), AI Context (tone, company context, value props, testimonials, pricing tiers), and Email Design (default email theme). The primary email language and text direction now live on the Localization tab alongside translations.Event pickers in sequence triggers, goals, and subscriber filters now sort events by how often they fired in the last 24 hours and show the count next to each event. Event pickers also only offer the built-in events that match your business - SaaS lifecycle events are hidden for ecommerce stores and ecommerce events are hidden for SaaS products.Revenue attribution is now more accurate: clicks always beat opens for last-touch credit (as documented), automatic opens from privacy proxies and security scanners no longer earn attribution, and goals with attribution windows longer than 24 hours now report every conversion recorded inside their configured window.Sequence email Format updates through the API, CLI, and MCP now work for native block emails that contain supported custom HTML blocks, such as an HTML footer component. Only emails stored entirely as standalone raw HTML remain excluded.The PostHog integration now updates subscriber attributes only for $identify events. Identify profile data ($set, $set_once, and person properties) is synced, while all other event properties stay on the event and are no longer copied onto the subscriber profile.

Sequence Email Format in API, CLI, and MCP

Sequence reads now return each linked email’s effective emailPreset, matching the dashboard’s Style > Format setting. API, CLI, and MCP updates can set a native-block email to minimal or branded without changing the company theme, using the same block transformation as the dashboard. Raw HTML emails are left unchanged and do not support format updates.“Start from scratch” in campaigns, sequences, and transactional emails now expands into an AI prompt with suggestion chips - describe what you want and land in the editor with the draft already generating, or keep using the plain empty editor via the link below the prompt.

Editorial Block Styles: New Buttons, Pull Quotes, Captions, and More

A set of editorial upgrades across the core email blocks, so emails can feel designed without leaving the block editor:
  • Two new button styles: Ink, a near-black fill that pairs with any brand color, and Link, a quiet letterspaced-caps text link with a trailing arrow for secondary actions.
  • Editorial testimonial: a large serif pull quote set between thin hairline rules, alongside the existing card, minimal, centered, and quote layouts.
  • Image captions and frames: add a small muted caption under any photo, and frame it with a hairline border or a white gallery mat.
  • Numbered headings: give a heading an oversized index like “01” for numbered editorial sections.
  • Ready-made editorial components in the block menu: Framed Box, Numbered Heading, Editorial Quote, Ledger table, Matted Photo, the new button styles, and dots/accent dividers are all one click (or one / command) away.
Everything renders identically in the editor, the preview, and the sent email, and stays Gmail and Outlook compatible. The AI email writer can use all of the new styles too, and the designed template gallery already puts them to work - museum-mat product shots, serif pull quotes, ink buttons, and numbered bulletins across the collections. Every designed template now uses typographic numbered steps and clean detail ledgers instead of number circles and tinted tiles, so the whole gallery shares one editorial language. Three new templates are built entirely around the editorial components: The Gallery Wall (product photography hung like framed prints), The Index (a numbered table-of-contents newsletter), and The Postcard (a matted photo and a handwritten-feel note). View documentationThe Designed campaign template gallery now shows a real rendered preview of every template - each card displays the actual email with your brand color, logo, and imagery applied, so you pick by look instead of by name. The designed templates themselves were also reworked with editorial typography, larger photography, and warmer layouts across all twelve collections.

Subscriber Contact Changes in the Activity Timeline

The subscriber activity timeline now records a “Contact updated” entry whenever a subscriber’s first or last name changes, showing the old and new value and which write path (API, dashboard, automation, import, or sync) made the change.Campaign sending and scheduling now validate content and audience server-side on every surface (dashboard, API, MCP): an empty subject, an email with no content blocks, or an audience with no include rules is rejected, and a filtered audience with an empty filter set resolves to zero recipients instead of the entire active list.Popup and form builder improvements: the template galleries doubled to eight redesigned popup templates (including exit intent, live demo, announcement bar, and fullscreen welcome) and eight form templates (including demo request, email course, blog banner, and floating bar), template previews now show your company logo, fields can use full or half-width responsive layouts and show or hide their labels, countdown blocks get a date picker, popup success screens show only your success content, and popups with a side image now stack to a single column on mobile.The template galleries also grew to twelve forms and twelve popups, and every template now has its own typography and shape - serif, monospaced, or sans headlines, sharp or generously rounded corners, and compact to spacious layouts - while all of them share your workspace brand colors, the same way landing page templates differ without changing your palette. New templates include a monospaced dev changelog, a serif Sunday essay, a sharp-cornered studio form, an extra-rounded club signup, a monospaced launch modal, a serif slide-in digest, a stripped-back fullscreen takeover, and a slim top-of-page announcement bar.Also for forms and popups: field settings gained a “Saves to” picker so a field can write to the subscriber’s first name, last name, or phone (or to a custom attribute with your own key) instead of everything landing in custom attributes, and the confirmation page shown after a native HTML form post now mirrors your form’s success screen with its checkmark, heading, and message. Applying a saved form to a landing page now carries every field over - phone maps onto the subscriber profile, and choice, consent, and hidden fields become native landing-page form fields instead of being skipped.The MCP add_subscriber and update_subscriber tools now accept native firstName and lastName fields, and sequenzy subscribers update gained matching --first-name / --last-name flags, so agents no longer need to store names as custom attributes.

One Canonical Way to Create Sequences

create_sequence, POST /api/v1/sequences, and sequenzy sequences create are now the canonical sequence-creation surfaces. The older generate_sequence, POST /api/v1/generate/sequence, and sequenzy generate sequence names are deprecated compatibility aliases. They now persist the same disabled sequence draft instead of returning unsaved preview content, and their responses or command output include migration guidance. Existing aliases remain available so integrations do not lose their route or command unexpectedly.

CC and BCC Recipients on Every Email

You can now add CC and BCC addresses to campaigns, individual sequence steps, and transactional templates. In any email editor, click the CC/BCC arrow next to the Reply field to reveal the recipient inputs - they stay hidden until you use them. Each configured address (up to 10 per list) receives a copy of every email sent, which is useful for compliance archives, CRM ingestion, or keeping a teammate in the loop. The recipient themselves is never copied, and addresses duplicated between CC and BCC are sent only once.Sequence steps combine their own BCC list with the sequence-level BCC setting, and transactional templates merge their saved CC/BCC with any cc/bcc passed on the API request. Campaign CC/BCC can also be set via the API and MCP with the ccEmails and bccEmails fields on campaign update.

Static-Site Signup Forms and Forms MCP Tools

Saved Forms now have a dedicated Static site / Form action embed option. Copy the public action URL, a minimal native form, or a fetch enhancement for Astro, Hugo, Jekyll, Cloudflare Pages, Netlify, and GitHub Pages. These embeds need no backend proxy or browser-side API key: the saved form keeps its lists, tags, duplicate handling, and success action on the server. The hosted JavaScript embed is also available to every workspace user instead of being limited to global admins.MCP agents can now use list_forms, create_form, and get_form_embed to configure a list-scoped form and return working embed code. Integration-guide requests for static frameworks use this Forms workflow and never recommend a secret Bearer key in client code. View signup form documentationKeep application-owned communication preferences in sync without polling. Outbound webhooks can now subscribe to subscriber.list_subscribed and subscriber.list_unsubscribed. Each signed event includes the event ID and timestamp, subscriber ID, email and external ID, list ID and name, whether the subscriber was added or removed, and the source of the change.Events cover actual transitions made from subscription preferences, the dashboard, API and MCP operations, automations, imports, double opt-in, and integration-created memberships. Repeating an already-applied change does not emit a duplicate transition. Global opt-outs continue to use subscriber.unsubscribed. View outbound webhook documentation

Segments, Events, and More in Conditional Blocks

Conditional (if/else) blocks and per-block Conditional Display rules can now target much more than attributes and merge variables. You can show or hide content based on segment membership, custom events (for example “performed purchase in the last 30 days”), tags, lists, subscription status, engagement (opened or clicked recently), Stripe and store purchases, signup date, email provider, phone presence, and SMS status - the same filters you already use to build segments.Each rule is evaluated against live subscriber data at send time, so one email can greet VIP customers with a different offer than everyone else. Recipients that cannot be matched (for example a transactional recipient who is not a subscriber yet) see the OTHERWISE branch. The editor preview shows the IF branch by default; use the branch flip control to check the other one. View documentation

Programmatic Template Localization

Localized template variants can now be managed without opening the dashboard. The REST API, CLI, and MCP can all store caller-supplied translations or queue Sequenzy’s AI translation for selected locales. Manual variants accept either raw HTML or native Sequenzy blocks, preserve canonical locale handling, and are immediately available to locale-aware campaign, sequence, and transactional sends. Explicit sync works even when automatic on-save translation is disabled. View localization documentationCampaign analytics now show a Clicked Links breakdown for sent campaigns: the top tracked links in the email, ranked by clicks, with each link’s share of campaign-wide clicks. When the originating element can be resolved, the row shows the button text, image, or text link in your email, with the destination URL underneath; otherwise it shows the destination URL. When several links share a destination, the row names all of them. Click any row to open the destination. Find it in the campaign analytics view switcher, next to the Sent Emails, Globe, and Engagement Over Time views.The breakdown is also available outside the dashboard: the campaign metrics API returns a top-level clickedLinks array, sequenzy stats --campaign <id> prints a Clicked Links section in the CLI, and the MCP get_campaign_stats tool includes the same array for agents.

More Accurate Click Counts

Click tracking now only wraps real links (anchors, image maps, and Outlook button fallbacks). Previously, font stylesheet references in the email head could be routed through click tracking, so email clients fetching fonts while rendering registered phantom clicks. Font CDN fetches are also classified as non-human engagement retroactively, so click counts and click rates for past campaigns clean up automatically.

Upload Email Images Directly from MCP

MCP agents can now upload screenshots and other email images without opening the dashboard. upload_image_asset accepts a local image path from stdio MCP clients or base64 bytes from remote-capable clients, saves the file in the workspace’s shared media library, and returns both the hosted URL and a ready-to-insert image block. Alt text, responsive width, alignment, intrinsic dimensions, and fixed-height cover/contain crops can be set in the same call, so lifecycle screenshots use one precise treatment across editor preview and sent email. PNG, JPEG, GIF, and WebP images up to 5MB are supported. View MCP documentation

Custom Email Locales

You can now use locale codes beyond the built-in language picker for both your company’s primary email language and additional localized variants. Enter a standard locale such as fr-CA, sr-Latn, or en-AU; Sequenzy validates and normalizes the code, uses its language in AI writing and translation prompts, and keeps existing variants stored under deprecated aliases such as iw available under their modern locale (he). The language picker also includes more ready-to-select languages, including Amharic, Bengali, Bulgarian, Croatian, Persian, Serbian, Swahili, and Tamil.View documentation

Agent Handoff Prompts Now Include Setup Instructions

Prompts from the Open in menu in the sequence builder and email editor sidebars are now self-sufficient. If the agent you hand off to is not connected to Sequenzy yet, the prompt itself tells it how to get access: add the remote MCP server in the agent’s connector settings (with per-client setup guides for ChatGPT, Claude, and Cursor), or use an API key from Settings → API Keys against the REST API. The prompt also names your workspace so the agent picks the right company. The MCP docs now include a ChatGPT connector setup guide as well. View documentation

Edit Any Existing Sequence Node from MCP

MCP agents can now patch existing sequence nodes in place instead of rebuilding a flow. update_sequence_node handles one focused edit, while update_sequence_nodes applies a batch atomically - including the common case of changing every 5-minute delay to 7 days. Both tools work across stored node types, including delays, email and SMS content, actions, conditions, webhooks, branch configuration, and triggers. get_sequence supplies each node’s current config and updatedAt value plus updateHints with its editable and managed fields for type-aware, concurrency-safe edits.Node type conversion and topology remain explicit graph operations through edit_sequence_graph. Active-sequence node edits require confirmation, and recipients already waiting keep their previously scheduled time. View MCP documentation

Polls & NPS Surveys in Emails

Ask a question, get one-click answers. The new Poll block renders answer buttons (up to 8, emoji welcome) and the NPS Survey block renders a 0-10 recommendation scale - both look identical in the editor, the preview, and the sent email, and work in every email client because each answer is a plain link.
  • Feeds segmentation directly: every answer is saved to a subscriber attribute you choose (NPS scores as numbers, so segments can filter e.g. nps_score at most 6 for detractors) and appears in the subscriber’s activity feed.
  • Automate follow-ups: each vote fires a poll.answered event you can use in Event Received sequence triggers and sync rules - thank promoters, win back detractors.
  • Bot-proof: clicks from security scanners and link-preview bots are filtered out, and re-votes simply update the stored answer.
  • After voting: recipients land on a hosted thank-you page with your custom message (previewed live in the block settings), or redirect them to any URL.
  • Eight visual styles: Soft, Pill, Outline, and Filled buttons, plus four designed looks - Pop (hard-shadow boxes), Brutal (square uppercase slabs with ink shadows), Quiz (A/B/C letter badges), and Minimal (a bare ruled list with accent arrows). The style picker previews each one in your accent color.
  • Results where you expect them: sent campaigns show a Poll Results card with the answer distribution, and NPS surveys get the score with the promoter / passive / detractor split. Click any answer row - or the promoter / passive / detractor counts - to open the exact historical subscribers behind that campaign and poll block, even if their current stored answer later changes. The same summary is returned by the campaign stats API, CLI, and MCP as a polls array; MCP can recreate the drill-down with the campaign-and-block-scoped pollResponse segment filter.
  • Tamper-proof and deduplicated: every answer link is cryptographically signed, and re-clicks of the same answer never re-fire your automations.
  • Push answers anywhere: subscribe an outbound webhook to the new poll.answered event.
Insert it from the block menu or type /poll or /nps. Poll blocks are also supported in emails created via the API, CLI, and MCP, and the AI email writer can generate them. The hosted thank-you page follows your company’s email language. View documentation

Custom Event Setup Returned With New Sequences

Creating a custom-event sequence through the API or MCP now returns everything needed to connect the application-owned event feed: ready-to-adapt tracking code, the exact event payload contract, matching-field properties, a generated example payload with an explicit filter-match status and adaptation note when needed, the event endpoint, a direct documentation link, and the arguments for the MCP integration-guide tool. The MCP result keeps this guidance after its sequence readback instead of dropping it.

Per-Step Sender Identity for Sequence Emails via API, CLI, and MCP

Individual email steps in a sequence can now get their own sender identity through the API, CLI, and MCP - not just in the dashboard editor. Pass senderProfileId or fromEmail (plus optional fromName), and replyProfileId or replyTo (plus optional replyToName) on any item in the emails/steps array of the update sequence endpoint, or on email steps inserted with insertSteps. A fromName on its own changes only the visible display name without touching the sender profile.New email steps inserted into an existing sequence also now inherit the effective sender identity of the nearest sequence email, so added steps send as the same person as their neighbors. After a branch merge, only identity fields shared by every incoming path are inherited; conflicting fields use the sequence or company defaults. View documentation

Restructure Existing Sequence Graphs from MCP

Agents can now move, reorder, reconnect, delete, and duplicate existing sequence nodes instead of only inserting new steps. The new edit_sequence_graph MCP tool can move an A/B test below a branch convergence, deep-copy an A/B test with independent variants and emails, splice out linear steps, or atomically replace the full edge topology for advanced reconnects. get_sequence now returns edges plus a graph revision, and every graph edit checks that revision before writing so a stale agent cannot overwrite a newer change. Active-recipient and topology safeguards prevent destructive edits from stranding live runs. View sequence update API

Segment by Number of Opens and Clicks

Engagement filters can now count, not just check. Pick “opened at least” or “clicked at least” (or their “less than” counterparts) on any engagement filter and enter a count with a time window - 10:30d for 10+ times in the last 30 days, or 10:all for 10+ times ever. This unlocks segments like “best clickers - clicked more than 10 times” or “opened 10+ emails but never clicked” for catching bot and spamtrap opens. The value picker suggests count-and-range combinations as you type, the AI filter builder understands phrases like “clicked more than 10 times”, and the same count:timeRange values work in segments created via the API, CLI, and MCP. View documentation

Real Event Data in Previews and Test Sends

Emails inside an event-triggered sequence now preview {{event.*}} merge tags with values from the most recent matching event, instead of showing fallbacks or blanks. Test sends from the sequence email editor include the same sample payload, so the email you receive matches what a live send would render. Every prefilled value stays editable in the preview data panel, and anything you type there wins over the sample. View documentation

Event Variables in Update Subscriber Steps

Sequence “Update Subscriber” steps can now set field values from the payload of the event that started the sequence. Type {{ in any value field to autocomplete variables like {{event.plan}} or {{event.amount}}, drawn from the trigger event’s recent payloads - subscriber attributes ({{subscriber.company}}) and built-in fields ({{firstName}}, {{email}}) are suggested too. Variables resolve when the step runs; number fields accept variables and coerce the resolved value, and a field whose event property is missing is skipped instead of being blanked. Works the same for sequences created via the API, CLI, and MCP.

Affonso Affiliate Integration

Connect your Affonso affiliate program to Sequenzy and run your affiliate communications from the same place as the rest of your email.
  • Affiliates sync as subscribers with their tracking code, status, program, coupon code, and any custom metadata from your signup form.
  • Existing affiliates and performance totals are backfilled on connect with a read-only Affonso API key, without replaying historical automation events or enrolling them into sequences.
  • Running totals per affiliate: leads referred, conversions, total referred revenue, commission earned, and total paid out are kept up to date as attributes, so you can segment affiliates by performance (for example, referred revenue over $1,000). The read-only API key needs Affiliates, Referrals, and Commissions read permissions.
  • Automate the whole lifecycle with provider-agnostic affiliate.* events: welcome new affiliates on affiliate.created, celebrate wins on affiliate.referral_converted, and confirm payments on affiliate.payout_paid, with event details like {{event.amount}} available in your emails. Attribute and event names are not tied to Affonso, so your automations and segments keep working if you ever switch affiliate platforms.
Connect it in Settings → Integrations → Affiliate Marketing, then paste an Affonso API key and the signing secret from Affonso’s webhook settings. Every webhook is signature-verified. View documentation
The campaign template picker now has a second, visual-first gallery: 88 designed templates built on the visual block set - photo heroes, lookbooks, magazine-style digests, pricing cards, countdown sales, polls, and more, organized into twelve categories from Welcome to Product News. The classic functional templates stay the default; flip the new Classic/Designed switch in the picker to browse them.Four of the categories are wilder by design. Statement templates are typographic and poster-like (a manifesto, a brutalist bulletin, three stacked headline bands, a one-word email). Playful ones behave like games (subscriber bingo, a pop quiz, a “do not open” mystery, a $0.00 receipt from the future). Cinematic ones read like film scenes (a heist briefing, a midnight drop, a museum label, a mission launch). Avant-Garde ones borrow formats from other mediums entirely (a boarding pass, a tasting menu, a founder interview, a transmission from 2049).Designed templates personalize themselves from your brand: your logo, brand colors, harvested website imagery, synced products, and real customer testimonials drop into the layouts automatically, with curated stock photography as the fallback. Templates also carry distinct corner styling - editorial layouts run square corners, playful ones extra-soft rounding - so the gallery doesn’t feel like one email repeated 56 times.Template previews now resolve personalization fallbacks too, so {{FIRST_NAME|there}} shows as “there” instead of a raw tag.View documentation

Prompt Creation Parity

Campaigns, saved templates, and transactional templates now accept prompts directly across the API, MCP, and CLI. Prompt creation uses the same branded native-block generator as the dashboard; campaigns remain drafts and prompt-created transactional templates default to disabled. Existing blocks and preserved HTML modes remain supported.

Smoother Editing for Imported HTML Emails

A round of fixes that make the HTML editor (used for imported emails) behave like a proper text editor:
  • Links are real text now: click a link or button label to place the cursor and type, double-click to select a word, and drag to select across it. The link editor opens alongside without stealing your keyboard, and it now includes a Text field so you can change a button’s label and URL in one place.
  • Undo and redo work reliably: one Cmd/Ctrl+Z undoes your last edit and keeps the cursor where you were, redo brings it back, and saving after an undo saves what you see.
  • Cmd/Ctrl+K adds a link using the same link editor as the rest of the app.
  • Forward Delete respects your layout: deleting at the end of a section removes spacers or joins the next text section instead of breaking the email’s structure.
  • The view follows your cursor when typing or pressing Enter near the bottom of a long email.
  • Spell check is on while writing, and the invisible characters some editors leave behind no longer end up in sent emails.

A More Fluid Email Editor

A batch of editing and drag-and-drop refinements that make composing emails feel like a modern document editor:
  • Enter after a heading starts a new paragraph below it (press Enter mid-heading to split it), so you can type a title and keep writing.
  • Backspace works between blocks: it deletes an empty block, and at the very start of a block it joins the text into the previous one with the cursor at the junction.
  • Drag and drop is precise: dragged blocks track your cursor exactly, drops land above or below a block depending on which half you release over (with the insertion line showing exactly where), a new drop zone below the last block lets you drop content at the end of the email, and dragging into or out of columns shows the same insertion line.
  • Undo keeps your place: after Cmd/Ctrl+Z the cursor returns to where you were typing, so you can undo and keep writing without reaching for the mouse.
  • Arrow keys cross blocks: Left/Right at the edge of a block move into the neighboring one, and Escape steps out of text editing to the selected block, then clears the selection.
  • Slash commands clean up after themselves - filtering the menu (like /div) no longer leaves the typed query behind in the email - and the formatting toolbar now waits until you finish selecting text instead of popping in mid-selection.

Dark Mode and Blocked-Images Preview

The editor’s Preview tab can now simulate the two most common ways an email breaks after sending. The dark mode toggle recolors your email the way Gmail and Apple Mail force dark mode - light backgrounds go dark, dark text goes light, and saturated brand colors stay put - so invisible text and light-background logos show up before your subscribers see them. The blocked-images toggle renders the email the way Outlook and corporate inboxes show it before images load, so you can check that your alt text carries the message.

Smarter Pre-Send Checks

The deliverability checker now also catches practical mistakes, not just spam signals: buttons and CTAs with no link or a placeholder link (”#”, a bare “https://”), images missing alt text, button text with unreadable contrast, buttons too small to tap on mobile, and emails whose HTML exceeds Gmail’s 102KB clipping limit (which hides the rest of the message - including the unsubscribe link - behind “View entire message”).

Sequence Editor: Undo, Simulation, and More

The sequence editor got a major usability upgrade:
  • Undo and redo. Every canvas edit - adding, editing, deleting, and reordering steps - can be undone with Cmd+Z and redone with Cmd+Shift+Z, including accidental “Discard changes” clicks.
  • Path simulation. Pick any subscriber and see exactly which steps they would take through the sequence, evaluated with the same condition logic the send path uses. The canvas highlights the path and explains each condition and branch decision. Nothing is sent or enrolled.
  • Funnel view. Toggle the new funnel mode (F) on an active sequence to see where it leaks. Connections are only annotated where subscribers were actually lost (hover for the breakdown of failed, stopped, or finished), branch splits show their traffic share, and each email shows its open-rate change versus the previous one - the usual drop-off signal in a linear sequence.
  • Duplicate step. Any action or delay step can be duplicated in place from its editor. Duplicating an email step also clones the email, so the copy is independently editable after you save the sequence.
  • Collapsible branches. Wide branch sections can be collapsed into a compact summary card showing how many steps are hidden inside.
  • Keyboard navigation. Arrow keys walk the canvas, Enter opens the focused email step, Delete removes it, and Cmd+F opens a step finder that jumps to any step by name or subject.
  • Sort sequences by results. Sequence lists can now be sorted by goal conversions and attributed revenue, alongside date, opens, clicks, and CTR.
View documentation

Company Branding for AI-Generated Emails

Emails generated through the API, MCP server, and CLI now match drafts created in the dashboard. Generated marketing emails include the company’s logo and footer by default, transactional emails use a footer without an unsubscribe link, and campaigns and templates created through the API inherit the company font. API and MCP callers can set applyBranding: false when they need only the raw generated content blocks.View documentation

Continue in Your Agent from the AI Sidebars

The AI assistant sidebars in the sequence builder and the email editor now have an Open in menu next to the message box. Draft your request, then copy it as an agent-ready prompt or open it directly in ChatGPT, Claude, or the Cursor desktop app. The prompt includes your company and sequence or campaign identifiers, so an agent connected through the Sequenzy MCP server can pick up exactly where you left off. The menu also links straight to the AI Agent Setup wizard if you have not connected an agent yet. View documentation

Full Recipient List on Multi-Recipient Transactional Sends

Transactional emails sent to multiple to addresses (or with cc/bcc) now store the complete recipient list on the send record. The sent-email detail page shows every recipient - including cc and bcc - instead of only the first To address, and the email-sends API returns the list in a new additionalRecipients field. View documentation

Nested Repeat Blocks

Repeat blocks in the email editor can now be nested, with the inner repeat drawing from an array inside each parent item - point its source at the parent’s item alias, like item.lineItems, instead of a separate top-level array. The editor suggests these parent-scoped sources when a repeat block sits inside another one, previews render real nested rows (including the Preview tab, test emails, and the transactional API code examples), and merge-tag suggestions inside the inner template pick up the nested item’s fields. Works in campaigns, sequences, and transactional templates. View documentation

Product Feedback from the API, CLI, and MCP Server

You (or your AI agent) can now send product feedback to the Sequenzy team from wherever you work: POST /api/v1/feedback, sequenzy feedback "..." in the CLI, or the submit_feedback MCP tool. AI agents connected through the MCP server are instructed to report a gap whenever you asked for something the tools do not support yet - so the workflows you actually need reach us without you filing anything. Feedback lands directly with the team and is never stored in your account data. View documentation

Chargebee Integration

Connect your Chargebee site and turn billing events into email automations:
  • One-time setup: enter your site name, an API key, and webhook basic auth credentials - Sequenzy shows you the exact webhook URL to paste into Chargebee
  • Full historical sync: customers, subscriptions, and paid invoices import automatically on connect, with MRR and LTV calculated for every subscriber
  • Real-time billing triggers: payments, failed payments, refunds, trial starts, trial-ending reminders, trial conversions, cancellations, pauses, resumes, and reactivations all map to built-in saas.* events for automations
  • Automatic tags: customer, trial, cancelled, churned, saas.monthly, and saas.yearly stay current as subscription statuses change
  • Duplicate-safe: Chargebee webhook retries and duplicate deliveries never double-count revenue, and a manual Sync Revenue action reconciles anytime
  • Supports both Product Catalog 1.0 and 2.0 sites, with non-USD currencies converted automatically
View documentationPhone numbers and SMS marketing consent collected by your Shopify store now flow into Sequenzy automatically. The initial customer sync imports each customer’s phone and SMS opt-in state (consent source shopify, with Shopify’s own consent timestamp), and customer webhooks apply opt-ins and opt-outs as they happen - so a checkout opt-in on your store is immediately usable by Send SMS steps in your sequences. The sync is TCPA-safe: consent is only granted on an explicit Shopify opt-in, never inferred from a phone number. Requires approved phone field access for protected customer data on your store; without it, customer sync simply skips phone and consent. View documentation

One-Off SMS from the Subscriber Page

Text a single contact without building a sequence. When a subscriber is opted in to SMS marketing, their profile page now shows a Send SMS button next to Send email. It opens the familiar SMS composer - merge tags, emoji, images, AI assist - shows the estimated credit cost for the contact’s country before you send, and warns if your credit balance is too low. One-off messages respect all the usual consent gates and quiet hours. View documentation

Inline Emoji Search in the Email and SMS Editors

Type : at the start of a word in any text block of the email editor, or in the SMS composer, to open an inline emoji searcher right at your cursor. Keep typing to filter by shortcode (:tada, :fire, :+1), move through the results with the arrow keys, and press Enter to insert - no need to reach for the toolbar picker. A bare : shows the most frequently used emoji, so a couple of keystrokes is usually all it takes.In the SMS composer, the searcher also reminds you when inserting an emoji will switch a standard GSM-7 message to Unicode segments (70 characters per segment instead of 160), so the cost change is never a surprise.

Sequence Builder: Components Palette and Organized Step Menu

Building sequences is faster and easier to scan:
  • Floating components palette: a new collapsible panel on the left of the sequence canvas lists every step type. Click a component to add it at the end of your flow, or drag it onto the canvas - every insertion point between steps expands into a labeled drop zone while you drag, and the one under your cursor shows exactly what will be inserted
  • Organized “Add a step” menu: step types are now grouped into Messages, Timing, Logic, and Actions sections in a wider two-column layout everywhere you add a step, so the right step is easier to find without scrolling

SMS Everywhere: AI Assistant, API, CLI, and MCP

SMS is now a first-class citizen across every Sequenzy surface, not just the sequence builder:
  • AI assistant adds SMS steps natively: ask the sequence assistant to “add a shipping confirmation text” and it proposes a real Send SMS step with drafted copy - no more webhook workarounds. SMS additions always require your explicit approval before they apply
  • AI SMS copywriting: the new POST /api/v1/generate/sms endpoint (and sequenzy generate sms in the CLI, generate_sms in MCP) drafts on-brand message variants with live encoding and segment counts
  • SMS steps via API: create sequences with SMS steps (type: "sms" with plain-text text) in explicit steps, branch paths, and step insertion - so agents and migrations can build SMS journeys end to end
  • SMS readiness check: GET /api/v1/sms/settings (CLI: sequenzy sms settings, MCP: get_sms_settings) reports add-on status, credit balance, numbers, and whether SMS steps will actually send
  • Edit SMS steps programmatically: update an existing SMS step’s text, label, or ineligible-contact behavior via smsSteps in PUT /api/v1/sequences/{id} (MCP: update_sequence.smsSteps, CLI: sequenzy sequences update --sms-steps-json)
  • Test sends from anywhere: POST /api/v1/sms/test (CLI: sequenzy sms send-test, MCP: send_test_sms) sends a real test message - credit-charged, quiet-hours exempt, capped at 100 per company in a rolling 24-hour window
  • SMS webhook events: outbound webhooks now emit sms.sent, sms.delivered, sms.failed, and sms.opted_out (included in the default event set for new webhooks), so external systems can track SMS delivery and opt-outs in real time
  • Compliance is automatic: Sequenzy adds your brand prefix to every message and the opt-out footer to the first message, so generated copy never needs boilerplate
View documentation

BCC Copies for Sequences

Sequences can now blind-copy your team on every email they send:
  • Set one or more BCC addresses in the sequence settings modal - for example your customer support inbox, so the team sees exactly what each subscriber receives (separate multiple addresses with commas, up to 10)
  • Copies are sent as true BCCs, so subscribers never see the extra recipients
  • Applies to every email step in the sequence, including A/B test variants
  • Leave the field empty to turn it off
  • Also available via the API (bccEmails on PUT /api/v1/sequences/{id}), the CLI (sequenzy sequences update --bcc-emails), and the MCP update_sequence tool
View documentation

Best Emails on the Metrics Dashboard

The metrics page now shows your top performing emails, so you can see at a glance which campaigns and sequence emails actually drive results:
  • Best emails leaderboard: the top 3 emails for the selected period, covering both one-off campaigns and individual sequence emails (like each step of your onboarding flow)
  • Sort by what matters: rank by attributed revenue, unique opens, or open rate - revenue is the default whenever at least one email has attributed revenue
  • Jump straight to the source: each entry links to the campaign or sequence behind it
  • Drill into the numbers: click an entry’s opens, open rate, or revenue to see exactly which subscribers opened the email or made an attributed purchase

Finish Setup, Earn 500 Bonus Emails

Completing the getting-started checklist now earns you 500 bonus email credits, added to your account automatically:
  • The checklist has a new third step: Generate an API key - connect the API, CLI, or your AI agent alongside creating your first campaign and adding subscribers
  • Finish all three steps and 500 bonus emails land on your account (one time per account). Credits are spent before your plan allowance
  • Any API key counts - one created from the setup flow, the settings page, or a CLI/MCP login

Meta Audience Syncs Handle Lost Connections Gracefully

Meta audience syncs now recover from connection problems instead of failing silently:
  • Self-healing audiences: if the Meta audience behind a sync disappears (deleted in Ads Manager, or replaced by a reconnect), the next run recreates it automatically and continues syncing
  • Automatic pause on revoked connections: when Meta stops recognizing the connection (password change, revoked permission), the sync is paused and marked Disconnected instead of retrying forever
  • Guided reconnect: the audience sync dialog shows exactly what happened with a one-click reconnect button - reconnect, resume the sync, and it picks up on the next run
The disconnected status is also visible via the audience syncs API, CLI, and MCP. View documentation

International SMS With Cost-Weighted Credits

The SMS add-on now reaches 20+ countries beyond the US and Canada, including the UK, Ireland, most of Western and Northern Europe, Poland, Czechia, Ukraine, Australia, and New Zealand:
  • Cost-weighted credits: US/CA segments stay at 1 credit; international segments use a per-country multiplier that reflects real carrier cost, so you’re never surprised by destination pricing
  • Pricing calculator: pick a destination country and a monthly budget in Settings -> SMS to see how many messages it buys and the effective per-SMS rate, plus a full “View all country rates” table
  • Country-aware quiet hours: the 11am-8pm send window is now evaluated in the recipient country’s timezone, not just Eastern Time
  • Clear eligibility: subscriber profiles show each contact’s phone country, the credit multiplier that applies, and exactly why a contact can’t receive SMS; unsupported countries are skipped, never silently billed
  • SMS now requires a paid plan (from $19/mo)
  • Add it at upgrade: the plan upgrade dialog offers the SMS add-on under Add-ons with a volume slider - pick a monthly credit bundle (1k for $16/mo up to 75k) and buy it together with your plan. It stays a monthly charge even alongside an annual plan
  • Segment and branch on SMS reachability: new Phone Number and SMS Status segment filters, plus Has phone number and Subscribed to SMS conditions in if/else and multi-branch sequence steps
  • Skip or exit for unreachable contacts: each Send SMS step can either skip contacts who can’t receive SMS (default) or exit the sequence for them
  • At-a-glance consent in the subscriber list: the Status column shows a green phone icon when a contact has a number and a red one when they opted out of SMS
View documentation

Shipment Tracking, Browse Abandonment, and Price Drop Events for Shopify

The Shopify integration now covers the full post-purchase and browse journey:
  • Shipment events: ecommerce.order_shipped, ecommerce.order_out_for_delivery, ecommerce.order_delivered, and ecommerce.delivery_failed fire per shipment with tracking number, tracking URL, and carrier - build shipping confirmations with tracking links, and time review requests off the actual delivery instead of the order date. Reconnect your store once to grant the new read_fulfillments scope.
  • Browse abandonment: when a known subscriber views a product and doesn’t buy, start a checkout, or add it to cart within the browse window (default 2 hours), ecommerce.browse_abandoned fires with the viewed product - at most once per subscriber per day
  • Price drop alerts: when a product’s price drops by 5% or more, ecommerce.price_drop fires for everyone who viewed or carted the product in the last 30 days, with old price, new price, and percent off. If no sequence handles the event, a default price-drop email goes out automatically (active subscribers only) - build your own sequence on the trigger to replace it
  • Accurate checkout recovery: ecommerce.checkout_started now also fires from checkout updates the moment the buyer’s email is known (once per checkout), and carries abandonedCheckoutUrl plus the final cart contents
  • Honest revenue on refunds and cancellations: refunded and cancelled orders now subtract from subscriber revenue attributes (totalSpent, ltv, aov, ordersCount) and net out attributed campaign/sequence revenue
  • Live catalog: product create/update/delete webhooks keep synced products, prices, and images fresh between full syncs
  • Richer browse tracking: the storefront pixel now also captures collection views (ecommerce.collection_viewed) and searches (ecommerce.search_submitted)
  • Simple controls everywhere: tune or disable browse abandonment and price drop from the Shopify settings dialog in the dashboard, sequenzy shopify settings in the CLI, the get/update_shopify_automation_settings MCP tools, or GET/PUT /api/v1/shopify/automation-settings
  • One-click sequence templates: Shipping Confirmation, Delivered Review Request, Browse Abandonment, and Price Drop Alert templates, each pre-wired to the right trigger. Browse-abandonment and price-drop sequences automatically stop when the shopper buys the product
All new events are available as sequence triggers, sync rule triggers, and segment activity. View documentation

Evidence-Based Domain Verification

Domain verification now runs on a per-record evidence model, making statuses trustworthy and actionable.
  • A new “Misconfigured” status. When a DNS record exists but has the wrong value (a conflicting MX from an old provider, a mistyped SPF), the domain now shows “Misconfigured” with the exact record to fix - instead of a generic “Failed”. The API returns the new status as well.
  • No false alarms, structurally. A domain status only changes after repeated, confirmed observations spread over a time window. Lookup timeouts and nameserver hiccups can never demote a domain; genuinely deleted records are still caught within minutes of confirmation.
  • “Rechecking DNS records” hint. If a check sees an inconsistent answer, the domain stays verified and sending continues while Sequenzy re-confirms over the next few minutes - and the dashboard says so.
  • Smarter setup window. While you are actively adding records, the domain stays “Pending” with live per-record feedback. Waiting on the email provider never counts against your setup time.
  • Internal transition logs. Every status transition is written to the audit trail and logged in Telegram with the DNS/provider evidence that triggered it.
  • Tracking domains now follow the same verification model, including internal status-change logs.

Recurring Campaigns

Campaigns can now repeat on a schedule. Pick Every week or Every month when scheduling a campaign and Sequenzy re-sends it automatically:
  • The audience is re-evaluated at every run - new subscribers who match the list or segment are included, unsubscribed or removed ones are skipped
  • Each run appears as its own campaign with its own stats, named after the template with the run date
  • The email content is snapshotted per run, so you can keep editing the template between sends without rewriting past run history
  • Cancel the recurring campaign at any time to stop the series
Combined with product rotation (below), this powers set-and-forget monthly digests - top picks for an interest segment - that never repeat products a subscriber has already seen. View documentation

Product Rotation: Don’t Show The Same Products Every Send

Product lists in emails now rotate their content between sends, so each recipient only sees products that are new to them:
  • Recommended product lists rotate automatically - nothing to configure
  • Catalog lists can opt in with the Don’t repeat products toggle in the block’s settings
  • Purchased products stay excluded, and when a recipient has seen everything, the oldest-seen products come back so the list never renders empty

Tag Buyers By What They Bought

Sync rules on commerce events can now match the purchased products. Add a Product match condition to an Order Placed rule and tag buyers by product tag, collection, or product type - for example, tag anyone who buys a product tagged “Vinyl” as a vinyl-collector, then target that audience with its own campaigns. View documentationSync rules are also manageable programmatically now: GET/PUT /api/v1/sync-rules on the API, sequenzy sync-rules on the CLI, and get_sync_rules / update_sync_rules MCP tools. Recurring campaigns can be scheduled programmatically too, via recurringInterval on the campaign schedule endpoint, --repeat on the CLI, and schedule_campaign over MCP.

Cleaner Block Settings In The Email Editor

Every block settings panel in the email editor has been redesigned around one consistent structure, so the same controls always look and behave the same way:
  • Settings are now grouped into titled sections (Content, Layout, Style, Visibility) with clear dividers, ordered by how often you need them
  • Related controls share a row - width sliders include their unit toggle, corner radius pairs a value input with quick presets, and padding uses four clearly named inputs (Top, Right, Bottom, Left)
  • Optional settings like fixed image height or discount expiration reveal their controls only when switched on
  • Container styling (background, border, radius, padding) folds into a collapsed “Block Style” section that shows a one-line summary of what you customized, so untouched defaults no longer crowd the panel
  • The countdown deadline is now a single date-and-time picker instead of two separate fields
  • The panel is wider, so two-column rows have room to breathe

Product Images As AI References For Everyone

Generating an image in the email editor can already use one of your product photos as a reference, so the result stays faithful to your actual product. Previously this was limited to e-commerce workspaces - now any company with synced products (Shopify, WooCommerce, Stripe, or the products API) can pick a product image as the reference.We also polished the flow:
  • The product reference picker now shows a visual grid of product photos, so you pick by image instead of by name
  • Image block settings show a live preview of the current image, and a new Generate with AI shortcut opens the image dialog straight on the AI tab

Dynamic Product Lists From Your Store

Repeat blocks can now pull products straight from your synced store catalog - no merge variables needed. The block settings open with one question, What to show, and each answer is a single choice:
  • Recommended products - picked per recipient from their browsing and cart activity, then similar shoppers, then store bestsellers, then the newest in-stock products so the list never renders empty. The settings panel explains exactly how picking works, and a product never repeats within a list or across lists in the same email - even when the same product was synced twice under different ids
  • Store catalog - your catalog, sorted by newest, price, or title, with optional filters by tag, collection, vendor, product type, or price range, resolved fresh at send time
  • Hand-picked products - select exactly which products to show and in what order, with prices, images, and stock kept in sync with your store
  • Campaign list - a personalized list computed by your campaign’s rules
Recommended and catalog lists can also be fine-tuned per block:
  • Skip already-purchased products leaves out anything the recipient bought in the last year - on by default for recommendations, opt-in for catalog lists
  • Match the trigger event’s product limits the list to products related to the product on the event that triggered the email, so a browse-abandonment sequence can recommend items related to what the shopper viewed. The relation is customizable: pick which attributes must overlap (tags, collection, product type, or brand) and whether products must match any or all of them
Product lists work everywhere emails send: campaigns, sequences, A/B tests, and test emails. Filters apply per send, so an abandoned-cart sequence can always show in-stock products from a specific collection.The editor previews product lists with real products from your catalog, and new item templates (card grid, spotlight, compact rows, minimal list) let you restyle a repeated list in one click.Shopify product syncs now also capture tags, vendors, product types, and collections, which power the new filters. Re-sync your store to pick them up.View documentation

SMS & MMS Add-on

You can now send text messages to your US and Canadian subscribers with the new SMS add-on - $16/month including 1,000 message credits, with extra credit packs available whenever you need more.Enable it in Settings -> SMS and Sequenzy provisions a dedicated toll-free number for you automatically. A short verification wizard collects your business details, and once carriers approve the number (typically 1-5 business days) you’re ready to send.Add a Send SMS step to any sequence and write the message in a lightweight composer built for texting: plain text plus up to two images, merge tags for personalization, and a live counter that shows exactly how many segments - and credits - each message costs as you type.
  • Separate SMS consent - every subscriber has a phone field and an SMS consent status independent of their email status. Set consent when importing via CSV (with column mapping), through the API, or manually in the app. Consent is never inferred from a phone number alone.
  • Compliance built in - STOP and HELP keywords are handled automatically, and quiet hours keep sends inside 11am-8pm ET (from 2pm on Sundays). Messages triggered outside the window are delivered when it reopens, never dropped.
  • Click tracking - links are shortened automatically and clicks feed into your stats and revenue attribution, just like email.
  • Prepaid credits - buy credits up front, get a low-balance email alert before you run out, and top up in a click.
  • Replies land in your inbox - when a subscriber texts back, the reply is forwarded to your account email.
View documentation

More Reliable Domain Verification

Domain verification is now far more resilient, so verified domains stop flipping to “failed” because of temporary DNS hiccups.
  • No more false failures. A verified domain is only marked failed after several consecutive checks confirm the records are really gone. A DNS lookup that times out or errors no longer counts against your domain, and we recheck within minutes instead of hours whenever a check is inconclusive.
  • Delegated DNS zones now verify correctly. If your sending subdomain is hosted as its own DNS zone (for example, a separate zone for mail.yourdomain.com), our checks now query the right nameservers. These setups previously could fail verification even with correct records.
  • Sends are held, not lost. If a domain is temporarily unverified, queued emails are delayed and retried automatically for about 20 minutes instead of failing immediately - enough to ride out a brief verification blip.
  • Flexible SPF records. Your SPF record can include other providers alongside include:amazonses.com (and use -all); verification no longer requires an exact match.
  • Tracking domains work behind Cloudflare. Custom tracking domains proxied through Cloudflare (orange cloud) now verify correctly.
  • Internal verification alerts. If a verified domain loses verification, Sequenzy logs the transition internally with the record that needs attention. The dashboard banner continues to show affected domains.

API Key Permission Scopes

API keys can now be restricted to a specific set of permissions instead of always having full workspace access. Every API request checks the key’s permissions and returns a clear 403 error naming any missing scope.When creating a key - in the dashboard, through the API, the CLI (sequenzy api-keys create --preset ...), or the create_api_key MCP tool - you can pick a preset (Full access, Read-only, Safer agent access, AI drafting, Data ingest with or without automations, Transactional sender, or Marketing sender) or select custom permissions scope by scope.A few things worth knowing:
  • Existing keys are unchanged and keep full access.
  • AI agent logins now default to Safer agent access. When you approve a CLI or MCP connection, the consent screen lets you choose the key’s permissions, and the default can inspect data and draft content but cannot send live emails, delete records, manage the team, or create API keys. Pick Full access on the consent screen if your agent needs to send.
  • Live delivery is opt-in. Sending requires explicit permissions such as campaigns:send, transactional:send, sequences:activate, or automations:trigger. Keys without automations:trigger can still sync subscribers, events, and orders, but those writes will not start or continue automations, and creating subscribers that would queue a double opt-in email is rejected.
  • SMTP checks permissions too. Authenticating to the Sequenzy SMTP relay requires a company key with the transactional:send permission.
View documentation

Code In The Email Editor

You can now show code in your emails, both inline snippets and full multiline blocks, so things like coupon codes, variable names, API keys, and commands stand out clearly.For inline code, select any text and use the new Code button in the formatting toolbar, or wrap a word in single backticks (`SAVE10`).For longer snippets, add a dedicated Code block from the / insert menu (or the add-block button). It is a standalone block you can drag and reorder like any other, with a multiline editor that preserves your indentation and line breaks exactly.Code blocks support color themes - Light, Dark, Midnight, Terminal, and Solarized. Open the block’s settings panel to switch themes. Themes use plain inline colors (no syntax highlighting), so they render reliably across email clients, and the block looks identical in the editor and the delivered email.View documentation

Resend Campaigns To Non-Openers

After a campaign finishes sending, you can now resend it to everyone in the same audience who didn’t open it - a simple way to recover opens without rebuilding the audience.On a sent campaign, use the new Send to non-openers button. It shows an estimate of how many people haven’t opened yet, then creates a draft that reuses the original audience with a “didn’t open this campaign” rule added. The draft isn’t sent automatically, so you can review it and tweak the subject line before scheduling or sending.
  • Available 6 hours after the campaign finishes sending, so opens have time to register.
  • Works for any audience - all subscribers, lists, saved segments, or filtered audiences. Manual exclusions are preserved.
  • Also available via the API, CLI (sequenzy campaigns resend-to-non-openers), and MCP (resend_campaign_to_non_openers).
View documentation

Conditional Blocks Can Branch On Request And Event Variables

Conditional (if/else) blocks in the email editor can now branch on a custom variable passed in your transactional send variables or an automation event payload, not just stored subscriber fields.Add a condition, choose the new Custom variable field, and type any {{merge tag}} path - including nested paths like order.total or event.plan. Compare with equals, contains, numeric operators (>=, <=, >, <), or use “is empty” / “is not empty” to check whether the variable was provided.For example, sending with "variables": { "plan": "pro" } renders the IF branch of a plan equals pro condition and the OTHERWISE branch for everyone else - so a single template can adapt its content per request.View documentation

Raw Campaign And Sequence Event Logs

You can now inspect the raw event stream behind campaign and sequence metrics. Use it when you need to audit exactly which subscribers were delivered, opened, clicked, bounced, complained, unsubscribed, or hit delivery delays.Start with deliveries to verify recipients:
Expand the stream when you need engagement or deliverability details:
The same workflow is available from the CLI:
Agents can use the new MCP tools list_campaign_events and list_sequence_events. By default, engagement events exclude detected scanner and preview activity; pass includeMachineEngagement=true or --include-bots when you need the unfiltered raw stream.View campaign events documentationView sequence events documentation

Wait Until A Date In Sequences

Sequence Delay steps can now wait until a date pulled from the triggering event, not just a fixed number of days or hours.Turn on the Wait until a date switch in a Delay step, then point it at a property in the event payload (for example renews_at or booking.startsAt). The subscriber resumes exactly when that date arrives.
  • The date can be an ISO date string or a Unix timestamp
  • Add an optional offset to resume before or after the date, like 1 day before a renewal or 2 hours after a booking
  • Choose what happens if the date is missing or invalid: continue to the next step, or exit the sequence
  • If the resolved date is already in the past, the step continues immediately
This makes it easy to build renewal reminders, appointment follow-ups, and trial-expiry nudges that line up with each subscriber’s own dates.View documentation

Agent Auth Discovery And Current Limits

Sequenzy now publishes auth.md and OAuth discovery metadata so agents can find the supported user-approved registration flow for MCP/API access.This does not mean Sequenzy is fully agent-friendly yet. MCP, CLI, and auth discovery cover many common workflows, but some setup, billing, destructive account actions, advanced configuration, and final send decisions may still require dashboard use or explicit human review.View MCP documentation

Inbound Reply Webhook Events

Outbound webhooks can now subscribe to email.replied, so your app can react as soon as a subscriber replies to a tracked email.The event fires after Sequenzy stores the inbound reply and inbox conversation message. Its payload includes the reply ID, conversation ID, original email send context, subscriber or external ID when available, sender details, body text, HTML body, stripped reply text, attachment metadata, and received timestamp. Attachment bodies are not sent in webhook payloads.You can select email.replied from the dashboard webhook event picker, pass it through the public webhooks API, use it with the CLI, or configure it through MCP tools. It is opt-in and not part of the default webhook event set.View outbound webhook documentationView reply tracking documentation

20% Off Your First Year For New Accounts

New workspaces now get 20% off the first year of any annual plan when they upgrade within their first 5 days. Pick Yearly at checkout during the offer window and the discount is applied automatically - there is no code to enter, and the plan renews at the standard annual price after year one.This replaces the previous early-bird “+5% extra emails” bonus. Accounts that already claimed the email bonus keep it for the full 6 months; the new discount applies to upgrades going forward.We also added a one-time upgrade nudge that appears right after you activate your first sequence or send your first campaign. While the offer is live it highlights the 20% discount with a countdown, so it is easy to lock in annual pricing at the moment you are getting value. The in-app offer banner and pricing screen show the discounted first-year price up front, and the Upgrade button in the sidebar lights up with a live countdown while the offer is running so you never lose track of it.

Webflow Marketplace Install Onboarding

The Webflow Marketplace install page now gives signed-out visitors a guided Sequenzy onboarding step before OAuth. Existing users can sign in and continue, new users can create an account, and both paths keep the redirect back to the Webflow install flow so authorization can continue without losing context.The sign-in and sign-up screens also show a Webflow-specific install notice when they were opened from the marketplace flow, making it clear that the next step is authorizing Webflow form capture.View documentation

Click Metrics To Chart Them

The trends chart on the Metrics dashboard is now interactive. Click any Overview card - Emails sent, Deliverability, Open rate, Click rate, Unsub rate, Reply rate, or Revenue - to add or remove its line from the chart, so you can compare several metrics over time at once. Emails sent and Open rate are shown by default.Each card and its line share a color, the legend shows the total for every selected metric, and hovering any point lists the value and rate for each line on that day. Revenue is plotted on its own currency axis so it stays readable next to email volumes.

Backfill Existing Shopify App Merchants

Connecting a Shopify app now has a way to bring in the merchants you already have. Shopify never replays past installs, so the live webhooks only cover changes going forward - the new bulk identify endpoint lets your backend push every current merchant in one call.Each merchant is created or updated as a subscriber, gets its Shopify app attributes plus mrr and ltv, and is marked installed. You can carry the plan price and let Sequenzy derive MRR (yearly prices are normalized to monthly), or pass mrr and ltv directly for exact figures. Send up to 1000 merchants per request. The backfill never triggers automations, so seeding existing merchants will not email them.View documentation

Shared Domain Warning Before Large Sends

Sending a big campaign from a shared sending domain (one of the sequenzymail.com addresses) now prompts a heads-up before it goes out. When a campaign to more than 500 subscribers is still on a shared domain, pressing send opens a short reminder that shared domains often land in spam, with a 10-second pause before “Send anyway” unlocks and a one-click path to connect your own domain for better inbox placement.It only appears when it matters - smaller sends and campaigns already on a verified custom domain are unaffected - and you can tick Don’t show this again to dismiss it for good.Connect your domain

SMTP Settings In The Dashboard

Set up SMTP sending without leaving your workspace. Settings → SMTP now shows your full connection details - host, port, username, and encryption - each with one-click copy, plus a ready-to-paste Nodemailer example.You can generate the API key that doubles as your SMTP password right from the same screen. Click Generate API key and it is created, copied to your clipboard, and shown once so you can store it safely - no more hopping to the API Keys page mid-setup. Generating a key requires an admin role; everyone else sees the connection settings and a pointer to request one.Send with SMTP

Unsubscribe Page Now Follows Your Branding

The unsubscribe and email preferences page no longer shows the Sequenzy website header, footer, or live chat widget. Your subscribers now see a clean, standalone page with your company logo, name, and brand color applied to the controls - the save button and subscription toggles match your branding instead of Sequenzy’s.For free-tier workspaces, the page shows the same “Powered by Sequenzy” pill that appears in emails. Paid plans stay fully white-label.

Saved Signup Forms

Signup forms are now saved in your dashboard instead of living only in copied embed code. Create as many forms as you need - one per page, campaign, or audience - and manage them from Audience → Forms.What’s included:
  • Each form gets its own name and submission endpoint, with submission counts shown next to every saved form
  • Audience targeting (lists, tags) and success behavior (message or redirect) are stored server-side, so editing them in the dashboard updates forms already deployed on your website - no re-embedding needed
  • Edit, embed, or delete any saved form from the Forms screen
  • Embed forms with a one-line JavaScript snippet or full HTML
  • Plain HTML embeds set to show a success message now get a hosted confirmation page instead of raw JSON
  • Free workspaces show a small “Powered by Sequenzy” pill under embedded forms and on the hosted confirmation page. Upgrading removes it - regenerate the embed code after upgrading to drop it from forms already on your site
  • Existing deployed embeds keep working unchanged on the previous company-level endpoint
View documentation

Meta Custom Audience Sync

Push any segment to a Meta custom audience and keep it in sync automatically. Run Facebook and Instagram ads that target - or exclude - exactly the same people as your email campaigns, without exporting CSVs.What’s included:
  • Connect your Meta account in Settings → Integrations under the new Ads & Audiences section
  • Map any segment to a custom audience in one of your Meta ad accounts, with hourly, daily, or weekly refresh
  • One-click ready-made segments built for paid social: Zero LTV, No purchase in 1 year, Recent buyers, High spenders, Non-buyers, Engaged, and more - picked to match your store or SaaS setup
  • Manual “Sync now”, pause/resume, and per-sync status with last-synced counts
  • Emails are SHA-256 hashed before reaching Meta; only active subscribers are uploaded
  • Full agent-surface support: manage syncs via the API, the CLI (sequenzy audience-syncs), and MCP tools (create_audience_sync and friends)
Audiences are add-only (Meta doesn’t support removals through this integration), and Meta requires 100+ matched people before an audience is usable for delivery.View documentation

Campaign Revenue Attribution for E-Commerce Orders

See how much money a send made. Commerce orders (Shopify, WooCommerce, and the Commerce API) now feed the built-in revenue goal, and attributed conversions and revenue show up everywhere campaign and sequence stats do.What’s included:
  • Every ecommerce.order_placed event is attributed to the most recent email open or click within 24 hours (last-touch), using the order total as revenue. Repeat purchases count - unlike SaaS renewals, every placed order is a deliberate buy
  • Campaign and sequence stats now include conversions and revenueCents in the metrics API, the CLI (sequenzy stats --campaign), and the get_campaign_stats / get_sequence_stats MCP tools
  • The dashboard’s existing revenue attribution views (campaign list and detail) pick up commerce revenue automatically
  • No setup needed - this extends the default revenue goal that already tracks saas.purchase. View documentation

Segment by Purchased Product

Build segments and target campaigns by the e-commerce products a subscriber actually bought.What’s included:
  • New “Purchased Product” segment filter with bought / didn’t buy / orders at least / orders less than operators
  • Works across all commerce providers - Shopify, WooCommerce, and Commerce API orders - by matching order line items, including all your historical orders
  • Available in the dashboard segment editor (with a product picker), the segments API, the CLI (sequenzy segments create --commerce-product shopify:42), and the create_segment / update_segment MCP tools. Filter values are provider-scoped (provider:productId) so the same product ID on two providers never collides
  • Composable with every other filter, including nested AND/OR groups

Landing Page Actions For API, CLI, And MCP

Landing pages can now be managed from Sequenzy’s public API, CLI, and MCP tools, so agents and scripts can handle the same page lifecycle that exists in the dashboard.What’s included:
  • Create, list, inspect, update, publish, unpublish, and delete landing pages through /api/v1/landing-pages
  • Connect, update, and verify landing page custom domains from API, CLI, and MCP
  • New CLI commands under sequenzy landing-pages
  • New MCP tools such as create_landing_page, publish_landing_page, and connect_landing_page_domain
  • Dashboard AI Agent Setup copy now points users toward landing page workflows
View landing pages documentationView MCP documentation

Fixes for Shopify Product Currency and Description Formatting

Synced Shopify products now always use your store’s own currency. Previously, stores with multiple market currencies enabled could see prices labeled with the wrong currency (often AED) in product pickers and product blocks.Product prices now match your storefront’s default variant instead of the cheapest variant, so the price shown in emails is the same one customers see on the product page.Product descriptions imported from Shopify and WooCommerce are now converted to clean plain text. Previously, descriptions could show raw HTML tags (like <h2> and <strong>) in the email editor and in sent emails. Existing product blocks with HTML in their descriptions are cleaned up automatically when rendered - no action needed.Product blocks also gained a description length control: choose to show the full description or just the first 1-5 sentences. The full text stays saved on the block, so you can switch back anytime. The description field in block settings is now a proper multi-line editor as well.Prices and currencies refresh on the next product sync. If a product block already shows the wrong currency, re-select the product after syncing to update it.

Double Opt-In Now Covers Events, Webhooks, and Tags

Double opt-in previously applied only to contacts created through signup forms and the subscribers API. Contacts created by events - external app triggers like Tally or Cal.com, the events API, or tag operations - became active immediately and sequences sent right away.With this change, every path that creates a brand-new contact respects the workspace double opt-in setting:
  • New contacts created by events or tags are stored as pending and receive your confirmation email automatically
  • Sequences triggered by the event or tag enroll the contact but wait at the trigger step - the first email only sends after the contact confirms
  • Confirming resumes all parked sequences at once; enrollments that are never confirmed within the confirmation window are cancelled automatically
  • Events and tags are still recorded while confirmation is pending, so segments and analytics stay accurate
  • Contacts who unsubscribed earlier are never re-enrolled, and existing active contacts are unaffected
No setup changes are needed - if double opt-in is enabled, it now simply applies everywhere. View documentation

Pick Products Directly in Trigger Filters

When a sequence trigger fires on a product-aware event - order placed, checkout started, replenishment due, back in stock, or a Stripe purchase - you can now pick one or more products from your catalog instead of typing raw IDs.What’s included:
  • An “Only for products” picker on the trigger, shown for any event that carries a product. It works across all providers: Shopify, WooCommerce, Stripe, and products pushed via the Commerce API
  • Select multiple products to start the sequence when the event includes any of them
  • Searchable product list with images, provider, and product ID - and an escape hatch to enter a custom ID for products not yet synced
  • Property filter rows on product ID fields (like lineItems[].providerProductId) now use the same picker for their value instead of a free-text input
  • Order and cart events now suggest lineItems[] fields (product ID, SKU, title, variant, quantity, price) in the property path autocomplete
  • New one_of property filter operator that matches when a property equals any entry of a list (up to 50 values) - available in the dashboard, API, CLI, and MCP
  • Picker selections are scoped to the product’s platform - one platform per filter, with platform-qualified custom IDs - so a product ID from one store can never accidentally match an identically numbered product from another
  • Shopify checkout and refund events and WooCommerce cart/checkout events now include the same normalized lineItems as order events, so product filters work consistently across providers (refund events list the refunded products)
The picker writes a standard property filter, so it stays fully compatible with filters created manually, via the API, or through MCP.

Redesigned Settings Navigation

Company settings now use a grouped sidebar instead of a long row of tabs. All 16 sections are organized into five groups - General, Email & Sending, Data & Automation, Integrations & API, and Workspace - so every destination is visible at a glance and one click away.Existing links to specific settings sections keep working, and the mobile section picker is grouped the same way.

Agent-Surface Parity: Run Campaigns, Audience, Team, Inbox, and Webhooks From CLI, MCP, and API

The dashboard is no longer the only place to operate Sequenzy. You can now cancel or pause a sending campaign, manage your audience, invite teammates, triage replies, and manage outbound webhooks from the CLI, MCP tools, and the public API alike.What’s included:
  • Cancel, pause, or resume a sending campaign - resume can spread the remaining delivery over up to 72 hours - and duplicate or delete campaigns
  • Create campaign A/B tests with test percentage, duration, and winner criteria, then add or remove variants
  • Manage lists, segments, and tags fully: update and delete them, and remove subscribers from a list in bulk
  • Manually enroll up to 500 subscribers into a sequence, starting at any step
  • List your team, invite teammates as admin or viewer, and cancel pending invitations
  • List, read, and reply to inbox conversations, add internal notes, and open, close, or mark them read
  • Create, update, test, and delete outbound webhooks, inspect deliveries, and replay them - the signing secret is shown once at creation. DELETE /v1/webhooks/:id now permanently deletes the endpoint and its delivery history (it previously only disabled it); use PATCH with status: "disabled" to keep an endpoint without deleting it
Destructive CLI commands ask for confirmation and accept --yes for scripts and agents.View CLI documentationView MCP documentation

Fixed: Segment Filters on Boolean Attributes

Segment and contact filters on boolean attributes (for example isActive equals false) now match subscribers correctly. Previously these filters always returned zero results.Boolean values are now matched strictly: filtering on true or false matches boolean attribute values only, and filtering on 0 or 1 matches numeric attribute values only.

Commerce API: Connect Any E-commerce Platform

You can now connect any e-commerce platform to Sequenzy - custom checkouts, CheckoutChamp, Sticky.io, headless storefronts, or your own backend - and get the same experience as the native Shopify and WooCommerce integrations.What’s included:
  • Push your product catalog with POST /api/v1/products - products power email product blocks, replenishment reminders, and back-in-stock alerts
  • Push orders with POST /api/v1/orders - one call upserts the customer, triggers ecommerce.order_placed (or cancelled/fulfilled/refunded), updates revenue attributes (ltv, totalSpent, ordersCount, aov), and schedules replenishment
  • Track started checkouts with POST /api/v1/checkouts to power abandoned checkout automations
  • Register back-in-stock requests with POST /api/v1/back-in-stock - subscribers are notified automatically when a product upsert marks the item back in stock
  • Safe retries everywhere: pushing the same order twice never double counts revenue
  • Pass authoritative customerTotals from your platform when backfilling order history
  • Manage the catalog without code: sequenzy products upsert / sequenzy products delete in the CLI (with one-shot deliverable upload via --file), and upsert_products / delete_product MCP tools (attach_product_file also accepts a local filePath when the MCP server runs locally)
View documentation

Digital Product Delivery for Stripe Products

You can now sell digital products through any Stripe checkout and let Sequenzy deliver the file automatically after purchase.What’s included:
  • Your Stripe product catalog now syncs into Settings → Products (alongside Shopify and WooCommerce products)
  • Attach a deliverable file to any Stripe product - upload it to Sequenzy (PDF, ePub, ZIP, images, audio, video - up to 100MB) or link to an externally hosted file
  • Purchases automatically enrich the saas.purchase event with download.url and download.name, so sequence emails can link straight to the file
  • A new Only for product picker on purchase triggers starts a sequence only when a specific Stripe product is bought
  • Product-scoped triggers are also available programmatically: pass propertyFilters to POST /api/v1/sequences, the create_sequence MCP tool, or sequenzy sequences create --property-filters-json
  • The email editor suggests the download variables when building purchase sequences
  • Works with Stripe payment links and Stripe Checkout - no checkout changes required, and buyers become subscribers automatically
  • Full API support: list products, attach/remove delivery files, presigned file uploads, and catalog sync via /api/v1/products
  • CLI support: sequenzy products list, sequenzy products attach-file prod_abc --file ./guide.pdf, sequenzy products sync
  • MCP support: list_products, attach_product_file, remove_product_file, and sync_products tools
View documentation

Hosted Landing Pages

You can now create hosted landing pages in Sequenzy and route signups directly into your subscriber lists, tags, and automations.What’s included:
  • Build pages from templates for waitlists, lead magnets, launches, webinars, newsletters, demo requests, seasonal offers, agency leads, and feature announcements
  • Edit sections, blocks, images, copy, desktop/mobile previews, SEO metadata, and page-level style settings in one workspace
  • Add a native signup form with first name, last name, custom placeholders, success messaging, redirect URLs, list routing, and signup tags
  • Publish draft pages to Sequenzy-hosted URLs, then copy or preview the public link from the page list or editor
  • Connect a custom domain with CNAME verification and optional automatic Cloudflare DNS setup when available
  • Track views and leads for each page from the landing-pages list
View landing pages documentation

WooCommerce Plugin On WordPress.org

Sequenzy for WooCommerce is now available through the WordPress.org Plugin Directory.What’s included:
  • Install the WooCommerce plugin from its public WordPress.org listing
  • Keep the guided Sequenzy pairing flow from WooCommerce -> Sequenzy
  • Sync WooCommerce products, customers, guest buyers, orders, carts, and checkout activity
  • Monitor plugin connection health and run manual store syncs from Settings -> Integrations
  • Use the dashboard integration setup modal to open the WordPress.org install page instead of downloading a ZIP
View WooCommerce plugin documentation

Live Sequence Test Runs

You can now run a full sequence against one real subscriber before turning it loose.What’s included:
  • Start a Run sequence test directly from the sequence builder
  • Select one existing active subscriber so merge tags, branches, tags, lists, attributes, discounts, and webhooks use real subscriber state
  • Compress waits with speed options like 60x, 120x, 240x, and 480x, so long onboarding or recovery flows can be checked quickly
  • Send sequence emails through the test-email path with a [TEST] subject prefix while still creating normal send records for tracking and history
  • Review recent test runs in the builder, including step status, accelerated wait timing, sent-email references, and failures
  • Prevent accidental cross-sequence loops when test actions add tags or lists to the subscriber
Non-email actions run for real on the selected subscriber, so use a safe internal or test contact when checking destructive or webhook-heavy flows.View sequence documentation

Custom Reply-To Domains For Reply Tracking

Reply tracking can now use your verified sending domain instead of the shared Sequenzy inbound domain.What’s included:
  • Choose Your domain or Sequenzy for trackable reply-to addresses from Settings -> Email Tracking
  • Use branded reply addresses like reply+{id}@inbound.yourdomain.com after the inbound MX record and SES receipt rule are active
  • Fall back automatically to reply+{id}@inbound.sequenzy.com when a custom inbound route is not ready
  • Show the required inbound MX record in domain setup, including automatic DNS creation where supported
  • Register and clean up SES receipt rules for customer inbound domains as sending domains are verified or removed
  • Validate inbound reply domains before threading replies into conversations
View reply tracking documentationView domain verification guide

Sequenzy Signup For Framer

The Sequenzy Signup form is now available as a Framer component, making it easier to collect subscribers from Framer sites without copying custom embed code.What’s included:
  • A ready-to-use Framer component for email signup forms
  • Form ID, list routing, tag IDs, copy, layout, colors, radius, font size, and redirect settings in Framer’s right panel
  • Submissions sent directly to Sequenzy’s public form endpoint, with no API key required in Framer
  • Support for both component-based setup and Framer’s native Form webhook flow
Open in Framer MarketplaceView Framer documentation

WordPress Plugin On WordPress.org

Sequenzy Email Marketing is now available through the WordPress.org Plugin Directory.What’s included:
  • Install the WordPress plugin from its public WordPress.org listing
  • Keep the guided Sequenzy pairing flow from Settings -> Sequenzy
  • Sync WordPress users, profile updates, and optional comment opt-ins
  • Monitor plugin connection health from Settings -> Integrations
View WordPress plugin documentation

Circular Countdown Timers And Expired States

The countdown block gains two round styles and control over what shows after the deadline passes.What’s included:
  • Two new Circle styles: an outlined dial and a solid accent disc, each with a sweeping progress ring that empties as the days/hours/minutes/seconds tick down
  • A When expired setting that lets you either freeze the timer on 00:00:00 or replace the digits with a custom message such as “Offer expired”
  • A live preview of the expired state right in the block settings, so you can see exactly what recipients get once the timer runs out before you send
View documentation

Countdown Timers

Add a live countdown timer to any campaign or automation email to create real urgency around a deadline.What’s included:
  • A native Countdown block in the email editor, available from the block menu
  • Four styles (Boxed, Minimal, Bold, Outlined) that automatically use your brand primary color
  • Renders as a server-generated animated GIF that recalculates the time remaining on every open, so it works in Gmail, Apple Mail, and Outlook with no JavaScript or third-party service
  • Localized labels: the DAYS / HOURS / MINS / SECS labels are translated to your company’s email language automatically (Ukrainian, German, French, and 15 more), baked right into the image
  • Pick a deadline with a calendar and quick presets (Tonight, Next Monday, End of month…), choose whether to show unit labels, and optionally link the timer to your offer page
The timer counts down from the moment each recipient opens the email. Because some clients (notably Gmail’s image proxy) cache images, a re-open within a short window can briefly show a slightly stale time, but the first open is always accurate.View documentation

Dynamic Image Sources In The Email Editor

The image block’s settings panel now makes it easier to point an image at a dynamic value.What’s included:
  • A redesigned, tidier Image Settings panel with clearer source, alt text, and link sections
  • One-click “dynamic source” suggestions that prioritize subscriber attributes and fields containing an image or URL
  • Inside event-triggered sequences, the actual event payload fields are offered as {{event.*}} variables (not just a generic placeholder), so you can drop a product image or screenshot URL straight from the trigger event

Remote And Local MCP Setup In Dashboard

The existing dashboard MCP button now shows both hosted remote connector setup and local stdio setup.What’s included:
  • Copy the hosted remote MCP URL for Claude.ai, Claude mobile, and other Streamable HTTP clients
  • Follow the local stdio setup path for Claude Desktop, Claude Code, Codex, Cursor, Windsurf, and VS Code
  • Keep personal-key creation and manual local config snippets in the same MCP setup modal
  • Open the full MCP docs directly from the sidebar MCP setup flow
View MCP documentation

Remote MCP Connector For Claude

You can now connect Sequenzy to Claude.ai and Claude mobile through a hosted MCP endpoint.What’s included:
  • Add Sequenzy as a remote custom connector with https://api.sequenzy.com/v1/mcp
  • Complete the Sequenzy OAuth flow from Claude without local config files
  • Use the same MCP tools from browser and mobile clients that cannot launch a local stdio server
  • Keep company selection available across API instances through shared Redis state
  • Continue using the existing local npx -y @sequenzy/mcp setup for desktop and IDE clients
View MCP documentation

Smarter Sequence Template Picker

The sequence template picker now helps you choose what to launch next based on real subscriber data and projected impact, not just template popularity.What’s included:
  • Your next step hero recommends the highest-impact template you do not already have live, with churn and recovery sequences prioritized over low-value nurture flows
  • Projected monthly recovery is calculated from eligible subscribers, benchmark conversion, and your synced MRR or AOV (shows ? when the estimate is not ready yet)
  • Eligible counts use active, emailable subscribers only, with tooltips that explain the math and a link to view matching contacts in a new tab
  • Templates you already have running move to a dedicated Already live section at the bottom with toned-down styling
  • Template cards and the preview modal share the same layout: projection, setup time, payment requirements, and email count chips with helpful tooltips
  • The preview modal scrolls properly on both sides and drops the old fake requirements checklist and benchmark clutter
View sequence documentation

Audience-Scoped Metrics And Revenue Attribution

The Metrics page now gives you a clearer view of performance by audience, email type, and business impact.What’s included:
  • Filter dashboard metrics by all subscribers, a specific list, or a saved segment
  • Combine audience filters with campaign, transactional, sequence, or all-email views
  • See attributed revenue in the overview when your workspace has revenue-driving goals
  • Review audience-scoped delivery trends, country breakdowns, reply metrics, and core engagement rates
  • Identify list, segment, and email-type filters faster with icons in the dashboard controls
View metrics documentation

Double Opt-In For Subscriber Signups

You can now require new subscribers to confirm their email address before they become active marketing contacts.What’s included:
  • Enable double opt-in from email tracking settings after setting a default sender profile
  • Automatically create and customize the confirmation email, including the required {{DOUBLE_OPT_IN_URL}} link
  • Keep pending subscribers unsubscribed until they confirm, then add their target lists, apply signup tags, and trigger the matching automations
  • Use optInMode in the subscriber API to force double opt-in, confirm verified consent immediately, or obey the workspace setting
  • Embedded signup forms now follow the workspace double opt-in setting
View double opt-in documentation

Dark Mode For Everyone

Dark mode is now available to all users from the dashboard, without requiring an admin-only access flag.What’s included:
  • Switch between light, dark, and system theme from the dashboard sidebar
  • Use the command palette to select a theme directly
  • Theme preferences persist across sessions for every user

Matching Stop Conditions For Event Sequences

Event-triggered sequences can now stop only when the stop event matches the same object that started the sequence.What’s included:
  • Stop conditions for event-triggered sequences can match stop-event fields against the original entry event, so a sequence can stop only when the same order, product, variant, or configured field path appears again
  • Choose a matching field for stop conditions in the sequence builder when the trigger is event-based
  • Matching stop conditions keep working through draft saves and compatible trigger edits
  • Use matching stop conditions for flows such as “stop when the same order is refunded” or “stop when the same product is purchased again”
View sequence documentation

Campaign Computed Lists For Personalized Repeat Blocks

Campaigns can now store campaign-scoped data and compute per-recipient lists at send time, so repeat blocks can show subscriber-specific products, events, posts, offers, or other JSON rows.What’s included:
  • Add campaignData JSON to a campaign for reusable item sources
  • Define computedLists that filter, sort, limit, and optionally backfill rows from campaign data for each subscriber
  • Use computed list keys as repeat block sources in the campaign editor
  • Preview the computed output for an existing subscriber or inline subscriber data before sending
  • Send, test-send, duplicate, and A/B test campaigns with the same computed-list rendering path
  • Use the API and CLI to upload campaign data and computed-list definitions
View campaign update APIView computed-list preview APIView email editor guide

Subscriber Activity And Segment Accuracy

Subscriber profiles and segment filters now show more useful context and stay in sync after profile changes.What’s included:
  • Subscriber activity timelines now group related send, delivery, open, and click events together
  • Each sent-email activity item shows why the email was sent: campaign, sequence step, transactional email, or test email source
  • Subscriber attribute edits from the dashboard and API now update segment filters more reliably after save
  • Nested array custom attributes stay usable in segment filters when the underlying array values change
  • Changing a bounced subscriber to a clean new email address reactivates the subscriber and clears soft-bounce state, while changes to known bounced addresses remain blocked
  • Email HTML generation is more reliable for block emails and generated unsubscribe footers
View subscribers documentationView sequence documentation

Signup Form Targeting, Segment Templates, And RTL Editing

Embedded signup forms, predefined segments, and the HTML editor now cover more common audience and localization workflows.What’s included:
  • Signup form embeds can target selected lists and apply selected tags, with generated HTML/React snippets using the public forms endpoint
  • The public signup form endpoint now accepts lists and tags query parameters while keeping existing hidden-field formats for deployed embeds
  • Predefined segment templates now include more SaaS, ecommerce, and engagement audiences, including templates that use OR logic where it better matches the audience
  • HTML editor direction handling now supports RTL emails while preserving existing LTR rendering behavior
View signup form guideView signup form APIView subscribers documentationView email editor guide

Sequence Branching And Enrollment Controls

Sequence automation now has more precise branching and safer controls for when subscribers can enter a running sequence.What’s included:
  • Add branch paths to sequence updates, so dashboard, API, CLI, and MCP clients can edit the right path in multi-branch automations
  • Add sequence conditions for prior email link clicks and subscriber events, with link suggestions pulled from sequence emails where available
  • Add an enrollment gate that can pause new sequence entries while allowing existing active and waiting runs to continue
  • Record sequence lifecycle activity events for finished, stopped, and failed runs on subscriber profiles
  • Send sequence lifecycle events through outbound webhooks when teams subscribe to those event types
View sequence documentationView sequence update APIView outbound webhooks

External Subscriber IDs Across APIs And Integrations

Subscribers can now be matched by a customer-owned external ID across more APIs and integrations, reducing duplicate contacts when email addresses change.What’s included:
  • Create, update, find, and delete subscribers by externalId
  • Add and remove tags, trigger events, and send transactional emails using externalId when the subscriber already exists
  • Import subscriber external IDs from CSV files and show them in subscriber tables and profiles
  • Use external IDs from CLI, MCP, Zapier, and n8n workflows
  • Map Supabase webhook columns into subscriber external IDs so future updates merge into the same subscriber even when email changes
View external subscriber APIView subscribers documentationView Supabase integration

Sequence Enrollment Cancellation From API, CLI, And MCP

You can now stop active or waiting sequence enrollments from automation clients without disabling the whole sequence.What’s included:
  • Use the public API to cancel enrollments inside a required sequence
  • Target one subscriber by subscriberId, or target all matching enrollments by entry-event field values
  • Run field-value cancellation as a dry run before applying bulk changes
  • Use the same workflow from the Sequenzy CLI and MCP cancel_sequence_enrollments tool
  • Skill guidance and OpenClaw-facing docs now describe when agents should use subscriber-targeted or field-value cancellation
View API referenceView MCP documentation

Outbound Webhooks Available To Workspaces

Outbound webhooks are now available from workspace settings and the public API, so teams can send email lifecycle events to their own systems without a private access flag.What’s included:
  • Create and manage signed webhook endpoints from the dashboard
  • Use the public /v1/webhooks API to list, create, update, test, replay, and inspect webhook deliveries
  • Receive email lifecycle events for sent, delivered, delayed, bounced, complained, opened, clicked, and unsubscribed messages
  • Webhook payloads include the Sequenzy subscriber ID and, when available, the customer-owned subscriber external ID
View documentationView API reference

AI Images, HTML Import, And Website-Free Workspaces

Email creation and onboarding now work better when you need assets, existing HTML, or a workspace that does not start from a website URL.What’s included:
  • Generate AI images from inside the email image dialog, with support for brand context, product/reference uploads, and background worker processing
  • Import full HTML emails by uploading an HTML file directly into the editor
  • Create workspaces without a website URL, with template filtering and product-info setup adapted for website-free companies
  • Show a clearer landing-pages waitlist experience for workspaces waiting on hosted landing page tools
View email editor guide

Repeat Blocks For Dynamic Email Content

The email editor can now repeat a group of blocks for each item in a list, making product grids, event lists, recommendations, and transactional line items easier to build.What’s included:
  • Add repeat email blocks that render collections from subscriber attributes, event data, transactional variables, and preview data
  • Add repeat grid layouts for multi-column repeated content in the editor, preview, test sends, and sent email HTML
  • Add repeat-block variable helpers and preview data tools so nested item variables are easier to inspect before sending
  • Use repeat blocks in campaigns, transactional emails, sequence emails, and test sends through the same rendering path
View email editor guideView transactional emails

Test Email Sending Safeguards

Test emails now behave more like a deliberate review step, with clearer recipients and stronger checks before anything leaves Sequenzy.What’s included:
  • Test emails now require explicit recipients, carry source metadata, and are accounted for consistently across campaign, sequence, and transactional flows
  • Transactional test sends run through stronger phishing-guard checks before sending
  • Test-send activity now carries enough context to distinguish campaign, sequence, and transactional previews
  • Domain setup checks are stricter before test emails use a sending domain
View campaign documentationView domain setup guide
You can now route email tracking through your own verified tracking domain, with safer shared fallbacks that avoid sending recipients through sequenzy.com or api.sequenzy.com.What’s included:
  • Custom tracking domains can be connected with a CNAME and verified against Sequenzy’s managed tracking target
  • Click, open, unsubscribe, and Sequenzy branding links use the customer’s verified tracking domain when one is configured
  • Emails sent from shared sequenzymail* sender domains use matching shared tracking hosts where available
  • Emails without a custom tracking domain fall back to sequenzylink.com instead of direct sequenzy.com tracking links
  • Existing sent-email tracking links remain accepted, so older campaigns keep working while new sends use the updated routing
View documentationView domain setup guide

Managed Replies, Regional Sending, And Pause Controls

Reply routing and deliverability controls are more visible and reliable across campaigns, sequences, and managed sending domains.What’s included:
  • Accept inbound mail for managed domains so replies can be routed through Sequenzy-owned infrastructure
  • Forward replies sent to system domains back to the configured destination inbox
  • Automation sends now use tracked reply-to routing where available, so sequence replies are recoverable like campaign replies
  • SES sending now routes by the sending domain’s configured region, including region-aware system domains
  • Admins can manage company sending limits and see pause metadata for campaigns and sequences
  • Campaigns and sequences now show clearer pause reasons and pause sources in dashboard lists and detail screens
  • Paused send failures are hidden from failed views, and paused sequence sends are treated as queued instead of failed
  • Company-specific sender health thresholds can override the default bounce, complaint, and pause policy settings
View campaign documentationView sequence documentationView domain setup guide

Transactional Email APIs

Transactional emails now have broader public API and MCP coverage, so teams can manage templates without using only the dashboard.What’s included:
  • Create transactional emails through the public API and MCP tools
  • List, retrieve, and update transactional emails through the public API and MCP tools
  • Update transactional names, slugs, sender profiles, reply profiles, templates, and enabled state through the API
  • Use the same transactional management workflows from automation clients through MCP
View transactional email documentationView transactional create APIView transactional update API

Subscriber Attribute Editing And Segment Updates

Subscriber profile editing is more complete in the dashboard, and saved changes become usable in segment filters without extra manual work.What’s included:
  • Subscriber attribute changes from dashboard edits, imports, webhooks, and payment syncs now update segment filtering in the background
  • Add custom attribute creation and JSON editing tools on subscriber profiles
  • Add manual subscriber refresh controls and clearer import progress handling
View subscriber documentation

Bulk Subscriber Imports And Locked Discounts

Admins can import subscribers in larger batches, and Stripe discount actions can create codes locked to individual subscribers.What’s included:
  • Allow company admins to run bulk subscriber imports
  • Add subscriber-locked Stripe discounts for one-code-per-subscriber discount workflows
View subscriber documentationView Stripe integration

Longer Campaign Spread Windows

You can now spread campaign sends over a configurable 1-72 hour window, giving larger campaigns and warmup sends more room to pace delivery.What’s included:
  • Campaign scheduling now supports spread durations up to 72 hours
  • Resume controls accept the same 1-72 hour spread range for paused campaigns
  • The campaign wizard slider now exposes the expanded spread window
View documentation

Commerce Product Automations, Back-In-Stock, And Subscriber Revenue Cleanup

Commerce workflows now carry product context end to end, from synced store products to sequence stop conditions and subscriber profiles.What’s included:
  • Shopify products now sync with variants, stock state, images, URLs, pricing, and replenishment settings
  • Shopify reconnects now verify the actual granted OAuth scopes before reusing a saved token, so stores missing product/order permissions are prompted to reconnect
  • Product-level replenishment reminders can queue after Shopify and WooCommerce purchases, with product-level or variant-level matching
  • Replenishment reminder jobs are skipped if the subscriber repurchases the same product before the reminder is due
  • Sequences triggered by ecommerce.replenishment_due now default to stopping when the same product is purchased again
  • The Shopify Notify Me storefront block captures back-in-stock requests, and product sync triggers ecommerce.back_in_stock when matching variants return to stock
  • Sequences triggered by ecommerce.back_in_stock now default to stopping when the same item is purchased or goes out of stock again
  • Back-in-stock and replenishment matching now documents the product fields Sequenzy checks: provider, providerProductId, providerVariantId, lineItems[].providerProductId, and lineItems[].providerVariantId
  • Event-triggered sequences now support matching_field enrollment with enrollmentFieldPath, so you can block duplicate active runs for the same subscriber and event field value while still allowing separate runs for different products, variants, orders, or other event-scoped objects
  • The dashboard suggests matching field paths from recent trigger event payloads, and the same field is available through the public API, CLI, and MCP create_sequence / update_sequence tools
  • Subscriber profiles now show purchased products from Shopify/WooCommerce order line items alongside Stripe purchased products
  • Subscriber tables now show AOV from aov or legacy averageOrderValue
  • Legacy duplicate commerce attributes are cleaned up in the UI: totalRevenue is treated as an ltv fallback, and averageOrderValue is treated as an aov fallback
  • Dynamic product previews now handle event-scoped product variables, so product blocks backed by event.product can still be previewed with sample products
  • Product settings now show pending replenishment recipients in a denser list, and known subscribers open directly from that list
View documentationView documentationView documentationView documentationView documentationView documentation

Dynamic Stripe And Shopify Discount Actions In Sequences, API, CLI, And MCP

Sequences can now create subscriber-specific Stripe and Shopify discount codes before sending follow-up emails, and the same explicit-step workflow is available from the dashboard, public API, CLI, and MCP tools.What’s included:
  • A new Create Discount sequence action that creates dynamic Stripe coupons/promotion codes or Shopify discount codes during automation runs
  • Discount context merge tags like {{discount.code}}, {{discount.percentOff}}, and {{discount.expiresAt}} for later emails in the same sequence
  • Public sequence creation now accepts explicit create_discount steps alongside email steps
  • MCP create_sequence and CLI sequenzy sequences create --steps-file now document and pass through discount action steps
  • Sequence activation now blocks discount workflows until the selected provider is connected, so codes cannot fail at send time because the provider is missing
  • Discount expiration dates are validated across the builder and worker so past dates are rejected before unusable codes are created
  • Expiration can be set as a relative duration (expiresInHours) so flows like “valid for 48 hours” restart per enrolled subscriber, alongside the existing absolute expiresAt date
View documentationView documentationView documentationView documentation

Nested Segment Logic, Event Filters, And Segment Filters

Segments can now express nested AND/OR logic, custom subscriber event conditions, and saved-segment composition.What’s included:
  • Nested filter groups for rules like last_login within 90 days AND (plan_end is empty OR plan_end is before today)
  • Custom event filters such as saas.purchase:30d, saas.purchase:all, and saas.purchase:5:30d
  • Segment filters that reference another saved segment by ID, with cycle and depth guards during evaluation
  • Existing flat segment filters remain supported and continue to use the legacy wire shape unless nested logic, event filters, or segment filters are used
  • Dashboard, public API, CLI, and MCP surfaces now accept the v2 root filter shape
  • Subscriber filters now include is_empty and is_not_empty operators for attributes and other nullable fields
View documentationView documentationView documentation

AI Generation Across API, CLI, And MCP

You can now generate draft email content, sequence email drafts, and subject line variants from prompts through Sequenzy’s public API, CLI, and MCP tools.What’s included:
  • New generation endpoints for draft emails, sequence content, and subject line ideas
  • sequenzy generate email, sequenzy generate sequence, and sequenzy generate subjects now return real generated content instead of placeholder messages
  • Campaign creation now supports --prompt, with generated blocks used when available so the draft remains editor-compatible
  • MCP campaign creation can generate prompt-based campaign content before creating the draft campaign
  • /v1 remains accepted as a backwards-compatible alias for /api/v1
  • Generated sequences are capped at 10 emails across the API, CLI, and MCP surfaces
View documentationView documentationView documentationView documentationView documentation

Supabase Auth Emails Through Sequenzy SMTP

You can now route Supabase Auth emails through Sequenzy SMTP and provision the matching transactional templates from the Supabase integration flow.What’s included:
  • One-click creation of the default Supabase auth transactional templates from the integration modal
  • SMTP JSON payload support for selecting a Sequenzy transactional email by slug or transactionalId
  • Support for both variables and dataVariables in SMTP template payloads
  • Automatic shared-domain sender provisioning when Supabase defaults need a send-ready sender profile
  • Updated setup guidance for mapping Supabase template variables to Sequenzy merge tags
View documentationView documentation

Campaign-Specific Engagement Filters

Segments and recipient filters can now target specific sent campaigns instead of only rolling time windows, so you can build rules like “bounced Campaign A but did not bounce Campaign B” without any workarounds.What’s included:
  • Engagement filters (emailSent, emailOpened, emailClicked, emailBounced, emailComplained) now accept a specific sent campaign as the value, in addition to the existing 7/30/90/180 day windows
  • The dashboard value picker now groups rolling time windows and individual campaigns into separate sections so each option is obvious
  • Filter pills now render campaign-scoped conditions naturally (bounced in "Welcome email" instead of a generic chip)
  • The AI filter builder understands phrases like “bounced the welcome email but not the onboarding email” and resolves the campaign names against your sent campaigns
  • sequenzy segments create --filter-json accepts {"field":"emailBounced","operator":"is","value":"campaign:<campaign_id>"} for all engagement fields
  • MCP create_segment documents the same campaign:<campaign_id> value format for engagement filters
View documentationView documentationView documentation

Target Specific Lists from the Stripe Integration

You can now choose which lists newly-synced Stripe subscribers join. The default is “all lists” for both the webhook and the backfill revenue sync, so the two paths stay consistent.What’s included:
  • New Lists for new subscribers section in the Stripe authorize screen, with an “All lists” (default) or “Specific lists” picker
  • Stripe webhook-driven subscriber creation honors the configured lists
  • Stripe revenue sync honors the configured lists when creating new subscribers
  • Existing subscribers are never re-added to or removed from lists by Stripe sync
Heads-up for existing integrations: Previously, the Stripe revenue backfill created new subscribers without adding them to any list, while the webhook path added them to every list. Both now use the same “all lists” default. If you re-run the revenue sync and don’t want new Stripe customers added to every list, open the Stripe authorize screen and pick “Specific lists” (selecting none is equivalent to the old backfill behavior).View documentation

OR Segments And Clearer Recipient Counts

Saved segments can now match either all filters or any filter, and the product now makes it clearer when a count includes every matched contact versus only active subscribers who can actually receive a campaign.What’s included:
  • Saved segments now support both AND and OR filter logic across the dashboard, API surfaces, CLI, and MCP
  • sequenzy segments create now supports --match any for OR-based segments
  • MCP create_segment now documents filterJoinOperator: "or" for match-any segments
  • Segment views now distinguish total matched contacts from active subscribers
  • Campaign recipient selection now uses the active subscriber count for saved segments, so the estimate lines up with who will actually be sent
View documentationView documentationView documentation

Conditional Email Content In The Editor, CLI, And MCP

You can now show or hide individual email blocks based on recipient data, and the same conditional block content now works across the dashboard editor, send pipeline, CLI, and MCP tools.What’s included:
  • A new Conditional Display control in the email editor so blocks can render only when a merge-tag value matches a rule
  • Support for conditions like equals, contains, exists, and numeric comparisons
  • Preview and send-time evaluation using the recipient’s real merge-tag data
  • sequenzy campaigns create|update and sequenzy templates create|update now accept --blocks-json and --blocks-file
  • MCP create_campaign, update_campaign, create_template, and update_template now accept blocks payloads for editor-compatible content
  • Updated API docs for draft campaign updates when using block payloads
View documentationView documentationView documentationView documentation

Default Reply-To Across Campaign Setup

You can now manage default reply-to behavior more directly when working with campaigns, including from the API, CLI, and MCP tools.What’s included:
  • New campaigns created through the MCP API now inherit your company’s default reply profile automatically
  • PUT /api/v1/campaigns/{campaignId} now lets you update a draft campaign’s reply-to using either a reply profile ID or an existing reply profile email
  • sequenzy campaigns update now supports --reply-to and --reply-profile for draft campaigns
  • The MCP update_campaign tool now exposes the same reply-to fields and validates unsupported combinations before sending the request
  • Creating a new reply profile from the dashboard can now make it the company default and immediately apply it in campaign and transactional editors
View documentationView documentationView documentation

Dashboard Assistant Follow-Ups

The dashboard assistant is now better at ongoing conversations instead of acting like a one-shot shortcut box.What’s included:
  • Context-aware starter prompts during onboarding, including questions like What do I start with? and How can I add more about my company?
  • Dashboard prompts focused on review and next actions, including Tell me what happened last week
  • Scoped performance prompts like Show my top performing sequence and best-campaign style questions now return the actual sequence or campaign instead of company-wide totals
  • A floating follow-up chat that opens when you continue the conversation, so you can keep asking for explanation or next steps without losing context
  • Product-info guidance inside the assistant, so it can point you to the right settings when your company context is thin
View documentationView documentation

CLI And MCP Errors Now Explain The Fix

CLI and MCP failures now return more useful recovery guidance instead of short raw error strings.What’s included:
  • Human-readable failure descriptions for common auth, network, input, permission, and rate-limit issues
  • Concrete next-step guidance in the returned error text so agents can retry with the right fix
  • Direct docs.sequenzy.com links in CLI and MCP error output for faster self-recovery
  • MCP tool failures are now explicitly marked as errors with isError: true
View documentationView documentation
You can now log in to the Sequenzy CLI from headless terminals and agent shells without relying on the CLI to launch a browser window.What’s included:
  • sequenzy login now prints the approval URL directly in the terminal
  • The CLI also shows the approval code so you can verify the right session before approving it
  • The login command keeps waiting in the terminal until approval is completed and the API key is stored locally
  • A smoother authentication flow for remote shells, AI agents, and other environments where browser launching is unreliable
View documentation

Ask The Dashboard To Do It

You can now use the expandable AI workspace on the onboarding screen and dashboard landing page to ask for metrics or trigger common setup actions in plain English.What’s included:
  • Ask questions like What are my metrics for last 30d? and get a live summary without leaving the dashboard
  • Type requests like Create a welcome sequence to open a matching starter flow directly in the sequence builder
  • Use natural-language shortcuts for campaign creation and subscriber import from the same box
  • Get the same assistant entry point during onboarding, so you can move from first login to first action faster
View documentationView documentation

Expanded Email Provider Coverage

Email provider detection now recognizes a much broader mix of mailbox providers, including regional consumer inboxes and hosted business platforms.What’s included:
  • More provider buckets for regional mailbox hosts such as UKR.NET, Seznam, GMX, Onet, Interia, Bluewin, Telenet, and others
  • More hosted-provider MX detection for providers such as Rackspace, Amazon WorkMail, OVH, and Titan
  • Updated provider labels in filters so buckets like iCloud and Custom domain read more naturally in the UI
  • The same background detection and ClickHouse-backed filtering model, now with broader provider coverage
View documentation

Filter Subscribers By Email Provider

You can now filter subscribers by their email provider, including Google, Microsoft, Yahoo, iCloud, Proton, and other major mailbox hosts.What’s included:
  • A new Email Provider filter in subscriber and segment builders
  • Background detection for new subscribers and touched existing subscribers without blocking imports or API writes
  • Canonical provider grouping so Gmail and Google Workspace are both treated as Google, and Outlook/Hotmail/Microsoft 365 are treated as Microsoft
  • Provider values synced to ClickHouse for fast segment filtering
View documentation

Adjustable Email Container Padding

You can now adjust the full email container padding directly from the theme controls, including reducing the side gutter all the way to 0px.What’s included:
  • Horizontal padding and Vertical padding sliders in the Spacing section of Email Themes
  • Support for both company-wide default themes and per-email theme overrides
  • Matching padding in the editor canvas, preview output, and sent email HTML
  • An easier way to make emails feel less cramped on mobile without changing the content itself
View documentation

Event Properties In Sequence Emails

You can now personalize sequence emails with properties from the event that started the automation.What’s included:
  • Use merge tags like {{event.city}} or {{event.alert.maxSpeed}} inside sequence emails
  • Event properties are stored on the sequence run, so later emails in the same sequence keep using the original event snapshot
  • Automation test emails now accept event preview values so you can verify the output before activating the sequence
  • Event property variables are shown in the email preview panel once you add them to your template
View documentationView documentation

Public And Private Subscriber Lists

You can now choose whether a subscriber list is public or private when you create it.What’s included:
  • Public list names appear in individual controls on the hosted subscriber email preferences/unsubscribe page. Descriptions also appeared at launch; since September 1, 2026, they remain internal workspace metadata.
  • Private lists stay internal and are omitted from those individual controls
  • New companies still get Product Subscribers and Newsletter Subscribers by default, and both are created as public lists
  • Public-list copy in the create-list dialog now warns you to use subscriber-friendly names
View documentation

Sequence Steps Can Now Update Subscriber Lists

You can now add sequence steps that place a subscriber into a list or remove them from a list without leaving the automation builder.What’s included:
  • A new Update Lists step in sequences with Add to List and Remove from List modes
  • List-aware sequence actions in the visual builder and worker runtime
  • Support for using subscriber lists as sequence routing primitives, not just trigger conditions
  • Add-to-list actions now respect the target list membership state instead of duplicating active memberships
View documentation

Advanced Sender Routing

You can now separate the visible From address from the routing domain Sequenzy uses behind the scenes directly in sender profile settings.What’s included:
  • Sender profiles can keep a visible From address on one verified domain and route through another verified sending domain in the same workspace
  • Dedicated IP selection now follows the routing domain instead of inferring it from the visible sender address
  • Campaigns, sequences, transactional emails, test sends, and forwarded replies all use the same authenticated-domain routing behavior
  • Review screens show a subtle via your-domain.com hint only when visible sender and routing domain differ
View documentation

Dedicated IP Routing For Sending Domains

You can now see dedicated IPs in Settings -> Domain, track whether each one is still pending or ready, and connect a ready IP to one or multiple sending domains.What’s included:
  • A dedicated IP management section inside domain settings
  • Dedicated IP status visibility so pending purchases can appear before SES setup is finished
  • Multi-domain assignment so one dedicated IP can power several sending domains
  • Ready-only assignment so pending IPs stay visible but cannot be attached yet
  • Domain detail pages now show when a domain is already routed through a dedicated IP
View documentation

Stripe Product Segments In CLI And MCP

You can now create Stripe-product subscriber segments directly from the Sequenzy CLI, and MCP now documents the exact filter shape for Stripe purchase-based segments.What’s included:
  • sequenzy segments list, sequenzy segments count, and sequenzy segments create
  • Native CLI flags for Stripe product filters like “bought”, “didn’t buy”, and payment thresholds
  • Explicit MCP create_segment guidance for stripeProduct filters
  • Updated CLI and MCP docs so the Stripe-product segment workflow is discoverable
View documentationView documentation

Stripe Sync Setup Controls

Stripe now gives you one more setup step after authorization so you can decide exactly which Stripe customers should sync into Sequenzy.What’s included:
  • Choose which Stripe products count for customer sync
  • Optionally keep syncing users who have not made any payment yet
  • Pick which synced products are allowed to drive webhook-based updates
  • Select extra customer or subscription metadata keys to carry into subscriber attributes
  • Reopen these settings any time from the gear icon in Settings -> Integrations
Stripe integration documentation

WordPress And WooCommerce Integrations

You can now connect WordPress sites and WooCommerce stores to Sequenzy from Settings -> Integrations.What’s included:
  • A new WordPress integration for syncing users, profile updates, and optional comment opt-ins
  • A new WooCommerce integration for syncing products, customers, guest buyers, orders, and recovery events
  • Install, connect, reconnect, disconnect, and sync controls in Settings -> Integrations
  • Automatic initial sync after connection for both integrations
Both integrations are currently in beta.WordPress integration documentationWooCommerce integration documentation

Company And Per-Email Theme Controls

You can now customize the visual system behind your emails at both the company and single-email level.What’s included:
  • Company-wide email themes that set the default look for all emails
  • Per-email theme overrides with a reset option to inherit the company theme again
  • Built-in starting presets: Default, Soft, Editorial, and Bold
  • Controls for typography, spacing, radius, content width, padding, and core email colors
  • Send-time rendering that uses the saved theme across campaigns, automations, transactional emails, and test sends
View documentation

Event And Tag Trigger Visibility

You can now see which contacts received each event or tag in the last 24 hours, and which sequences those triggers feed into.What’s included:
  • Event settings now show a last-24-hour contact count for each event
  • Tag settings now show a last-24-hour contact count for each tag that was added
  • Both settings pages now show which active sequences currently listen for that event or tag
  • Paused sequences are shown separately so you can spot flows that would trigger if reactivated
  • Subscriber activity now shows which sequence an event or added tag triggered, or would have triggered if the sequence is paused
Events documentationTags documentation

Reusable Email Components

You can now save blocks or full block sections from the email editor as reusable components, then insert them again in other emails without rebuilding them from scratch.What’s included:
  • Save a selected block as a reusable component from the Components sidebar
  • Save a top-level section made of multiple adjacent blocks
  • Reuse saved components from the sidebar, the inline add-block menu, or drag and drop
  • Generate a reusable component with AI from a prompt and save it straight into your library
  • Saved components reuse the same block system as the editor, so they stay editable after insertion
View documentation

Free AI HTML Email Builder

A free tool for generating responsive HTML emails with AI chat, live preview, and code export - no account required.What’s included:
  • AI chat that drafts subject lines, preview text, and email-safe HTML from a prompt, URL, or screenshot
  • Block-based design editor with slash commands (type ”/” to insert blocks)
  • Live preview tab with desktop and mobile width toggle
  • Editable HTML tab for direct code changes
  • Drag-and-drop component sidebar with typography, media, buttons, layout, and footer blocks
  • Copy and download actions for the final HTML output
Try it free

Custom HTML Blocks In The Email Editor

You can now insert a dedicated HTML block directly inside the visual email editor when you need to drop in custom markup without leaving the block workflow.What’s included:
  • A new HTML block in the component picker and slash-command menu
  • Inline code editing directly on the canvas, with a live preview below it
  • Matching render behavior in the editor preview and sent emails
  • Support for merge tags like {{FIRST_NAME}} inside your custom HTML snippets
  • Existing full-email HTML import mode remains available for complete HTML documents
View documentation

Multi-Language Email Localization

You can now configure extra email locales at the company level, keep localized variants per template, and have Sequenzy pick the right language for each subscriber at send time.What’s included:
  • Company-level localization settings for supported locales, fallback locale, subscriber attribute mapping, and raw value mappings
  • Per-template localized variants with sync status tracking for synced, stale, syncing, and failed
  • AI-powered sync from your primary language into the extra locales you support
  • Send-time locale resolution across campaigns, automations, transactional template sends, and A/B test variants
  • Read-only localization visibility in both CLI and MCP for company settings and template variants
View documentation

Update Tags Action In Sequences

You can now add tag-management steps directly inside sequences from a single Update Tags action in the builder.What’s included:
  • A new Update Tags step in the add-step menu
  • An in-step selector to choose whether the step should add a tag or remove one
  • Full support for editing existing tag steps after they are added
  • Runtime execution for both add-tag and remove-tag actions when contacts move through a sequence
View documentation

Installable Sequenzy Skills

You can now install a versioned Sequenzy skill for AI agents from the public Sequenzy/skills repo.What’s included:
  • A reusable sequenzy-email-marketing skill you can install with npx skills add Sequenzy/skills --skill sequenzy-email-marketing
  • Guidance for authentication, stats, subscriber management, and transactional email workflows
  • Clear notes on current CLI gaps so agents fall back to the dashboard or API when needed
  • A dedicated skills repo that can grow with more Sequenzy-specific agent workflows over time
View documentationBrowse the repo

Reliable Natural-Language Date Filters

Subscriber and segment date filters now use validated ISO dates and full natural-language parsing instead of compact shorthand values.What’s included:
  • Built-in Added filter presets now use plain-English values like 7 days ago and 30 days ago
  • Fixed dates like 2026-03-01 still work and are validated before use
  • Natural-language expressions like last week, today, and 3 days from now stay supported
  • Unsupported shorthand inputs like 7d and 24h are no longer part of the date-filter contract
View documentation

Natural-Language Date Filters

You can now use rolling phrases like 30 days ago and fixed dates like 2026-03-01 directly in subscriber and segment filters.What’s included:
  • Rolling date expressions like 7d, 30 days ago, and 3 days from now
  • Fixed date values like 2026-03-01 and Mar 1 2026
  • Clear rolling-vs-fixed behavior: relative phrases re-evaluate over time, fixed dates stay fixed
  • Date-aware custom attribute comparisons that accept the same date formats
View documentation

Date-Aware Subscriber Attribute Filters

You can now segment subscribers using custom attributes that contain dates or full timestamps, including ISO datetime values like 2026-03-19T10:56:03+00:00.What’s included:
  • Date-only custom attributes like 2026-03-20 are normalized for range filters
  • Full ISO datetime strings with offsets are supported for segment comparisons
  • Exact-match and range filters now use intentional date parsing instead of partial numeric coercion
  • Existing string and numeric attribute filters continue to work as before
View documentation

Segment Triggers In MCP Sequences

You can now create sequences through MCP with the same saved-segment entry trigger available in the app.What’s included:
  • create_sequence now accepts trigger: "segment_entered"
  • You can pass a segmentId from your saved segments
  • MCP resolves the segment name automatically so the created sequence is labeled correctly
  • This works for both AI-generated sequence creation and explicit-step sequence creation
View documentation

Segment Exit Stops For Sequences

You can now optionally stop a segment-triggered sequence when a contact no longer matches that segment.What’s included:
  • A new per-sequence setting on the Segment entered trigger
  • Automatic cancellation of active and waiting steps when the contact leaves the triggering segment
  • The same 8-minute fallback segment evaluation used for enrollments, so exits stay in sync with entries
  • No change to baseline behavior for current segment members when you first activate the sequence
View documentation

Segment-Entered Sequence Triggers

You can now start a sequence when a contact newly enters one of your saved segments.What’s included:
  • A new Segment entered trigger in the sequence builder
  • Automatic evaluation after relevant subscriber data changes, plus a background check every 8 minutes
  • Safe baseline behavior so existing segment members are not enrolled when you first activate a sequence
  • Automatic re-baselining when you change the segment definition or reactivate the sequence
  • Manual Enroll Existing Subscribers support when you do want to send the sequence to current segment members
This makes lifecycle automations like VIP onboarding, trial qualification, and at-risk follow-up much easier to build without relying on extra tags.View documentation

Flexible Campaign Delivery Planning

You can now choose campaign start time and delivery strategy separately. This means you can schedule a campaign for a future date and still spread delivery over 1-24 hours, instead of choosing between those options.What’s included:
  • Separate controls for when sending starts and how delivery is paced
  • Scheduled + spread delivery support in the campaign wizard
  • A clearer delivery summary during setup and review
  • Existing Send Time Optimization support for both immediate and scheduled starts
  • Warmup recommendations that now suggest spread without forcing immediate send
View documentation
You can now define account-level UTM templates and have Sequenzy append them automatically when email HTML is generated.What’s included:
  • Account-level defaults for utm_source, utm_medium, utm_campaign, utm_content, and utm_term
  • Template variables like {{email.subject}}, {{link.text}}, and {{company.name}}
  • Per-link manual override from the email editor when a URL should stay untouched
  • Automatic exclusions for unsubscribe, preferences, social, and legal links
  • Consistent tagging across buttons, rich-text links, image links, CTA blocks, and product links
View documentation

Delivery Delay Tracking

You can now see delivery delay metrics in your dashboard. When email delivery is temporarily delayed, Sequenzy tracks these events and surfaces them in the metrics section.What’s included:
  • Delivery delay rate shown as a percentage of total emails sent
  • Raw count of delayed emails
  • Visual progress bar for quick assessment
  • Only displayed when delays are detected, keeping your dashboard clean
Delivery delays are informational — delivery will continue to be retried automatically. Monitoring delays helps you identify potential deliverability issues early.

Shopify Integration

Connect your Shopify store to Sequenzy and automatically sync customers, products, and order events.What’s included:
  • One-click OAuth setup — Connect your Shopify store from Settings → Integrations
  • Automatic customer sync — Subscribed customers are imported with their order history and spend data
  • Product catalog sync — Products are synced and available as drag-and-drop email blocks in the editor
  • Real-time webhooks — Order placed, cancelled, fulfilled, refunded, customer created, and checkout started events are tracked automatically
  • E-commerce tags and sync rules — Built-in ecommerce.customer tag is auto-applied on first purchase, lead tag on customer creation, and refunded tag on refunds
  • Product email blocks — New Commerce category in the editor with small, medium, and large product card layouts
Requirements: Shopify store with an active plan. Set SHOPIFY_API_KEY and SHOPIFY_API_SECRET environment variables.

Enroll Subscribers at a Specific Step

You can now enroll subscribers at any step in a sequence — not just the beginning. This is especially useful when you add new steps to an existing sequence and want finished subscribers to continue from the new step.How it works:
  • Hover over any action node in the sequence editor and click the Enroll button
  • Choose from finished subscribers or search for any subscriber by email
  • Subscribers who already passed the selected step are automatically filtered out
  • Selected subscribers start processing from that step, skipping all previous steps
Use case: You have a 3-step welcome sequence that 50 subscribers completed. You add steps 4 and 5. Instead of restarting everyone from step 1, enroll them at step 4 — they’ll only receive the new emails.View documentation

Simpler Domain Setup

Domain verification now requires only 3 DNS records instead of 5. We replaced the previous DKIM approach (3 CNAME records) with a single TXT record, making setup faster and less error-prone.What changed:
  • DKIM: 1 TXT record instead of 3 CNAME records
  • SPF: 1 TXT record (unchanged)
  • MX: 1 MX record (unchanged)
  • Total: 3 records instead of 5

Send Emails Without a Custom Domain

You can now start sending emails immediately using the built-in sequenzymail.com domain — no DNS setup required. Every account gets a subdomain like yourcompany.sequenzymail.com automatically.Good for:
  • Testing your email flows before going live
  • Quick experiments and prototyping
  • Non-essential communication where inbox placement isn’t critical
Keep in mind: The shared domain’s reputation is shared across all users, so emails may land in spam. For best deliverability, set up a custom domain — which is now easier than ever with only 3 DNS records.View domain setup guide

Spread Over Time Campaign Delivery

You can now spread campaign sends over a configurable time window (1–24 hours) to protect your sender reputation. Instead of delivering all emails at once, Sequenzy distributes them linearly — the first batch sends immediately, with remaining batches spaced evenly across the window.Key features:
  • Choose “Spread over time” as a delivery option in the campaign schedule step
  • Configure the delivery window from 1 to 24 hours using a slider
  • Automatic warmup recommendation for accounts that have sent fewer than 10,000 emails and are targeting 1,000+ recipients
  • Spread and Send Time Optimization are mutually exclusive — enabling one disables the other
When to use it:
  • Warming up a new sending domain
  • Sending to large lists for the first time
  • Maintaining consistent deliverability with large campaigns
View documentation

Email Analytics API

You can now retrieve email engagement metrics via the API. Get totals for sends, deliveries, opens, clicks, and bounces across any time period — perfect for dashboards, reports, and syncing to external tools.Endpoints:
  • GET /api/v1/metrics — Account-wide metrics
  • GET /api/v1/metrics/campaigns/:campaignId — Per-campaign metrics
  • GET /api/v1/metrics/sequences/:sequenceId — Per-sequence metrics with per-step breakdown
  • GET /api/v1/metrics/recipients — Per-recipient engagement data (opens, clicks, unsubscribes)
Key features:
  • Aggregated totals: sends, deliveries, unique opens, unique clicks, unsubscribes
  • Calculated rates: delivery rate, open rate, click rate, unsubscribe rate
  • Sequence step-by-step breakdown to identify drop-off points
  • Recipient-level engagement for CRM sync and support lookups
  • Filter by sliding window (1h, 24h, 7d, 30d, 90d) or custom date range
View documentation

HTML Email Import/Export

The email editor now supports importing and exporting raw HTML templates. Switch to HTML mode to paste existing email templates or export your designs as HTML for use in other tools.
  • Import: Paste HTML from any email builder and it converts to editable blocks
  • Export: Download your email as clean HTML
  • HTML block: A new block type for embedding raw HTML directly in your emails

Email Management in Sequence Builder

You can now manage your email templates directly from the sequence builder:
  • Filter emails: Toggle between used and unused emails to keep your workspace clean
  • Delete unused emails: Remove emails that aren’t referenced by any sequence step
  • Usage protection: Emails in use by sequence nodes or A/B tests cannot be deleted

Subscriber Filters Persist on Navigation

Subscriber list filters (search, sort, tags, segments, pagination) are now preserved in the URL. When you click into a subscriber’s detail page and navigate back, your filters are exactly where you left them.

Dodo Revenue Tracking

Revenue tracking for Dodo Payments webhooks has been improved with proper event deduplication, accurate MRR/LTV calculation across multiple subscriptions, and correct handling of one-time payments vs. recurring subscriptions. Provider logos now appear in the subscriber activity timeline for better visibility.

n8n Integration

Sequenzy is now available as a community node in n8n, the open-source workflow automation platform. Connect Sequenzy to hundreds of apps and build complex automation workflows with a visual editor.Install the n8n-nodes-sequenzy community node to get started.

Soft Bounce Rate Enforcement

Sequenzy now monitors soft bounce rates alongside hard bounces and complaints. If a campaign exceeds soft bounce thresholds, it will be automatically paused to protect your sender reputation.Soft bounce thresholds are ~2-3x more lenient than hard bounces since they represent temporary delivery failures. You can view your soft bounce status on the Sender Health page with color-coded indicators.

Bounce Diagnostics

Bounced emails now show detailed explanations to help you understand and resolve delivery issues:
  • Bounce type breakdown: Permanent, Transient, or Undetermined with specific sub-types (e.g., “mailbox full”, “invalid address”)
  • Contextual tips: Actionable guidance based on the specific bounce reason
  • Bounce severity: Hard vs. soft bounce labels in the sent emails table

Campaign Approval Flow

Large campaign sends now go through an approval step before sending. When a campaign targets a large number of recipients, it enters a “Waiting for Approval” state and requires admin review before it can proceed. This prevents accidental mass sends and gives you a chance to review before committing.

Image Block Improvements

The image block in the email editor now supports:
  • Clickable images: Add a link URL to make any image clickable
  • Alignment: Position images left, center, or right
  • Percentage-based widths: Set image width as a percentage (10-100%) in addition to pixel values
All options work consistently across email clients using email-safe table-based layout.

A/B Test UX Improvements

The A/B test button in the sequence builder now appears on a long hover (1.5s) instead of immediately, preventing accidental clicks. Sequence enrichment flows have also been improved with better prompts and timing.

Campaign Engagement Chart

Sent campaigns now include an hourly engagement chart showing opens and clicks over time. This helps you see when subscribers are most active and how engagement develops after sending.The chart displays in your local timezone and handles multi-day campaigns with clear date labels.

Adaptive Campaign Sending

Campaign sending now uses adaptive chunk sizing that adjusts based on your sending volume and delivery performance. This improves delivery rates for large campaigns by pacing sends more intelligently.

Metrics Accuracy Improvement

Click events are now correctly counted as opens too — since clicking a link implies the email was opened. This applies to both individual campaign metrics and the aggregate metrics list, giving you more accurate open rate numbers.

Provider-Specific DNS Records

The domain DNS setup page now formats record names based on your DNS provider. Most providers auto-append the domain suffix, so Sequenzy shows just the subdomain part. Route53 users see the fully qualified name instead. This eliminates a common setup mistake where users would end up with records like mail.example.com.example.com.

Domain Verification Guards

All email sending paths (campaigns, sequences, transactional emails, conversation replies) now verify that your sending domain is verified before queuing emails. Previously, some paths could attempt to send from an unverified domain, which would fail silently.

Subscriber Search in Test Emails

The test email panel now includes a search field to find subscribers by name or email. You can also send test emails to yourself even if you’re not a subscriber — just click “Send to myself”.

Checkout Abandonment Tracking

Sequenzy now automatically detects when someone visits your payment page but doesn’t complete the purchase. A visited-payment-page tag is applied to subscribers who have an expired checkout session or $0 in spend, making it easy to target them with recovery sequences.How it works:
  • When a checkout session expires (Stripe, Dodo) or a subscriber has zero spend, they automatically receive the visited-payment-page tag
  • The tag is automatically removed when any purchase event fires
  • Use this tag to trigger a checkout abandonment sequence and recover lost revenue
Setting up a recovery sequence:
  1. Create a new sequence with the trigger “When tag added: visited-payment-page
  2. Set the stop condition to “When tag removed” (so the sequence stops if they purchase)
  3. Design your recovery emails — remind them what they’re missing
This works automatically with Stripe and Dodo integrations. No additional code or configuration needed.

Dodo Payments Integration Fix

Fixed an issue where Dodo Payments revenue sync could fail in live environments. Webhook setup validation has also been improved — you’ll now get a clear error if you accidentally paste a webhook secret instead of an API key.

Custom Email Fonts

You can now choose from 50+ fonts for your emails. Select a font in the Email Style panel (left sidebar) and it applies to your entire email.Available fonts:
  • System fonts: Arial, Helvetica, Georgia, Times New Roman, Verdana, Tahoma, Courier New, and more. These are universally supported across all email clients.
  • Web fonts: Inter, Roboto, Open Sans, Lato, Montserrat, Poppins, Playfair Display, Merriweather, and 40+ more from Google Fonts. These render in modern email clients with graceful fallbacks.
The font picker shows a preview of each font so you can see how it looks before selecting. Web fonts include a note about email client compatibility.View documentation

Automatic Stop Condition Sync

When configuring sequence triggers, Sequenzy now automatically sets sensible stop conditions based on your trigger type. This saves time and ensures your sequences stop at the right moment.How it works:
  • Tag triggers: When you trigger on tag added (e.g., “trial”), the stop condition auto-sets to “when tag removed”—so users exit when they’re no longer in trial
  • List triggers: When you trigger on contact added to a list, the stop condition auto-sets to “when removed from list”
  • Inactivity triggers: When you trigger on inactivity (e.g., no “login” event for 14 days), the stop condition auto-sets to “when event received”—so re-engaged users exit immediately
The stop condition syncs automatically as you configure the trigger. You can always override it manually if needed.

YouTube Video Block

Embed YouTube videos in your emails. The video block displays a thumbnail with a play button that links to the video. Supports width adjustment and left/center/right alignment.

Dashboard Command Palette

Press Cmd K to open a fast command palette that lets you jump to any dashboard page (including tabbed views) and reopen your three most recent campaigns or templates.

MCP Integration & CLI

Sequenzy now supports the Model Context Protocol (MCP), allowing AI assistants like Claude Desktop and Cursor to manage your email marketing directly.What you can do with AI:
  • Add and manage subscribers
  • Create email sequences from natural language prompts
  • Draft campaigns
  • Send transactional emails
  • View analytics and performance stats
  • Generate email content with AI
Quick setup:
This wizard logs you in, detects your AI clients (Claude Desktop, Cursor, Windsurf), and configures them automatically.New CLI tool:We’ve also released a command-line interface for terminal users:
Personal API Keys:A new type of API key (seq_user_) that’s tied to your user account rather than shared company-wide. Perfect for CLI/MCP use—each user has their own keys.View MCP documentation | View CLI documentation

Inbound Webhooks with Payload Mapping

Connect external services like Cal.com, Typeform, and Calendly directly to Sequenzy without needing Zapier or other automation platforms.Each webhook gets a unique secret URL — no API keys or special headers needed. Just paste the URL into your external service and it works.How it works:
  1. Create a sequence with a trigger like “When call-booked event received”
  2. Copy the unique webhook URL from the trigger settings
  3. Paste the URL into your external service (Cal.com, Typeform, etc.)
  4. Send a test webhook — Sequenzy captures the raw payload
  5. Map fields from the payload to Sequenzy fields (email, first name, custom properties)
  6. Save the mapping — future webhooks trigger the event automatically
Key features:
  • No API keys needed: The URL IS the authentication — just paste and go
  • Any payload format: Sequenzy captures whatever your external service sends
  • Visual field mapper: Click on values in the captured payload to map them to subscriber fields
  • Live preview: See extracted values as you map fields
  • Auto-create subscribers: Subscribers are created automatically if they don’t exist
View documentation

Sent Emails List in Campaign Review

When reviewing a sent campaign, you can now see a complete list of all emails that were sent. View delivery status, open/click tracking, and individual subscriber details directly from the campaign review page.Added Discord and Reddit to the social media block options in the email editor. You can now include links to your Discord server and Reddit community alongside Twitter, LinkedIn, Instagram, Facebook, and YouTube.

Zapier Integration

Connect Sequenzy to over 6,000 apps using Zapier. Automate your email marketing workflows by connecting to CRMs, forms, payment providers, and more—no code required.Available actions:
  • Create or Update Subscriber: Add leads from Typeform, Webflow, or any form tool
  • Add/Remove Tags: Tag subscribers based on actions in other apps
  • Trigger Events: Fire custom events to start automations
  • Delete Subscriber: Handle unsubscribes from other systems
  • Find Subscriber: Look up subscriber data by email
Example workflows:
  • Add Typeform respondents as subscribers with their answers as attributes
  • Tag Calendly bookings as “booked-call” and trigger a nurture sequence
  • Sync Stripe customers with “customer” tag automatically
Navigate to Settings → Integrations to see setup instructions, or visit Zapier’s Sequenzy page to get started.View documentation

Select All Subscribers for Enrollment

When enrolling subscribers into a sequence, you can now select all matching subscribers at once. A “Select all” checkbox makes it easy to enroll your entire filtered list without clicking each subscriber individually.

Keyboard Shortcuts for Sequence Builder

Navigate the sequence builder faster with keyboard shortcuts:
  • G - Open Goals modal
  • S - Open Enroll Subscribers modal (when sequence is active/paused)
  • , (comma) - Open Settings modal
Shortcuts are displayed in button tooltips. They respect input focus and won’t trigger when you’re typing in a text field or when modals are open.

Send Test Email Button

A new “Send Test” button is now available in the email preview panel. Quickly send a test email to yourself or your team without leaving the editor. Previously, you needed to navigate to the campaign settings to send a test.

Selective Subscriber Enrollment

When enrolling subscribers into a sequence, you can now choose exactly which subscribers to enroll. The enrollment modal shows each matching subscriber with their “date added” so you can make informed decisions about who to include.New features:
  • Individual selection: Check/uncheck specific subscribers
  • Date context: See when each subscriber was added
  • Progress tracking: Watch enrollment progress with a real-time counter
  • Bulk actions: Select all or clear selection with one click
This is useful when you want to enroll only recent subscribers or exclude specific contacts from a sequence.

Bulk Add to List

Select multiple subscribers from the subscribers page and add them all to a list in one action. Previously, you needed to add subscribers to lists one at a time or use the API.How to use:
  1. Go to Subscribers and select the subscribers you want to add
  2. Click the “Add to List” button in the bulk actions bar
  3. Choose the target list
  4. All selected subscribers are added instantly

Email Reply Tracking & Conversations

Track and manage replies to your emails with the new conversation inbox. When subscribers reply to your campaigns, sequences, or transactional emails, their responses are captured and organized into threaded conversations.Key features:
  • Automatic reply capture: Replies to any email are automatically tracked and linked to the original message
  • Conversation threading: Multiple replies are grouped into conversations with full message history
  • Reply forwarding: Optionally forward subscriber replies to your team’s email address
  • Two-way conversations: Reply directly to subscribers from the Sequenzy dashboard
  • Reply analytics: Track reply rates alongside opens and clicks in your metrics
How it works:
  1. Enable reply tracking in Settings → Email Tracking
  2. Outbound emails automatically use a trackable reply address
  3. When subscribers reply, messages appear in your Inbox
  4. View conversation threads, reply to subscribers, or forward to your team
Conversation management:
  • Mark conversations as open or closed
  • View all messages in a threaded timeline
  • See subscriber profile alongside conversations
  • Search and filter by status, date, or subscriber
Retention:Replies are retained based on your configured retention period (default: 30 days). You can adjust this in Settings.View documentation

Send Time Optimization

Deliver campaign emails at each subscriber’s optimal time based on their historical engagement patterns. When enabled, Sequenzy analyzes when each subscriber typically opens emails and schedules delivery accordingly.How it works:
  • Enable “Send Time Optimization” when scheduling a campaign
  • Sequenzy analyzes each subscriber’s open patterns from the last 90 days
  • Emails are delivered within a 12-hour window, timed to when each subscriber is most likely to engage
  • Subscribers without enough engagement history receive emails at the scheduled time
Requirements:Subscribers need at least 5 email opens in the last 90 days for their optimal time to be calculated. The campaign scheduling UI shows how many subscribers have computed optimal times.Analytics:After sending, view a delivery distribution chart showing how your campaign was spread across hours. This helps you understand how STO distributed your emails and correlate with engagement metrics.

Campaign Revenue Attribution

See exactly how much revenue each campaign generates with the new attribution panel. When viewing sent campaigns, you’ll now see conversions and tracked revenue directly attributed to that campaign.What’s included:
  • Conversions count: Number of goal conversions attributed to the campaign
  • Tracked value: Total revenue from attributed conversions
  • Goal breakdown: See which goals drove conversions (if you have multiple goals)
Attribution uses a 24-hour window from email interaction (open or click) to conversion. This feature works with any goal you’ve configured, including the default revenue tracking from Stripe, Polar, Paddle, and Dodo integrations.Navigate to any sent campaign to view its attribution metrics alongside engagement stats.

Activity-Based Triggers for Sequences

You can now trigger automation sequences based on subscriber activity patterns. Two new trigger types are available in the sequence builder:Inactivity Trigger Start a sequence when a subscriber hasn’t performed a specific event for a set number of days. Perfect for:
  • Re-engagement campaigns for inactive users
  • Churn prevention when users stop using key features
  • Win-back flows for lapsed customers
Event Frequency Trigger Start a sequence when a subscriber performs an event multiple times within a time window. Great for:
  • Rewarding power users who complete actions frequently
  • Identifying highly engaged subscribers
  • Triggering upgrade prompts for heavy usage
How to use:
  1. Create a new sequence or edit an existing one
  2. Click on the trigger node
  3. Select “Inactivity” or “Event frequency” from the trigger type dropdown
  4. Choose the event to track and configure the time settings

PostHog Integration

Connect your PostHog product analytics to trigger email automations based on user behavior. Send emails when users perform (or skip) specific actions in your product.What you can do:
  • Trigger emails from product events: Feature used, onboarding completed, checkout started
  • Build behavior-based segments: Users who haven’t used feature X in 7 days
  • Re-engage inactive users: Detect users who stopped using your product
How it works:
  1. Copy your webhook URL from Sequenzy Settings → Integrations
  2. Add it as a Webhook destination in PostHog Data Pipelines
  3. Events flow in real-time and trigger your automations
All PostHog events are prefixed with product. in Sequenzy (e.g., product.feature_used).View documentation

GitHub @mention in AI Writer

Generate product update emails from your actual commit history and releases. In the AI email editor, type @github owner/repo and the AI will pull recent commits and releases to write accurate product update emails.Example:
“Write a product update email based on @github acme/saas-app from the last month”
The AI will fetch your latest commits and releases, then generate an email highlighting real features and improvements - not generic marketing copy.

Auth Provider Integrations (Clerk & Supabase)

Automatically sync users from your authentication provider to Sequenzy. Every signup becomes a subscriber—no code required.Supported providers:
  • Clerk: Sync users from Clerk authentication with full profile data
  • Supabase: Sync users from your Supabase database webhooks
How it works:
  1. Copy your unique webhook URL from Sequenzy
  2. Paste it in your Clerk or Supabase dashboard
  3. Users automatically sync in real-time
What gets synced:
  • Email, name, username, and profile data
  • User created → subscriber added with contact.subscribed event
  • User deleted → subscriber unsubscribed automatically
Use these integrations to trigger welcome sequences the moment someone signs up, without writing any code.Navigate to Settings → Integrations to connect your auth provider.View Clerk documentation | View Supabase documentation

Send Transactional Emails via SMTP

You can now send transactional emails using the standard SMTP protocol, making it easy to integrate Sequenzy with any application that supports SMTP (Laravel, legacy systems, etc.).Connection details:
  • Host: smtp.sequenzy.com
  • Port: 587 (STARTTLS), 465 (SSL/TLS), or 2525 (fallback)
  • Username: api
  • Password: Your Sequenzy API key
Features:
  • Same security checks as the REST API (domain verification, rate limiting, bounce protection)
  • Branding footer automatically added for free tier
  • All emails appear in your dashboard with full tracking
  • Up to 50 To recipients per message
View documentation →

Creem Integration

Connect your Creem account to automatically sync revenue data and power your email automations. Creem is an all-in-one payment platform that handles global commerce complexity including payments, subscriptions, and tax compliance.What gets synced:
  • MRR & LTV: Automatically sync Monthly Recurring Revenue and Lifetime Value for each subscriber
  • Status tags: customer, cancelled, churned, saas.monthly, saas.yearly
  • Events: saas.purchase, saas.cancelled, saas.churn, saas.refund, and more
Use these attributes to create powerful segments (e.g., “churned customers with LTV > $500”) and trigger automations based on subscription changes.Navigate to Settings → Integrations to connect your Creem account.View documentation

Goals & Attribution

Track which emails in your sequences actually drive conversions with the new Goals feature. Using last-touch attribution, Sequenzy credits revenue and conversions to the most recent email a subscriber interacted with before converting.Key features:
  • Company-wide goals: Track overall revenue across all your emails
  • Automation-specific goals: Measure performance of specific sequences
  • Revenue tracking: See exactly how much revenue each email generates
  • Per-email breakdown: Identify your highest-performing emails
How it works:
  1. Create a goal tied to a conversion event (e.g., saas.purchase)
  2. Optionally specify a revenue property to track amounts
  3. Set your attribution window (default: 24 hours)
  4. View which emails drove conversions and revenue
Works automatically with Stripe, Polar, Paddle, and Dodo integrations, or trigger custom events via the API.View documentation

Polar, Paddle, and Dodo Payments integrations

You can now connect three new payment providers to automatically track revenue events and sync subscriber data:
  • Polar: For open source developers and digital product creators
  • Paddle: Complete payments infrastructure for SaaS with built-in tax compliance
  • Dodo Payments: Simple payments for indie developers
All three integrations work the same way as Stripe—connect your account, set up webhooks, and Sequenzy automatically tracks purchase events, cancellations, refunds, and more. Use these events to trigger automations like onboarding sequences, win-back campaigns, or churn prevention emails.Tracked events:
  • saas.purchase, saas.purchase_monthly, saas.purchase_yearly
  • saas.cancelled, saas.churn, saas.payment_failed, saas.refund
Navigate to Settings → Integrations to connect your payment provider.

A/B test sequences

You can now add A/B test steps to your automation sequences. Split your subscribers into two groups and send different email variants to measure which performs better.

A/B test email campaigns

You can now run A/B tests on your email campaigns to optimize for better engagement. Split your audience and test different subject lines, email content, or sender names to see which version performs best.How it works:
  1. Create an A/B test step in your automation flow
  2. Set the split percentage (e.g., 50/50 or 70/30)
  3. Design variant A and variant B emails
  4. Monitor results to see which variant wins on opens, clicks, or conversions
Use A/B testing to continuously improve your email performance with data-driven decisions.

Tags on Stripe sync

When syncing revenue data from Stripe, Sequenzy now automatically applies tags based on subscription status:
  • Status tags: customer, trial, past-due, cancelled, churned
  • Billing interval tags: saas.monthly, saas.yearly
This makes it easy to segment and target customers based on their subscription state (e.g., find all churned yearly customers, or trial users approaching conversion).

Quick filters for subscribers

Added more quick filter options to the subscribers list, making it faster to find the subscribers you’re looking for. Filter by engagement status, subscription state, and more with a single click.

Revenue data in subscriber details

The subscriber detail page now displays revenue information (MRR and LTV) directly, giving you a complete view of each subscriber’s value without leaving the page.

Transactional email events linked to subscribers

Transactional emails sent via the API are now properly linked to subscribers by email address. This means email events (sent, delivered, opened, clicked) now appear in the subscriber’s activity history, giving you complete visibility into all communications with each contact—both marketing and transactional.

Embeddable signup form widget

You can now generate a customizable HTML signup form to embed on any website. Navigate to Settings → Embed Widget and click on the Form widget to access the visual builder.Customization options:
  • Form Style: Choose between stacked (button below) or inline (button side-by-side) layouts
  • Placeholder Text: Customize the email input placeholder
  • Font Color: Set the input text color
  • Button Text & Color: Customize the submit button appearance
  • Success Message: Configure the confirmation message with custom font color and size
  • List Targeting: Add subscribers to specific lists or all lists
The generated HTML is self-contained with inline styles—just copy and paste into any website. No JavaScript SDK required.View documentation →

Email deliverability checker

While editing any email, you’ll now see a real-time deliverability score next to the Desktop/Mobile buttons. This rule-based checker analyzes your email content and predicts inbox placement without any AI calls.What it checks:
  • Subject line (25% of score): Length, spam trigger words, excessive caps, punctuation, emoji usage
  • Preview text (15% of score): Presence, length, whether it duplicates the subject
  • Content (40% of score): Text-to-image ratio, link count, unsubscribe link, spam triggers
  • Technical (20% of score): Sender address, reply-to configuration
Scoring:
  • A (90+): Likely lands in Primary inbox
  • B (80-89): Good deliverability, may land in Promotions
  • C-F (under 80): Review flagged issues before sending
Click the score pill to see a detailed breakdown and specific issues to fix.

Stripe revenue sync

When you connect your Stripe account, Sequenzy now automatically syncs revenue data for all your subscribers. This adds two key attributes to each subscriber:
  • mrr: Monthly Recurring Revenue (normalized from any billing interval)
  • ltv: Lifetime Value (total payments minus refunds)
You can use these attributes to create powerful segments like “high-value customers” or “churned subscribers with high LTV”, and trigger automations based on subscription changes.A manual “Sync Revenue” button is also available in Settings → Integrations to re-sync data at any time.

Add subscribers to specific lists via API

When creating subscribers via the API, you can now specify which lists they should be added to. Pass an array of list IDs in the lists parameter to add the subscriber to specific lists. If lists is omitted or empty, the subscriber will be added to all lists.

Dynamic segments

Segments now support filtering by email engagement metrics like opens, clicks, and delivery status. Create segments such as “subscribers who opened any email in the last 30 days” or “subscribers who haven’t clicked in 90 days” to target your most (or least) engaged audience. Custom event filtering is coming soon.

AI-powered segment generation

You can now describe the audience you want to target in plain English, and our AI will generate the segment filters for you. Simply click the AI button in the segment builder, describe your target audience (e.g., “subscribers who opened an email in the last 30 days but haven’t clicked”), and the AI will create the appropriate filter rules.

Geographic distribution map

The Metrics page now includes a geographic distribution section with an interactive world map. See where your subscribers are engaging with your emails by country, with metrics including opens, clicks, open rate, and click rate. Hover over any country to see detailed engagement data.

Filter metrics by email type

You can now filter your Sent Emails and Metrics pages by email type to see how different types of emails perform:
  • Campaigns: Bulk marketing emails sent to subscriber lists
  • Transactional: One-off emails triggered by your application (order confirmations, password resets, etc.)
  • Sequences: Automated emails from your automation workflows
This helps you understand engagement patterns across different use cases and optimize each type independently.

File attachments for transactional emails

You can now send file attachments with your transactional emails. Attachments can be provided as Base64-encoded content or as URLs that we fetch on your behalf.
  • Base64 content: Include the file content directly in your API request
  • URL-based: Provide a URL and we’ll fetch the file when sending
  • 40MB limit: Maximum total attachment size per email
  • Any file type: PDFs, images, documents, and more

Multiple recipients

Transactional emails now support multiple To recipients.
  • Multiple to addresses: Send to up to 50 recipients at once
  • Automatic deduplication: Duplicate To addresses are handled automatically

Added Teams Functionality

Added comprehensive teams functionality allowing you to collaborate with team members. You can now add team members by email, assign roles (admin or viewer), update member roles, and remove team members. Team members can collaborate on campaigns, subscribers, and other resources within your company workspace.

Custom sender and reply-to for transactional emails

You can now customize the from and replyTo addresses for transactional emails.
  • Custom from: Use any verified domain (e.g., "Notifications <notifications@yourdomain.com>")
  • Custom replyTo: Direct replies to any email address