Skip to content

Urgent: Draft and publish workflow for sequence and broadcast emails (edits currently go live on save) #184

Open

Description

@clbotdev

Background

Today, editing the email in a published (active) sequence, or in a scheduled broadcast, saves straight to the live version. There's no draft stage. Contacts who reach that step after the save get the edited content right away, including half-finished edits, typos made mid-edit, and broken merge tags. Users have to unpublish or pause the sequence first, edit it, and then republish.

The industry standard (Mailchimp, Kit, Customer.io, Braze, HubSpot) is draft, then an explicit publish or activate step. A live journey keeps sending the last published version until the new one is published. Many tools also let you choose whether a change applies to new entrants only or to contacts already in flight.

This is a trust issue for creators switching from beehiiv or Kit, who expect to be able to safely edit a running automation.

Proposed fix

  • Give each sequence email and scheduled broadcast a published version and a working draft. Saving in the editor writes only to the draft.
  • Add an explicit Publish changes action, plus Discard draft. Show a clear "Unpublished changes" badge on the sequence, the step and the broadcast while a draft differs from the live version.
  • Sends always render from the published version, never the draft.
  • When publishing changes to an active sequence, ask whether to apply them to new entrants only or update in-flight contacts too (default: in-flight contacts get the new version on their next step).
  • Keep a version history (at minimum the previous published version) so a publish can be rolled back.
  • Expose the same draft and publish flow in the REST API, and in the MCP server so agents can't push live edits without publishing.

Acceptance criteria

  • Editing and saving an email in an active sequence doesn't change what contacts receive until Publish changes is clicked.
  • A scheduled broadcast with unpublished edits sends the last published content, and the UI warns about the unpublished changes before the send time.
  • An "Unpublished changes" indicator appears on the sequence, step and broadcast whenever the draft differs from the live version, and Discard draft reverts it.
  • The publish dialog for an active sequence offers new entrants only or update in-flight, and sends follow the choice.
  • The previous published version can be restored.
  • The REST API and MCP tools save to the draft by default and need an explicit publish call to go live. Docs on docs.sendlit.app are updated.
  • Tests cover sending during an open draft, publish, discard and rollback.

Workaround until then: pause or unpublish the sequence before editing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    severity: highMajor gap or broken flow for many users

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions