What’s new in Warmbly.
New features, improvements and fixes, in the order they reached production. Each one links to the change on GitHub, so nothing here is rewritten after the fact.
The full log. Every entry, by month.
November 2026
- Nov 3New
Pace SMTP sessions to a server that is limiting the worker's address
New Features. Sending now backs off when a mail server limits connections from the sending address, including connection or sign-in refusals and dropped encryption handshakes, then gradually resumes sessions.. Sends held during a backoff are retried without contacting the server and do not count as lead attempts or…
#1141 - Nov 3New
Close new self-hosted links to Warmbly Cloud, retire the Warmup plan checkout, keep existing links and paid subscribers unchanged
StartCode and ApproveCode refuse every new link with poollinkclosed (403), including codes issued before the deploy. The handshake helpers that only served them are removed, along with the two error codes nothing returns anymore (poollinkworkspacerequired, poollinkworkspaceconnected).. A free workspace that is already…
#1140 - Nov 3New
Publish hosted static assets from pinned releases with explicit domains and Pages rollback
New Features. Added optional publishing of static assets to Cloudflare Workers alongside Pages deployments.. Added a manual workflow to rebuild and publish assets for an existing stable release without creating a new release.. Deployment checks validate release sources and assets before publishing, and retain…
#1139 - Nov 3New
Serve hosted static frontends through explicit HTTPS Pages origin mappings
Adds an optional hosted Worker that serves public frontend assets from explicitly mapped HTTPS Pages origins. It preserves response headers, assets and redirects, removes application credentials before upstream requests, and limits forwarding to read methods. Existing release uploads and self-hosted deployments keep…
#1137 - Nov 3New
Scope GET /v1/unibox to a campaign_id or contact_id (org-verified, 404 outside the workspace) traced through campaign sends by Message-ID, In-Reply-To, thread root and Gmail thread handle, return each row's campaign_id, accept since/until as YYYY-MM-DD (until keeps the whole UTC day) or RFC 3339 and refuse anything else with 400 invalid_filter, and document address, direction, the new filters and dates in the unibox reference, openapi.json, error codes and both CLIs
GET /v1/unibox takes campaignid and contactid (malformed: 400 invalidfilter; another organization's: 404). campaignid returns conversations linked to the campaign's sends by Message-ID, In-Reply-To, IMAP thread root or provider thread handle. contactid adds mail from or to the contact's address.. Rows carry campaignid…
#1136 - Nov 3New
Emit campaign.completed, inbox.reply_received, email_account.disconnected/error/synced, automation.run and bulk_operation.* webhooks from their control-plane sources, deprecate the five catalog events nothing can deliver, hide them from pickers, and add a source-scan test that every catalog event is emitted or deprecated
Part of an external evaluation report.
#1135 - Nov 3New
Record the step A/B arm each contact was sent on campaign_contact_progress (migration 000338), report contact-based per-step arm stats with last-step attribution and a Bonferroni-corrected two-proportion z-test winner in GET /campaigns/:id/ab-analysis, implement ab_testing.auto_promote_winner as an audited consumer loop, and show per-arm results, winner and promotion in the step editor and Settings > Sending
Migration 000338 (additive): campaigncontactprogress.abarm / abvariantid (CHECK added NOT VALID, no scan), campaignabvariants.promotedat. ReserveSend writes the drawn arm in the reservation's transaction, only when two or more arms are in the draw.. GET /campaigns/:id/ab-analysis gains steps: contact-based per-step…
#1134 - Nov 3New
Lift the reply-gated cold ceiling once warmup is stopped (not paused) by reading warmup_stopped_at in ColdRampStateForAccounts through one ColdRampState.CeilingApplies gate shared by the scheduler, send plan, projection and mailbox status notice, correct the Stop comments, let an explicit batch warmup Off win over per-row warmup columns in mailbox import with a three-way warmup choice in the import dialog, and document both in the campaigns, warmup and mailbox import guides
New Features. Mailbox imports now offer clearer warmup choices: follow each file row, turn warmup on, or turn it off. For imports from inbox providers or administrator grants, you can leave existing warmup settings unchanged.. Stopping warmup now lifts the cold-sending limit while retaining ramp history. Pausing keeps…
#1133 - Nov 3New
Decide bounce suppression from the DSN status code and server reply through a shared dsn.Blame rule so mailbox-full, policy, reputation and system bounces keep the address and lead while address-invalid ones suppress, carry the per-recipient status and diagnostic in inbound bounce reasons, reuse the rule in emailverify, and add an optional TYPESAFE_ENDPOINT
New Features. Bounce handling now distinguishes invalid addresses from mailbox-capacity, sender-policy, reputation, and temporary delivery issues. Only address-related failures suppress an address; other failures can remain eligible for later campaign steps.. TypeSafe judgments support a configurable endpoint. HTTPS…
#1131 - Nov 3New
Treat a reply that is only an opt-out command (STOP, remove, unsubscribe) as an opt-out, add opt-in stop_all_campaigns_on_reply holding a replying contact in their other campaigns, and add skip_active_in_other_campaigns to CSV import, bulk add and segment add-to-campaign with dashboard controls and docs
New Features. Campaign enrollment can optionally skip contacts with a queued, sending, or held sequence in another unfinished campaign when adding contacts individually, in bulk, through imports, or from a segment. Skipped contacts are still imported or updated.. Enable a setting to hold contacts in other unfinished…
#1130 - Nov 3New
Document the completed NATS handoff and ordered Kafka rollback
Document the final NATS-only bus configuration after every old Kafka publisher has stopped and all required consumer groups have reached stable final offsets. Keep dual-codec reads, compatible images and credentials through the retained-data and rollback window, and distinguish retained stream messages from consumer…
#1129 - Nov 3New
Monitor NATS stream capacity independently of disk usage
The NATS stream has a logical byte limit separate from the brokers' disk capacity. Publish stream usage from the existing minute health job and alert above 75 percent for three periods, including missing metrics, so operators can review retention, backlog and storage headroom before the limit rejects writes.
#1128 - Nov 3New
Preserve mailbox sync coverage and accurate notification and authenticator status
New Features. Added clearer two-factor reauthentication messages, including guidance when a code has already been used or verification is temporarily unavailable.. Clarified that mailbox review alerts concern unverified message claims and are not connection checks.. Improved mailbox sync coverage tracking and…
#1127 - Nov 3New
Add private AWS NATS operations and a compatible Kafka migration
New Features. Added support for running services with NATS, including configurable stream settings, replica counts, capacity limits, and TLS certificates.. Added options to read from Kafka and NATS concurrently and to read both JSON and Avro formats.. Added NATS health checks, backups, monitoring, and scheduled…
#1125 - Nov 3New
Enforce issued password format and scope private attachment downloads
New Features. Campaign attachment downloads can optionally use private, short-lived API links. Links are scoped to a single attachment and expire after 15 minutes.. Admin-issued initial passwords now include a randomly generated digit.. Security. Attachment downloads include protections against caching and MIME-type…
#1124 - Nov 3New
Honor selected warmup days and explain effective mailbox schedules
New Features. Choose warmup days independently of campaign working days: follow the sending plan, select weekdays or individual days, or warm up every day. Cloud-linked mailboxes require explicit day selections.. Warmup schedules respect applicable work hours and breaks. Explicit weekend warmups can run without…
#1123 - Nov 2New
Hold mailbox warmup reply share to its configured target within existing send budgets
New Features. Warmup replies now track each mailbox’s target share over the last seven days. When a mailbox is behind target, eligible incoming warmup mail may be answered in place of a planned new message.. Replies prioritize recovery-related mail while respecting each recipient’s reply share.. Documentation…
#1122 - Nov 1New
Gate private TLS recovery archives with an opt-in scoped writer
New Features. Added an optional, disabled-by-default role for securely uploading TLS recovery evidence to designated storage locations. It grants upload-only access and does not enable recovery.. Changes to this role or its permissions require infrastructure approval.. Documentation. Added guidance on configuring the…
#1118 - Nov 1New
Gate partial TLS cleanup with reviewed evidence and protected recovery
New Features. Added a reviewed, manual workflow for partial TLS recovery, with safeguards and checks before and after recovery.. The workflow can archive private recovery evidence and redeploy the planned release before final verification.. Deployment workflows can accept an optional bake duration override.…
#1117 - Nov 1New
Validate TLS recovery resource and workflow evidence
Recovery identity/state/plan, lineage and S3 input fixture suites passed.. Mocked collection covers wrong identity/version/hash/encryption, changed latest state, wrong deployment/stage, historical release relabeling, changed tag/ancestry, incomplete jobs, API failures and overwrite refusal.. Existing normal TLS…
#1116 - Nov 1New
Require complete HTTP group cleanup in scoped runtime TLS plans
Documentation. Updated TLS finalization guidance to require a plan that removes exactly four service HTTP target groups.. Clarified that a partially completed transition requires a separately reviewed recovery plan.. Bug Fixes. TLS plan checks now reject plans that omit or alter any of the four expected target-group…
#1115 - Nov 1New
Keep visible mailbox health aligned with current server evidence
New Features. Mailbox health and error reports refresh every minute, when you return to the tab, and when relevant live events occur.. Cached measurements remain visible as “Last observed” during refreshes or failed reads. Recent issues remain labeled “Last reported issue” for up to five minutes while recovery is…
#1114 - Nov 1New
Align realtime loopback HTTP listener socket family
Bug Fixes. Fixed HTTP listener configuration for IPv4 loopback addresses, improving local connections while preserving existing transport and protocol options.
#1113 - Nov 1New
Hide temporary mailbox failures on working mailboxes and explain warmup skipping persona off-days
New Features. The Warmup tab identifies warmup days skipped because they fall outside your sending schedule. If you can manage email settings, you can add those days to the schedule from the notice.. Recoverable mailbox warnings show Retrying while automatic retries are underway. Critical errors continue to show…
#1112
Try what just shipped.
Start free on Warmbly Cloud, or pull the latest release and run it on your own server.
