Two Ways to Leave One
On the whole email. Click the email on the canvas, then click the comment icon in the email’s toolbar, next to Add to chat. Hover it and it reads “Comment on this email”. On one section. Click any section of the email, then click the comment icon at the right end of the section toolbar, past the formatting controls and Prompt. Either way, a message box opens. Type your comment and send it with the arrow. The comment anchors to whatever you picked, so the next person sees it next to the thing it’s about.Close or Resolve a Thread
A thread has two controls at its top right, and they do different things:- X closes the comment view. The thread stays where it is, unread and unresolved.
- Check resolves the whole thread, not the single comment you’re looking at. Use it once the feedback has been acted on or answered.
Tag a Teammate
Mention a teammate in a comment to pull them into the conversation. Brew emails them a link that opens the email at your comment, so they land on the exact element you’re asking about instead of hunting for it.Reply in the Thread
Comments are threads, not one-off notes. Replies stay attached to the original comment, and everyone in your organization sees the same threads on the same email. That makes the email the record of what was asked and what was decided.A Comment Is a Note for People
Commenting doesn’t change the design. A comment is feedback for your team, and it sits alongside the email rather than editing it. To actually make the change, ask for it in chat or edit inline. The Prompt Guide covers how to phrase an edit so you get what you meant.Read Comments from an Agent
An agent can read a design’s comment threads before it edits the design. Leaving, replying to, and resolving comments stay in the app.list_email_comments over MCP, GET /v1/emails/{emailId}/comments over the API, brew.emails.comments.list({ emailId }) in the SDK, and brew-cli emails comments list all list one design’s open threads, newest activity first. Each thread carries:
commentIdand aurlthat opens the email at the threadtarget: the whole email, or one element with itselementId- the 12 most recent
participants({ userId, name }) andparticipantCount messageCountandlastMessagePreview(the latest message, up to 140 characters)
404 EMAIL_NOT_FOUND. The read is free and needs the emails scope.
Read the Messages in a Thread
Withoutinclude, a page lists threads only, up to 100 at a time. include=messages (include: ["messages"] over MCP) adds each thread’s newest messages, oldest first, each with its author, body, and mentions (the teammates it tags). A page with messages holds at most 3 threads, and they share a 12,000-character budget, so a long thread may not fit whole.
A mention reads @ plus the teammate’s name in body and lastMessagePreview, and mentions lists each tagged teammate as { userId, name }. Any other @ text is as typed.
A thread with older messages than fit returns a messagesCursor. Send it back with that thread’s commentId to read the next older slice, and repeat until messagesCursor comes back null. Each of those reads gives the one thread the whole budget and always at least one message.
commentId on its own reads just that thread. Two helpers follow the thread’s cursor for you. In the SDK, brew.emails.comments.listAllMessages({ emailId, commentId }) yields every message, newest first. From the shell, brew-cli emails comments list <emailId> --comment-id <commentId> --all prints them all.
A commentId that isn’t an open thread on that email, including one resolved since you read it, answers 404 COMMENT_NOT_FOUND. Sending cursor with commentId, or a messagesCursor without its own thread’s commentId, is 400 INVALID_REQUEST.
The rest of a review routine has an agent path too. Audit an Email and Preview in Real Inboxes both run from chat, an agent, or code.
Where It Fits in a Review
Comments cover the judgement calls: tone, offer, whether the hero image earns its place. Run the mechanical checks separately, because a person shouldn’t be the one catching a contrast failure or a broken layout in Outlook. A workable order is preview across clients, audit for accessibility, then open it for comments and send yourself a test. QA an Email Before a Big Send walks the full routine.Need Help?
Our team is ready to support you at every step of your journey with Brew. Choose the option that works best for you:- Self-Service Tools
- Talk to Our Team
Search Documentation
Type in the “Ask any question” search bar at the top left to instantly find relevant documentation pages.
ChatGPT/Claude Integration
Click “Open in ChatGPT” at the top right of any page to explore it further with ChatGPT or Claude.