A common Automation rule sends a request’s comment history to the customer, for example when the request is resolved. The catch: {{issue.comments}} returns all comments, including internal notes. This guide shows the native way to leave internal notes out, what to test, and when the PublicThread for JSM action is a better fit.
Atlassian’s knowledge base article Email comments to reporter when closing JSM ticket (Cloud) (updated September 2025) uses a Send email action with a comment loop and an internal check. The shape of the template is:
{{#issue.comments}}{{#if(not(internal))}}
Comment by: {{author.displayName}} at: {{created}}
{{body}}
{{/}}{{/}}
For a rule triggered by a single new comment, the equivalent check is a Smart values condition on {{comment.internal}} equals false.
Test before sending to customers. Run the rule on a test request that has a public reply, an internal note and (if you use them) a restricted comment, and send the email to yourself first. Community threads report that some comment types behave differently with the internal flag, so check your own setup.
If that describes your rule, you do not need an app. Jira Service Management’s built-in customer notifications also already email public replies to the reporter and request participants.
PublicThread for JSM adds one Automation action, Get Public Conversation, that returns the public comments as ready-made text for the next step.
| Need | Native template | PublicThread action |
|---|---|---|
| Leave out internal notes | The internal check in your template | Reads the request’s comments through the Service Management request API with a public-only filter, then keeps only comments marked public in its own code. There is no setting to include internal notes. |
| Only the latest N comments | Not built in | Max Comments 1–50 (default 10) |
| Customer messages only (no agent replies) | Extra conditions per comment | Include public replies from agents off: keeps comments from the reporter and request participants |
| HTML email body | You build and escape it | {{fetchedJiraThread.conversationHtml}} is pre-escaped |
| Count for conditions | You compute it | {{fetchedJiraThread.commentCount}} |
Setup is in the Quick start. A minimal email step:
Action: Get Public Conversation (PublicThread for JSM)
Issue Key: {{issue.key}}
Action: Send email
To: {{issue.reporter.emailAddress}}
Body: {{fetchedJiraThread.conversationText}}
read:servicedesk-request. See the Privacy Policy.Atlassian may change smart value behavior; check the linked article for the current template.