Banking Customer Support Chat Logs
This dataset provides detailed records of digital banking customer support chat sessions, including full transcripts, participant identifiers, timestamps, issue categories, resolution outcomes, and customer satisfaction ratings. Designed for customer experience analysis and automated agent training, it enables deep insights into support interactions, common issues, and service quality trends.
Sample rows
preview · 8 of 200 rows · all 15 columns| chat_idstring | resolution_statusstring | agent_message_countinteger | follow_up_requiredboolean | issue_categorystring | customer_idstring | agent_idstring | agent_typestring | chat_start_timedatetime | chat_end_timedatetime | chat_duration_secondsinteger | customer_message_countinteger | customer_satisfaction_ratinginteger | languagestring | chat_transcriptstring |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CHAT00001 | resolved | 3 | false | card lost | CUST1001 | BOT2001 | bot | 2024-02-12T08:05:21Z | 2024-02-12T08:06:51Z | 90 | 2 | 4 | en | [08:05:21] Customer: Hi, I lost my card. [08:05:30] BOT: Sorry to hear that. Would you like to block it now? [08:05:46] Customer: Yes, please. [08:06:01] BOT: Your card is now blocked. [08:06:51] BOT: Is there anything else I can help you with? |
| CHAT00002 | resolved | 12 | false | account access | CUST1002 | AGT1002 | human | 2024-02-12T10:14:02Z | 2024-02-12T10:32:41Z | 1160 | 11 | 5 | en | [10:14:02] Customer: I can't log in to my account. [10:14:10] AGT1002: I'm sorry to hear that. Can you tell me the error message? [...] [10:32:41] AGT1002: Your password has been reset. Please try again. |
| CHAT00003 | resolved | 2 | false | order status | CUST1003 | BOT2002 | bot | 2024-02-12T11:05:12Z | 2024-02-12T11:05:25Z | 13 | 1 | 4 | en | [11:05:12] Customer: Order status? [11:05:17] BOT: Your order #2345 is being processed. [11:05:25] BOT: Is there anything else? |
| CHAT00004 | resolved | 14 | false | profile update | CUST1002 | AGT1003 | human | 2024-02-12T14:22:00Z | 2024-02-12T14:52:20Z | 1820 | 14 | 5 | en | [14:22:00] Customer: I need to update my phone number. [14:22:15] AGT1003: Of course, may I have your current info? [...] [14:52:20] AGT1003: Your profile has been updated. |
| CHAT00005 | unresolved | 1 | false | blank | CUST1004 | BOT2003 | bot | 2024-02-12T15:50:42Z | 2024-02-12T15:51:12Z | 30 | 0 | blank | en | [15:50:42] BOT: Hello! How can I assist you today? [15:51:12] BOT: Session ended due to inactivity. |
| CHAT00006 | resolved | 2 | false | general inquiry | CUST1005 | BOT2004 | bot | 2024-02-12T16:33:10Z | 2024-02-12T16:34:30Z | 80 | 1 | 3 | en | [16:33:10] Customer: I have a general question about fees. [16:33:25] BOT: Sure, what would you like to know? [16:34:30] BOT: For detailed fee info, please visit our website. |
| CHAT00007 | resolved | 13 | false | payment issue | CUST1006 | AGT1004 | human | 2024-02-12T17:05:22Z | 2024-02-12T17:25:17Z | 1195 | 12 | 4 | en | [17:05:22] Customer: My payment didn't go through. [17:05:30] AGT1004: Can you provide transaction details? [...] [17:25:17] AGT1004: The payment issue is resolved. |
| CHAT00008 | resolved | 1 | false | order status | CUST1007 | BOT2005 | bot | 2024-02-12T18:10:10Z | 2024-02-12T18:10:25Z | 15 | 1 | 4 | es | [18:10:10] Customer: Hola, ¿dónde está mi pedido? [18:10:25] BOT: Su pedido está en camino. |
| CHAT00009 | resolved | 2 | false | card lost | CUST1008 | BOT2006 | bot | 2024-02-12T18:15:00Z | 2024-02-12T18:16:40Z | 100 | 1 | 4 | fr | [18:15:00] Customer: J'ai perdu ma carte. [18:15:20] BOT: Nous bloquons votre carte maintenant. [18:16:40] BOT: Votre carte est bloquée. |
| CHAT00010 | resolved | 16 | false | profile update | CUST1009 | AGT1005 | human | 2024-02-12T19:01:10Z | 2024-02-12T19:29:19Z | 1689 | 15 | 5 | en | [19:01:10] Customer: How do I change my address? [19:01:25] AGT1005: Let me assist you. Please provide your new address. [...] [19:29:19] AGT1005: Address successfully updated. |
| CHAT00011 | resolved | 1 | false | order status | CUST1010 | BOT2007 | bot | 2024-02-13T07:30:00Z | 2024-02-13T07:30:12Z | 12 | 1 | 3 | en | [07:30:00] Customer: Where is my order? [07:30:12] BOT: Your order is being processed. |
| CHAT00012 | resolved | 13 | false | account access | CUST1011 | AGT1006 | human | 2024-02-13T08:00:00Z | 2024-02-13T08:29:15Z | 1755 | 13 | 5 | en | [08:00:00] Customer: I can't access my account. [08:00:12] AGT1006: What error do you see? [...] [08:29:15] AGT1006: Your access is restored. |
| CHAT00013 | escalated | 29 | true | billing dispute | CUST1012 | AGT1007 | human | 2024-02-13T09:10:45Z | 2024-02-13T10:12:05Z | 3700 | 28 | 2 | en | [09:10:45] Customer: I want to dispute a transaction. [09:11:01] AGT1007: Can you provide details? [...] [10:12:05] AGT1007: Your case has been escalated for further review. |
| CHAT00014 | resolved | 2 | false | card lost | CUST1013 | BOT2008 | bot | 2024-02-13T10:40:00Z | 2024-02-13T10:41:58Z | 118 | 2 | 3 | de | [10:40:00] Customer: Was ist mit meiner Karte? [10:40:15] BOT: Ihre Karte ist aktiv. [10:41:58] BOT: Kann ich noch helfen? |
| CHAT00015 | unresolved | 1 | false | blank | CUST1014 | BOT2009 | bot | 2024-02-13T11:28:13Z | 2024-02-13T11:29:13Z | 60 | 0 | blank | en | [11:28:13] BOT: Hello! How can I help you today? [11:29:13] BOT: Session ended due to inactivity. |
| CHAT00016 | escalated | 29 | true | multiple | CUST1003 | AGT1008 | human | 2024-02-13T12:16:15Z | 2024-02-13T13:12:33Z | 3378 | 27 | 1 | en | [12:16:15] Customer: I have multiple issues with my account and card. [12:16:30] AGT1008: Let's address them one by one. [...] [13:12:33] AGT1008: I've escalated your case for further investigation. |
| CHAT00017 | resolved | 11 | false | payment issue | CUST1015 | AGT1009 | human | 2024-02-13T13:45:02Z | 2024-02-13T14:11:57Z | 1615 | 10 | 4 | en | [13:45:02] Customer: I want to check the status of my payment. [13:45:16] AGT1009: Let me look it up. [...] [14:11:57] AGT1009: Your payment is now complete. |
| CHAT00018 | unresolved | 2 | false | payment issue | CUST1016 | BOT2010 | bot | 2024-02-13T14:30:00Z | 2024-02-13T14:31:20Z | 80 | 1 | blank | ru | [14:30:00] Customer: Оплата не прошла. [14:30:20] BOT: Пожалуйста, проверьте реквизиты. [14:31:20] BOT: Свяжитесь с поддержкой, если проблема не решена. |
| CHAT00019 | resolved | 8 | false | profile update | CUST1017 | AGT1010 | human | 2024-02-13T15:12:25Z | 2024-02-13T15:37:13Z | 1488 | 9 | 5 | en | [15:12:25] Customer: Can you help update my email? [15:12:39] AGT1010: Certainly, please provide your new email address. [...] [15:37:13] AGT1010: Your email has been updated. |
| CHAT00020 | resolved | 2 | false | order status | CUST1018 | BOT2011 | bot | 2024-02-13T16:28:00Z | 2024-02-13T16:30:00Z | 120 | 2 | 3 | en | [16:28:00] Customer: I need help with my order. [16:28:30] BOT: What seems to be the issue? [16:29:10] Customer: I didn't receive it. [16:30:00] BOT: I will check the status for you. |
What the 200 rows show
from the 200-row sampleEscalated (resolution status) stands out: mean agent_
- 11%follow_
up_ required = true - 3median agent_
message_ count - 2agent types
- 5languages
- 120median chat_
duration_ seconds - 2median customer_
message_ count
Every row with agent_
- string 8
- integer 4
- datetime 2
- boolean 1
Columns
15 columns in four groups| column | type | description | example |
|---|---|---|---|
| Text 8 columns | |||
chat_id | string | Unique identifier for each customer support chat sessionunique | CHAT00001 |
customer_id | string | Unique identifier for the customer participating in the chat | CUST1001 |
agent_id | string | Unique identifier for the support agent (human or bot) handling the chat | BOT2001 |
agent_type | string | Type of agent handling the chat (e.g., human, bot)human · bot | bot |
chat_transcript | string | Full text transcript of the chat session, with speaker labels and timestamps | [08:05:21] Customer: Hi, … |
issue_category | string | Categorized topic or issue type discussed in the chat (e.g., account access, payment issue, card lost)8 categories · optional | card lost |
resolution_status | string | Status indicating if and how the customer's issue was resolved (e.g., resolved, unresolved, escalated)resolved · unresolved · escalated | resolved |
language | string | Primary language used in the chat session (ISO 639-1 code, e.g., 'en', 'es')5 languages | en |
| Numbers 4 columns | |||
chat_duration_seconds | integer | Total duration of the chat session in seconds1 or more | 90 |
customer_message_count | integer | Number of messages sent by the customer during the chat0 or more | 2 |
agent_message_count | integer | Number of messages sent by the agent during the chat0 or more | 3 |
customer_satisfaction_rating | integer | Customer's satisfaction rating for the chat session, typically on a 1-5 scale1 to 5 · optional | 4 |
| Dates and times 2 columns | |||
chat_start_time | datetime | Timestamp when the chat session started | 2024-02-12T08:05:21Z |
chat_end_time | datetime | Timestamp when the chat session ended | 2024-02-12T08:06:51Z |
| True or false 1 column | |||
follow_up_required | boolean | Indicates whether a follow-up action is required after the chat session | false |
15 SQL practice questions for the Banking Customer Support Chat Logs
Written for this data and checked against it: 12 SQL and 3 Power BI exercises from beginner to advanced. Try the first three free; the practice kit has all 15, a starter .sql file and an answer key with every expected result.
Distinct issue categories
Return the distinct, non-null issue_category values from the chat logs, sorted alphabetically. The result should have one column named issue_category.
Tables: banking_customer_support_chat_logs · your result: 1 columns, 8 rowsChats per resolution status
Return each resolution_status along with the number of chats that have it, named chat_count. Order the results by chat_count from highest to lowest, then by resolution_status alphabetically.
Tables: banking_customer_support_chat_logs · your result: 2 columns, 3 rowsAverage duration by agent type
Return each agent_type and the average chat_duration_seconds as avg_duration, rounded to 2 decimals. Order the results by agent_type.
Tables: banking_customer_support_chat_logs · your result: 2 columns, 2 rows
- 04Escalated English chats with human agentsBeginner
- 05Average rating by languagePower BI
- 06Categories with many unresolved chatsIntermediate
- 07Chat duration bucketsIntermediate
- 08Languages rated above the overall averageIntermediate
- 09Chats and escalations per monthIntermediate
- 10Follow-up rate by issue categoryPower BI
- 11Rank categories by escalationsAdvanced
- 12Gap since a customer's previous chatAdvanced
- 13Running total of chats per monthAdvanced
- 14Share of chats by languageAdvanced
- 15Unusually long human chatsPower BI
Get the practice kit: the full dataset, all 15 exercises, a starter .sql and the answer key. One-time $3.99.
Get the practice kit · $3.99Use it for
A finance dashboard
The follow_
up_ required rate, agent_ message_ count by resolution_ status and a breakdown of issue_ category. Excel, Power BI or Tableau. Why do the 21 escalated rows have a mean agent_
message_ count of 35.6? A root-cause class exercise
Hand out the rows and one question. The answer is in the data, not in the brief.
- Chats200CHAT000013resolvedCHAT0001329escalatedCHAT0001629escalated
A software demo
Believable chats with customer_
id, agent_ id and agent_ type to fill a screen in front of a buyer.
blueprint · banking-customer-support-chat-logs
Behind this dataset
Same schema. As many rows as you need.
These 200 rows came out of a blueprint — 15 columns with generation rules behind each one. Open it in Data Factory to retune a column, add your own, wire in foreign keys, and run it at the size you actually need.
- Chat ID with anonymized participants.
- Chat transcript segmented by speaker.
- Intent and outcome categorized.
- Sensitive information redacted.
1 credit per row. Preview 20 rows free. Buy rows for the full run.
- Exports
- CSV, JSON, JSONL, Parquet, SQL, Excel, TSV, XML
- Licence
- yours to use, including commercially
- API slug
- banking-customer-support-chat-logs