A Contact Trace Record (CTR) is an immutable JSON document that Amazon Connect generates for every contact — voice call, chat, or task. It captures the complete lifecycle of a contact: when it initiated, how long it waited in queue, which agent handled it, how long they spoke, hold times, ACW duration, disconnect reason, and much more. CTRs are essential for quality management, compliance, billing reconciliation, and performance analytics.
What is an Amazon Connect CTR and where do I find it?
A CTR (Contact Trace Record) is the official JSON record for every contact in Amazon Connect. You can access CTRs via: Amazon Kinesis Data Stream (real-time), Amazon S3 (storage), Amazon Connect APIs (GetContactAttributes, DescribeContact), or the Contact Search UI in the Connect console. CTRs are retained for 24 months by default.
What is the difference between AgentInteractionDuration and ConnectedToAgentTimestamp?
ConnectedToAgentTimestamp is the wall-clock time when the agent accepted the contact. AgentInteractionDuration is the total seconds the agent was actively talking (excluding hold time). A contact with 300s AgentInteractionDuration and 60s CustomerHoldDuration had a total connected time of 360s. ACW (After Contact Work) is tracked separately as AfterContactWorkDuration.
What are the possible values for InitiationMethod in a CTR?
INBOUND (customer called), OUTBOUND (agent initiated a call via the CCP), TRANSFER (agent transfer via quick connect, creates a new contact record), CALLBACK (customer requested callback), API (contact initiated via API, e.g. StartOutboundVoiceContact or StartChatContact — chat contacts are always API), QUEUE_TRANSFER (transferred to another queue via a flow block), DISCONNECT (new contact created while a Set disconnect flow runs), MONITOR (supervisor silent monitor or barge), EXTERNAL_OUTBOUND (agent-initiated call to an external party), WEBRTC_API (communication widget video call), AGENT_REPLY (agent reply to an inbound email), FLOW (email initiated by a Send message flow block), CAMPAIGN_PREVIEW (outbound campaign preview dialing).
What is handle time in Amazon Connect and how is it calculated?
Handle Time = AgentInteractionDuration + CustomerHoldDuration + AfterContactWorkDuration. It represents the total time an agent spent on a contact from pickup to completing ACW. Amazon Connect also reports Average Handle Time (AHT) as a real-time and historical metric in the Contact Control Panel and reporting dashboards.
What does DisconnectReason tell you about a contact?
For voice: CUSTOMER_DISCONNECT (customer hung up), AGENT_DISCONNECT (agent ended the call), CONTACT_FLOW_DISCONNECT (a disconnect block in the flow ended it — often an abandoned-in-queue signal), BARGED (a supervisor disconnected the agent), THIRD_PARTY_DISCONNECT, OTHER, plus telecom-specific reasons (TELECOM_BUSY, TELECOM_UNANSWERED, TELECOM_TIMEOUT, TELECOM_NUMBER_INVALID, etc.) and CUSTOMER_NEVER_ARRIVED for web-calling contacts that never connected. Chat, task, and email channels each have their own reason sets (e.g. EXPIRED, API, IDLE_DISCONNECT for chat). High CONTACT_FLOW_DISCONNECT rates usually indicate queue abandonment. Note: values like OUTBOUND_CONTACT_ABANDONED or TRANSFER_FAILED sometimes appear in older integrations/community references but are not part of AWS's current documented list — treat them as informational only if you see them.
What Contact Lens data appears in a CTR?
When Contact Lens is enabled, CTRs include: SentimentScore (per-turn sentiment for agent and customer, -5 to +5), Categories (matched rules like "complaints" or "escalations"), Issues (auto-detected topics), OutcomeCodes (call outcomes), ActionItems (follow-up tasks), and ConversationalCharacteristics (talk time, interruptions, non-talk time). Contact Lens data is appended after the recording is processed, typically within minutes.
Does every contact generate a CTR?
No. CTRs are generated once a call ends and the agent's status moves out of ACW, when a contact is transferred, or when a contact is abandoned in queue. Very short-lived contacts — for example a customer hanging up immediately after dialing, before any flow or queue interaction — may not produce a CTR at all. This is a common source of "missing" records when reconciling telephony logs against CTR counts.
How do I pull historical CTRs, and can records repeat?
Three main paths: the Kinesis Data Stream for real-time delivery, an S3 export (queryable with Athena/QuickSight) for historical analysis, or the GetContactAttributes/DescribeContact/SearchContacts APIs for on-demand lookups. Records are retained for 24 months and delivered at least once — Amazon Connect can redeliver a CTR after an update (for example, update-contact-attributes), so use LastUpdateTimestamp to detect newer copies and ContactId to deduplicate when processing bulk exports.