playbook
How to redact customer tickets before using AI
A practical redaction workflow for small teams that want to use ChatGPT or other AI tools on customer support tickets without exposing unnecessary personal, account, billing, or security data.
Bottom line
Small teams should not paste raw customer tickets into ChatGPT, Claude, Gemini, or any other AI assistant by default. A support ticket can contain names, email addresses, phone numbers, IP addresses, account IDs, invoices, secrets, screenshots, log excerpts, health details, financial details, contract terms, and security incident context. The safest workflow is to redact first, then ask the AI to help with the narrow task.
Use this rule:
Only send the minimum ticket content needed for the AI task, and remove identifiers, credentials, payment details, regulated data, and unrelated customer context before prompting.
Before approving a workflow, run the AI Tool Risk Checker and record the policy in the Small Team AI Security Checklist. If the team uses ChatGPT Business, pair this with the ChatGPT Business retention questions guide and the ChatGPT connector approval template.
Redaction decision table
| Ticket content | Default action before AI | Example replacement |
|---|---|---|
| Customer name, email, phone, address | Replace unless needed for the task. | [customer_name], [customer_email], [phone] |
| Company name or account name | Replace when not needed; keep role/context if relevant. | [customer_company], enterprise customer, trial account |
| Account ID, tenant ID, order ID, invoice ID | Replace with stable placeholders. | [account_id_1], [invoice_id_1] |
| Billing card, bank, tax, payment, refund details | Remove unless the AI task is explicitly payment-policy drafting. | [billing_detail_removed] |
| Password, API key, token, session cookie, private key | Remove completely and treat as an incident. | [secret_removed] |
| IP address, device ID, access logs, trace IDs | Replace unless required for troubleshooting. | [ip_address_1], [trace_id_1] |
| Screenshots or attachments | Summarize manually; do not upload by default. | Screenshot shows login error after SSO redirect. |
| Health, HR, legal, child, financial, government, or regulated data | Do not send through the lightweight workflow. | Route to owner/legal/security. |
| Security vulnerability or incident details | Remove exploit details, secrets, customer identity, and internal system names. | [vulnerability_summary] |
| Unrelated messages in the ticket thread | Remove. | Keep only the relevant support issue. |
The point is not to make the ticket anonymous in a legal sense. The point is to minimize unnecessary exposure before the AI tool sees the content.
Step-by-step workflow
Use this workflow for ticket summarization, reply drafting, sentiment analysis, or routing.
- Classify the ticket: public, internal, customer, sensitive customer, regulated, or security incident.
- Decide the AI task: summarize, draft response, classify urgency, extract troubleshooting steps, or identify missing information.
- Copy only the needed ticket excerpts, not the whole thread.
- Remove identifiers, secrets, billing details, regulated data, and unrelated customer history.
- Replace necessary identifiers with stable placeholders.
- Add a short context block that explains the product area, support goal, and constraints.
- Prompt the AI not to infer missing facts, invent policy, or include removed data.
- Review the output before pasting it into the ticketing system.
- Delete or retain the AI conversation according to the approved retention rule.
- Record exceptions, especially if raw customer data was used.
If the ticket contains secrets, credentials, or private keys, stop the AI workflow and treat it as a security incident.
Redaction template
Copy this prompt wrapper after redacting the ticket.
Task:
Draft a concise support reply for the ticket below.
Rules:
- Do not infer customer identity or account details.
- Do not include placeholders in the final customer-facing reply.
- Do not mention internal policy, security controls, or removed data.
- Ask for missing information instead of inventing facts.
- Keep the tone calm, specific, and action-oriented.
Context:
Product area:
Known issue:
Allowed recommendation:
Do not mention:
Redacted ticket:
[customer_name] reports that [issue_summary].
Account type: [account_type]
Relevant error: [error_message]
Troubleshooting already attempted:
- [step_1]
- [step_2]
For internal triage instead of customer replies, change the task:
Task:
Summarize the redacted ticket for internal triage. Return:
1. Customer impact
2. Likely product area
3. Missing information
4. Suggested next owner
5. Whether this should be escalated
Ticket redaction checklist
- I copied only the relevant ticket excerpt.
- I removed names, emails, phone numbers, addresses, and company identifiers unless required.
- I removed passwords, API keys, tokens, cookies, private keys, and credentials.
- I removed payment, invoice, tax, bank, and refund details unless explicitly approved.
- I removed regulated health, HR, child, government, legal, or financial data.
- I replaced account, tenant, invoice, order, and trace identifiers with placeholders.
- I summarized screenshots and attachments instead of uploading them.
- I removed unrelated customer history and internal notes.
- I told the AI not to invent facts or reintroduce removed information.
- I reviewed the output before sending it to a customer.
- I followed the approved deletion or retention rule for the AI conversation.
Examples
| Raw ticket excerpt | Better AI-ready excerpt |
|---|---|
Hi, this is Jane Smith from Acme Medical. My card ending 4242 failed for invoice INV-88423. Phone: +1-555-0189. | [customer_name] from [customer_company] says a payment failed for [invoice_id]. Remove card and phone details. Draft a request for the customer to update payment details through the secure billing portal. |
Bearer eyJ... is returning 403 in tenant tnt_82ff. Can you check our logs? | [customer] reports API requests are returning 403 for [tenant_id]. Secret/token was present and removed. Treat as credential exposure; do not paste token into AI. |
Here is a screenshot with the patient's name and appointment notes. | Do not upload screenshot. Manually summarize: customer reports scheduling issue after clicking reschedule link. Route to approved regulated-data workflow. |
Slack thread says Customer B is probably churning and the CEO is angry. | Remove unrelated internal commentary. Keep only the support issue and customer-facing facts needed for a reply. |
Approval record
Use this record before a team uses AI on customer tickets.
Customer ticket AI redaction approval
Workflow:
Ticket system:
Business owner:
Support owner:
AI tool:
Allowed ticket categories:
Prohibited ticket categories:
Allowed AI tasks:
Prohibited AI tasks:
Data to remove:
Placeholders to use:
Files/screenshots allowed:
Retention rule:
Escalation triggers:
Review sample owner:
Approval date:
Review date:
Escalation triggers
Do not use the normal redaction workflow when any of these appear:
| Trigger | What to do |
|---|---|
| Secret, token, password, cookie, private key, or credential | Stop and route to security or the credential owner. |
| Health, HR, child, legal, financial, government, or regulated data | Route to the responsible owner before AI use. |
| Customer contractual confidentiality terms | Check the contract owner before using an external AI tool. |
| Security incident, vulnerability, abuse report, or breach allegation | Use incident response workflow, not normal support drafting. |
| Bulk export of many tickets | Require approval, sampling, and stronger controls before processing. |
| Connected app or helpdesk connector | Use the connector approval template before enabling access. |
Evidence checked
- OpenAI business data privacy, security, and compliance
- OpenAI Data Controls FAQ
- FTC Protecting Personal Information: A Guide for Business
- FTC Data Security guidance
- NIST Privacy Framework
- NISTIR 8053 De-Identification of Personal Information
- OWASP Top 10 for Large Language Model Applications
FAQ
Is redaction enough to make customer tickets safe for AI?
No. Redaction reduces exposure, but it does not automatically make a workflow compliant, confidential, or risk-free. Use it with tool approval, access controls, retention rules, and human review.
Can we use ChatGPT Business with customer tickets?
Possibly, if the workflow is approved and scoped. OpenAI says ChatGPT Business workspace data is not used for training by default, but your team still needs redaction, retention, access, and customer-commitment rules.
Should we paste the full ticket thread?
Usually no. Copy the minimum relevant excerpt. Full threads often include unrelated customer names, internal notes, billing context, old attachments, and security details.
What if the AI needs an account ID to troubleshoot?
Use a placeholder unless the exact ID is required for the task. If exact identifiers are needed, route the work through an approved internal workflow rather than casual chat.
Can we upload screenshots?
Not by default. Screenshots often contain names, emails, account IDs, addresses, browser tabs, internal URLs, tokens, or regulated data. Summarize the screenshot manually unless uploads are explicitly approved.
Recommended next step
Take one recent customer ticket, redact it with the checklist above, and run the AI Tool Risk Checker for the workflow. Add the approved rule to the Small Team AI Security Checklist.