Hey Mark,
I would recommend you use {{conversation.SummaryAgent.transcript}} in the email body. It is available by enabling the Summary Agent and setting Transcript Max Messages to 0 for the whole back-and-forth (or up to 100), and {{conversation.SummaryAgent.summary}} alongside it if you also want a one-paragraph "here's what they were trying to do."
If you need more control over the formatting, the two alternatives are the built-in event.state.session.history array (last 30 turns, each preview capped at 300 characters, mapped to text in an Execute Code card) or building your own string in Before Incoming / Before Outgoing hooks, e.g. appending each message to event.state.session.fullHistory, which has no length cap beyond the 128 kB session limit.