Export and privacy
Export conversations as CSV transcripts or summaries, draw a reproducible QA sample, and control what you store and delete.
Browse topics
What it is
This page answers two questions that keep arriving together: "how do I get my conversations out?" and "what am I actually storing about my visitors?"
The short answers:
- Conversations export as CSV. On a chatbot's Conversations tab, Export CSV… downloads the conversations that match your current filters — as full transcripts or as a one-row-per-conversation summary, everything or a random sample, with an option to mask contact details.
- You control what gets collected, mostly through lead capture, before the chatbot ever replies.
- Customers export separately. People and their captured details are a different feature from transcripts, with their own CSV.
If your deployment sets a retention window, conversations older than it are deleted automatically — which turns "I'll export it later" into a problem. The Conversations tab shows a notice with the number of days when a window is in force.
When you would use it
- Someone asks for a copy of the chat history.
- Your team runs a regular quality review and needs a fair sample of conversations to score.
- You want conversation figures in a spreadsheet or a BI tool.
- You are deciding what the chatbot may collect before you go live.
- A visitor asks what you hold about them, or asks to be forgotten.
- You are leaving the product and want to know what happens to the data.
Where to find it
Open Dashboard → Chatbots → your chatbot → Conversations, then the ⋯ menu in the toolbar above the list: Export CSV… sits under Mark all as reviewed. Settings → Customer data (?tab=customer-data) is where you decide what gets collected.
The item is greyed out while your permissions load, and stays greyed out if your role cannot export conversations — see Limits and plan notes below.
Getting data out — what exists
| Data | Bulk export? | How to get it |
|---|---|---|
| Conversation transcripts | Yes, CSV | Export CSV… on the Conversations tab, One row per message |
| One summary line per conversation | Yes, CSV | Export CSV…, One row per conversation |
| Session identifiers | In both files | The conversation_id column, or copy the session ID from the transcript header |
| Customers and their captured details | Yes, CSV | Export customers |
| Analytics | Charted; a chatbot's Analytics tab offers CSV downloads of its sections | Dashboard KPIs |
| Anything programmatic | Owner-only API | Personal access tokens |
The session ID on each transcript is the right thing to quote in an internal ticket: it identifies the conversation exactly without copying the customer's words into another system. Every exported row also carries a conversation_url that opens that conversation in the dashboard.
If you need transcripts on a schedule rather than on demand, the API is the supported path — it is owner-only and requires a token, so it is a deliberate integration rather than a button. See API host and no prefix.
Exporting conversations
The export matches the list. Every filter you have set — search, status, confidence, feedback, review status, channel, visitor, date range, and any chip you arrived with from Analytics — is applied to the file. The dialog tells you how many conversations match before you export. The sort order and the page you are on do not matter: the file holds every matching conversation, newest first.
Rows — pick one shape per file:
- One row per message — full transcripts. Each row is one question and its answer, in order within its conversation, with the turn number, timestamp, status, confidence, response time, credits used, and the visitor's feedback (thumb, rating, thumbs-down reason and comment). This is the shape for QA review.
- One row per conversation — a summary. Each row is one conversation: when it started and last had a message, channel, visitor, language, country, device, start page, message counts (answered, not answered), average confidence, positive and negative feedback counts, handoff, review status, and — when AI insights have run — sentiment, outcome, topic and the one-line summary. This is the shape for reporting.
Which conversations:
- All matching conversations — everything the filters show, up to the row limit.
- Random sample — a set of whole conversations drawn at random from what the filters show. Pick a size (25, 50, 100, 250 or 500) and, optionally, a seed.
Options:
- Mask emails, phone numbers and IP addresses — scrubs them out of messages, notes, feedback comments, page addresses and summaries. Visitor names and emails are replaced too. Visitor IDs stay, so rows from one visitor still group together.
- Include review notes — adds your team's internal review note as the last column.
Columns are named in plain English (started_at, user_message, ai_response, …) and never change with your interface language, so a spreadsheet formula or a BI import keeps working. Times are in your own timezone, and a timezone column says which one.
The file name says what is in it: the chatbot, the shape, the sample size and seed if you sampled, and the date range — for example agentency-support-bot-conversations-transcripts-sample50-seed81723-2026-09-01_2026-09-30.csv.
Sampling for quality reviews
A random sample is the fair way to answer "how good are our answers, overall?" — reading only the threads that complained gives you a skewed picture.
- Sample whole conversations, not single messages. The export always does: a sampled conversation comes with every one of its messages.
- Fix the population first. Set the filters that define what you are reviewing (this chatbot, last week, the website channel), then sample from it.
- 25–50 conversations make a good weekly check. Larger samples give a tighter estimate; a few hundred is enough for a firm number.
- Keep the seed. The same seed over the same set of conversations draws the same sample, so a colleague can reproduce yours or score the same set. The seed is in the success message and in the file name. Leave the seed empty and a new one is generated for you.
- Use filters for targeted reviews. Negative feedback, Not answered, handoff requested or low confidence are queues to work through in full — filter to them and export All matching conversations instead of sampling.
A sample changes when the population does: new conversations arriving, a different filter, or a relative date range like Last 7 days moving forward all give a different draw from the same seed. For a sample you need to reproduce later, use a fixed custom date range.
What you are storing, and where you control it
Conversation content. Everything typed on both sides, plus timing, confidence, and the sources used. This is unavoidable — it is the product. What you can control is how long it lives, via retention, and whether the chatbot invites people to type sensitive things in the first place.
Visitor identity. Only if your own site passes it in. An anonymous website visitor stays anonymous. See Name visitors on the widget.
Lead capture. This is the big one, and it is entirely your choice. On Settings → Customer data you decide whether to ask for details before the first reply, which fields, which are required, and what privacy notice appears. Turn it off and you store no contact details at all. See Lead capture fields and Collect visitor details.
Practical privacy rules
Ask for the least you need. Every optional field is data you have to protect and eventually delete. An email address is usually enough; a phone number, a company, and a job title on a first visit are usually not.
Write a real privacy notice. The lead-capture form shows one. Say what you will use the details for and link your own privacy policy.
Do not put secrets into the chatbot. Not in Test Chatbot, not in instructions, not in a knowledge document. Anything you paste is stored and is readable by every teammate with access to that chatbot. That includes API keys, passwords, and customer records you were only shown once.
Instruct the chatbot to refuse sensitive input. If your visitors might volunteer card numbers or medical details, add an instruction telling it not to ask for or repeat them. See Write instructions.
Remember teammates can read everything. Anyone with permission to view conversations on a chatbot sees every thread on it, including your test chats. Grant the narrowest role that works — see Roles and permissions.
Mask before you share. If a file is going to someone who does not need to know who said what — an outside reviewer, a vendor, a training set — export it with Mask emails, phone numbers and IP addresses on. Masking catches the common patterns, not every possible identifier, so still read a file before it leaves your team.
Treat an export like the personal data it is. An unmasked transcript file holds visitors' own words and any contact details they typed, in plain text. Do not email it around or leave it in a shared drive, and delete it when you are done.
Deleting data
There is no per-message or per-email eraser on the transcript. Your available tools, from smallest to largest:
- Anonymise a customer — removes the identifying details of one person while leaving your aggregate numbers intact. See Anonymize a customer.
- Turn off lead capture — stops collecting anything new from that point.
- Delete the chatbot — takes its conversations and captured customers with it, permanently. See Delete a chatbot.
- Delete your account — removes the whole workspace after a grace period during which signing in cancels it. See Delete your account.
- Retention — if your deployment sets a window, old conversations are pruned automatically without anyone clicking anything.
For a subject-access or erasure request, work from the most specific tool that satisfies it: anonymise the customer record first, and reach for deleting a whole chatbot only when the request genuinely requires it.
A CSV you already downloaded is a separate copy. Deleting or anonymising data in Agentency does nothing to it — delete the file too.
Steps
- Open Conversations and set the filters that describe what you need. Check the count in the summary cards.
- Open the ⋯ menu and select Export CSV….
- Under Rows, choose One row per message for transcripts or One row per conversation for a summary.
- Under Which conversations, keep All matching conversations, or choose Random sample, a size, and a seed if you want to reproduce an earlier draw.
- Tick Mask emails, phone numbers and IP addresses if the file will leave your team, and Include review notes if you want your team's notes in it.
- Select Export CSV and wait for the download — a large file takes a few seconds to prepare.
- Open Settings → Customer data and review lead capture: is it on, which fields, and does the privacy notice say something true?
- Turn off any field you do not actively use.
- Check the Conversations tab for a retention notice, and export what you need to keep before that window closes.
What you will see
The ⋯ menu above the conversations list holds Mark all as reviewed and Export CSV…. The export dialog states how many conversations match your filters, then offers the row shape, the selection, the sample size and seed, and the two options. While the file is prepared the button reads Preparing your file… and the dialog cannot be closed. When the download starts you see Exported N conversations, or Random sample of N conversations · seed S for a sample.
Customer data is a settings tab with the lead form and its consent copy. Where retention is enabled, an information notice at the top of the conversations list states the number of days and warns that older conversations are deleted automatically.
Limits and plan notes
Up to 20,000 rows per file. For transcripts a row is one message, so a busy month can pass the limit long before 20,000 conversations; for the summary a row is one conversation. Above the limit the dialog says how many rows the export would have and offers Switch to random sample — or narrow the filters or the date range.
Samples of up to 500 conversations, drawn from at most 100,000 matching conversations. Narrow the filters first if more than that match.
A few exports per minute. Exporting is rate-limited; if you hit the limit, wait a moment and try again.
Downloads straight away. The file streams to your browser while you wait. Nothing is queued or emailed, and there is no scheduled export.
Who can export. Owners can always export. Members need a role that can manage conversations — or, on team workspaces, a role with permission to export conversations (Admin and Analyst have it; Developer does not). View-only members cannot export. See Roles and permissions.
Exports are recorded. Every export leaves an entry in the audit trail: which chatbot, which shape, how many conversations and rows, the sample size and seed, whether masking was on, and which filters were active — never their values, and never the contents.
Reading conversations needs permission to view them. The customers CSV export needs the customers permission, and it is recorded in the customer's own timeline. Developer API access is owner-only.
Members only ever see the account they have switched into. Deleting the owner's account takes that workspace's conversations with it once the grace period expires.
Common problems
Export CSV… is greyed out.
Your permissions are still loading, or your role cannot export conversations. Ask the account owner for a role that can.
The export says it is too large.
The file would pass the row limit. Narrow the filters or the date range, export one row per conversation instead of one per message, or select Switch to random sample.
Conversations are missing from the file.
A filter was still active — most often a date range, a review-status tab, or a chip you arrived with from Analytics. Clear the filters, check the count, and export again.
The same seed gave me a different sample.
The set of conversations it was drawn from changed — new conversations arrived, a filter differs, or a relative date range moved on. Use the same filters with a fixed custom date range to reproduce a sample.
Arabic or accented text looks like nonsense in Excel.
Open the downloaded file directly, without re-saving it through another tool first. The file starts with an invisible marker that tells Excel it is UTF-8; a converter that strips it makes Excel guess wrong.
A cell starts with a quote mark.
That is intentional. A value that begins with a character a spreadsheet would treat as a formula is escaped so it stays plain text.
A visitor asked to be forgotten.
Anonymise their customer record, stop collecting the field that identified them, and — only if the request truly requires it — delete the chatbot that holds the thread. There is no per-email eraser on transcripts. Delete any export that contains them, too.
Are my Test Chatbot conversations private?
Visitors never see them, but they are stored like any other conversation and every teammate with conversation access can read them — and they appear in exports. Do not use Test Chatbot as a scratchpad for sensitive text.
Does pausing the chatbot delete its chats?
No. Pausing only closes the public door. Deleting the chatbot is what removes its conversations. See Activate or pause a chatbot.
My old conversations disappeared.
Check the retention notice at the top of the conversations list. If a window is set, older conversations are pruned automatically.
Common questions
Was this article helpful?
Related articles
Read a conversation
Open a thread for the full transcript, session statistics, the visitor card, sources, and the review toggle.
Set lead capture fields
Choose what your chatbot asks for before its first reply, under Settings → Customer data. Off until you switch it on.
Anonymize a customer
Permanently strip a person's identity from your workspace, including their chat text. Irreversible, and the right tool for an erasure request.
Delete your account
Deletion is scheduled with a 30-day grace period. Signing back in during that window cancels it completely.
Ready to try it on your own content?
Create a free workspace, add a document, and ask the questions your team is tired of answering.