Exporting a conversation
In the admin panel, open a conversation, then its info panel, and choose Export thread (PDF). Pick a date range if you only need part of it.
The PDF carries, for every message: the server time in UTC and in the site's timezone, the author and their role as they were at the time, the text, any edits, whether it was deleted, and who read it. Photos appear inline; other attachments are listed with a checksum and included in the download.
Every export is recorded in the audit log, with who did it and when.
Retention
Under Settings > Team chat you choose how long messages are kept. The options run from three months to forever. Attachments expire after ninety days unless the message is pinned, exported, or under legal hold.
When messages pass the retention window they are deleted for good, and the conversation says how far the purge reached, so nobody thinks the history simply vanished.
Legal hold
When something is disputed, an owner can put a conversation or a single message on hold with a written reason. A hold beats retention: nothing under hold is purged, its attachments stop expiring, and held messages cannot be deleted by anybody until the hold is released.
Use it the moment a grievance, an insurance claim or a tribunal is on the horizon, not after the retention window has passed.
When an owner can read a direct message
Managers cannot read direct messages between other people. An owner can, and only like this:
They give a written reason of at least twenty characters.
Both participants are told in the conversation itself.
The access is recorded with who, when, why, and from which device and address.
It lasts twenty-four hours and is read-only.
The record of every access is at Team > Chat access record. Paddl support and super-admins cannot do this at all.
When somebody asks to be deleted
A GDPR erasure anonymises the author name on their messages, so the conversation still reads sensibly without naming them. Anything under legal hold is kept and reported, because a hold is a legal obligation that outranks the request.