September 2026
Historical note · September 2026 · Describes Brew as of September 2026.
Each item links to the guide for current behavior.
- A publish could let every fire fail.
- A send could be created for zero people.
- An import could read UK dates as American.
New
- Organization keys. One API key or agent connection can reach every brand in your organization. See Organization Keys.
- Brew University. Eight short walkthroughs play from the Home page. See Brew University.
- Flows. Real signup and newsletter sequences from other brands, with the day each email landed. Remix one and Brew builds a draft automation with the same timing and emails written for your brand. See Remix a Flow.
- One library for every image. Assets holds your logos, the images from your site, your uploads, and everything Brew generated. Filter by kind, crop and adjust, or delete. See Assets.
- Unsubscribe lists per domain. Each marketing domain keeps its own list, on the API and MCP first. See Unsubscribe Lists for Every Domain.
Agents & API
- Count events instead of listing them.
GET /v1/analytics/eventstakesgroupByandbucket, so clicks per link or unsubscribes per reason is one call. See Count Events Instead of Listing Them. - A fire names what it couldn’t start. A trigger fire used to answer
“triggered” with nothing running and no reason. It now lists each
automation that didn’t start, and why, in
notStarted[]. - Fire refusals name every bad field. A payload that fails its contract comes back with each offending field and the schema to fix it against.
- API keys are managed in the dashboard only. Creating or revoking a key needs a signed-in admin, so a leaked key can never mint another. See Key Lifecycle.
- Timeouts cover the whole response. In SDK 11.3.0 and CLI 0.10.0, a timeout or cancel also stops a response that stalls mid-body. See Timeouts and Cancellation.
Improvements
- Publish refuses merge tags the trigger doesn’t declare. An automation
using
{{ trigger.code }}on a trigger withoutcodeused to publish, then fail on every fire without saying so. Now publish stops and names the tag. See When a Tag Does Not Resolve. - A send that would reach nobody is refused. If every contact is unsubscribed, suppressed, or undeliverable, Send now stops and tells you why. A send that skips some contacts says how many and for what reason. See Send Options.
- Searching a whole address finds that contact. It used to match every
contact sharing a word, such as
gmail. - Valid means a check ran. A contact reads Valid only after a real deliverability check, never from the free format check alone.
- Re-subscribing an opt-out is refused. The API, MCP, and imports never re-subscribe anyone. A person on your team does it from the contact’s page. See Unsubscribes.
- Imports can unsubscribe existing contacts. A
subscribedcolumn set to false, or a status such asunsubscribedorcleaned, now applies to contacts you already have.
Fixes
- Day-first dates import in the right month. A UK file’s
03/04/2026is now 3 April, not 4 March. Brew reads the whole column in one order. See Custom Properties. - The credit balance reads correctly past the plan cap. Readouts counted bonus-credit spending twice. Charges were always right, so nothing is owed.
- Automation runs filter by recipient. The
recipientEmailfilter was accepted and ignored. It now applies.