Conversations
The conv group is the workhorse of hscli. It lists, reads, and acts on conversations.
Full flag details are in the command reference.
List the queue
Section titled “List the queue”$ hscli conv list --status active --output tableID SUBJECT CUSTOMER STATUS4831 Refund for order #2207 amir@acme.io active4830 Can't reset my password lou@hey.com activeFilter by --status, --tag, --assigned-to, --query, or --mailbox. Free-text
search lives in conv search "<query>".
Read one conversation
Section titled “Read one conversation”hscli conv get 4831 # the conversationhscli conv threads 4831 # its message threadsReply or add a note
Section titled “Reply or add a note”A reply goes to the customer; a note is internal — they're separate commands.
# customer-facing replyhscli conv reply 4831 --body "Your refund is on the way — sorry for the trouble!"
# internal note (not sent to the customer)hscli conv note 4831 --body "Refunded via Stripe, ref #ch_123"Status, tags, assignment
Section titled “Status, tags, assignment”hscli conv status 4831 --set closedhscli conv tag 4831 --add vip --remove waitinghscli conv assign 4831 --user mehscli conv move 4831 --to-mailbox 42Bulk actions
Section titled “Bulk actions”Change status across a whole filter in a single call with conv bulk-status:
hscli conv bulk-status --status active --tag resolved --set closed --yesOr compose with jq and xargs when you need finer control:
hscli conv list --status active \ --jq '.[] | select(.tags[]? == "resolved") | .id' \ | xargs -I{} hscli conv status {} --set closed