Skip to main content
The email-messages command lets you view and edit the email message attached to a campaign. Email messages are created automatically when you create a campaign. Use this command when you want to keep email content in Git as .lmx files, review changes locally, and push updates to a draft email message with revision protection.

get

Get an email message by ID, including its current content and contentRevisionId.
loops email-messages get cmn5zia4i0017tzli8ric8giv

update

Update fields on a draft email message. The owning campaign must be in Draft status.
loops email-messages update cmn5zia4i0017tzli8ric8giv \
  --expected-revision-id clv8g2x4z012yl70n5o6p7q8r \
  --subject "Welcome to Acme" \
  --preview-text "Here's how to get started" \
  --lmx-file ./email.lmx

Concurrency control

Every update must include either --expected-revision-id or --force:
  • --expected-revision-id — pass the contentRevisionId from a prior email-messages get. The request is rejected with a conflict if the server’s revision has advanced, so you don’t overwrite a concurrent edit.
  • --force — fetch the current revision automatically and use it. This overwrites any concurrent edits.

Setting content

Pass LMX inline with --lmx or from a file with --lmx-file:
loops email-messages update cmn5zia4i0017tzli8ric8giv \
  --force \
  --lmx-file ./email.lmx

Git workflow

For a safer file-based workflow:
  1. Run loops email-messages get <email-message-id> and save the current LMX in your repository.
  2. Commit the .lmx file or review it in a branch.
  3. Update the draft email with --lmx-file and the latest --expected-revision-id.
  4. Save the returned contentRevisionId before making another update.
Use --force only when you intentionally want to overwrite the latest draft content.

Flags

FlagShortDescription
--expected-revision-id-rLast-seen contentRevisionId from email-messages get. Mutually exclusive with --force.
--force-fFetch the current revision and use it (overwrites concurrent edits). Mutually exclusive with --expected-revision-id.
--subjectEmail subject
--preview-textEmail preview text
--from-nameSender display name
--from-emailSender username (the part before @ — the team’s sending domain is appended automatically)
--reply-toReply-to email address
--lmxLMX markup (inline). Mutually exclusive with --lmx-file.
--lmx-filePath to a file containing LMX markup. Mutually exclusive with --lmx.
At least one content flag (--subject, --preview-text, --from-name, --from-email, --reply-to, --lmx, or --lmx-file) must be provided.
Last modified on July 2, 2026