Operata does not capture the Contact Lens call transcription content beyond the per-utterance entries shown in the summary payload schema below. To exclude transcript content entirely, configure the Contact Lens transcript redaction rule in your Amazon Connect instance.
Schema
Contact Lens for Amazon Connect emits three distinct payload shapes. The Cloud Collector forwards each to Operata as it arrives.Real-time event
A real-time event fires every time a Contact Lens rule matches during an active Contact.{
"groupId": "a28453f9-abab-cdcd-efef-84d9e67ac297",
"data": {
"account": "012345678910",
"detail": {
"actionName": "TestRealTimeEvent",
"agentArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/agent/af6342c3-aaaa-bbbb-cccc-1871e5844c29",
"contactArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/contact/f5aece6d-aaaa-bbbb-cccc-232fefce309a",
"instanceArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5",
"queueArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/queue/af6342c3-aaaa-bbbb-cccc-1871e5844c29",
"ruleName": "realTimeTest",
"version": "1.0"
},
"detail-type": "Contact Lens Realtime Rules Matched",
"id": "5ea9dae1-aaaa-bbbb-cccc-3475b9b51465",
"region": "ap-southeast-2",
"resources": [],
"source": "aws.connect",
"time": "2026-05-18T10:14:33Z",
"version": "0"
}
}
Post-call event
A post-call event fires once per matched rule after the Contact disconnects.{
"groupId": "a28453f9-abab-cdcd-efef-84d9e67ac297",
"data": {
"version": "0",
"id": "33ad0712-aaaa-bbbb-cccc-0e7dd9b77c0a",
"detail-type": "Contact Lens Post Call Rules Matched",
"source": "aws.connect",
"account": "012345678910",
"time": "2026-05-18T10:27:11Z",
"region": "ap-southeast-2",
"resources": [],
"detail": {
"ruleName": "postCallTest",
"actionName": "testpostcall",
"instanceArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5",
"version": "1.0",
"contactArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/contact/b21e4aae-aaaa-bbbb-cccc-3c517e3dc922",
"agentArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/agent/af6342c3-aaaa-bbbb-cccc-1871e5844c29",
"queueArn": "arn:aws:connect:ap-southeast-2:012345678910:instance/62e2306a-aaaa-bbbb-cccc-5a1508195aa5/queue/8092a344-aaaa-bbbb-cccc-2176c5aa0afe"
}
}
}
Summary
A summary payload arrives once Contact Lens finishes processing the Contact (typically within 15 minutes of disconnect).{
"AccountId": "012345678910",
"Categories": {
"MatchedCategories": [],
"MatchedDetails": {}
},
"Channel": "VOICE",
"ContentMetadata": { "Output": "Raw" },
"ConversationCharacteristics": {
"Interruptions": {
"InterruptionsByInterrupter": {},
"TotalCount": 0,
"TotalTimeMillis": 0
},
"NonTalkTime": {
"Instances": [],
"TotalTimeMillis": 0
},
"Sentiment": {
"OverallSentiment": { "CUSTOMER": 0 },
"SentimentByPeriod": {
"QUARTER": {
"CUSTOMER": [
{ "BeginOffsetMillis": 0, "EndOffsetMillis": 3743, "Score": 0 }
]
}
}
},
"TalkSpeed": {
"DetailsByParticipant": {
"AGENT": { "AverageWordsPerMinute": 0 },
"CUSTOMER": { "AverageWordsPerMinute": 138 }
}
},
"TalkTime": {
"DetailsByParticipant": {
"AGENT": { "TotalTimeMillis": 0 },
"CUSTOMER": { "TotalTimeMillis": 435 }
},
"TotalTimeMillis": 435
},
"TotalConversationDurationMillis": 14975
},
"CustomerMetadata": {
"InputS3Uri": "s3://op.performance.sampling/connect/operata-prod/2026/05/18/139fb487_20260518T1014_UTC.wav",
"ContactId": "139fb487-aaaa-bbbb-cccc-ea068b242bbc",
"InstanceId": "62e2306a-aaaa-bbbb-cccc-5a1508195aa5"
},
"CustomModels": [],
"JobStatus": "COMPLETED",
"LanguageCode": "en-AU",
"Participants": [
{ "ParticipantId": "CUSTOMER", "ParticipantRole": "CUSTOMER" },
{ "ParticipantId": "AGENT", "ParticipantRole": "AGENT" }
],
"Transcript": [
{
"BeginOffsetMillis": 14540,
"Content": "Mhm.",
"EndOffsetMillis": 14975,
"Id": "f483ae5e-aaaa-bbbb-cccc-f1fe3b1fead3",
"LoudnessScore": [83.78],
"ParticipantId": "CUSTOMER",
"Sentiment": "NEUTRAL"
}
],
"Version": "1.1.0"
}
Fields
Real-time event and post-call event
Both events share the same outer envelope. The description column flags any per-event differences.| Name | Type | Required | Description | Example |
|---|---|---|---|---|
groupId | string (UUID) | yes | Operata Group ID this event belongs to. | a28453f9-abab-cdcd-efef-84d9e67ac297 |
data.account | string | yes | AWS account ID that owns the Amazon Connect instance. | 012345678910 |
data.detail.actionName | string | yes | The Contact Lens rule action name configured in your Amazon Connect instance. | TestRealTimeEvent |
data.detail.agentArn | string (ARN) | yes | ARN of the agent assigned to the Contact at the moment the rule matched. | arn:aws:connect:...:agent/af6342c3-... |
data.detail.contactArn | string (ARN) | yes | ARN of the Amazon Connect Contact. | arn:aws:connect:...:contact/f5aece6d-... |
data.detail.instanceArn | string (ARN) | yes | ARN of the Amazon Connect instance. | arn:aws:connect:...:instance/62e2306a-... |
data.detail.queueArn | string (ARN) | yes | ARN of the queue handling the Contact. | arn:aws:connect:...:queue/af6342c3-... |
data.detail.ruleName | string | yes | The Contact Lens rule name that matched. | realTimeTest |
data.detail.version | string | yes | Contact Lens rule schema version. | 1.0 |
data.detail-type | string | yes | Event type. Contact Lens Realtime Rules Matched for real-time events, Contact Lens Post Call Rules Matched for post-call events. | Contact Lens Realtime Rules Matched |
data.id | string (UUID) | yes | Unique ID of the EventBridge event. | 5ea9dae1-aaaa-bbbb-cccc-3475b9b51465 |
data.region | string | yes | AWS region the Amazon Connect instance runs in. | ap-southeast-2 |
data.resources | string[] | yes | EventBridge resources array. Empty for Contact Lens events. | [] |
data.source | string | yes | EventBridge event source. Always aws.connect. | aws.connect |
data.time | string (ISO 8601) | yes | When AWS emitted the event. UTC. | 2026-05-18T10:14:33Z |
data.version | string | yes | EventBridge envelope version. | 0 |
contactId | string (UUID) | no | Operata-derived Contact ID. Present only when the Cloud Collector can match the event to an existing Contact record; absent on standalone real-time events that arrive before the Contact record. | b0c9d4d1-aaaa-bbbb-cccc-ee75d4240340 |
eventId | string (UUID) | no | Operata-assigned event identifier. Present on post-call events. | 33ad0712-aaaa-bbbb-cccc-0e7dd9b77c0a |
timestamp | string (ISO 8601) | no | Operata-assigned ingest timestamp. Present once the Cloud Collector receives the event. | 2026-05-18T10:14:34Z |
Summary
The summary payload mirrors the AWS Contact Lens for Amazon Connect output schema.| Name | Type | Required | Description | Example |
|---|---|---|---|---|
AccountId | string | yes | AWS account ID that owns the Amazon Connect instance. | 012345678910 |
Categories.MatchedCategories | string[] | yes | Category rules matched during the Contact. Empty when no rule matched. | ["BillingComplaint"] |
Categories.MatchedDetails | object | yes | For each matched category, the points in the transcript where the match occurred. Keyed by category name; each value lists PointsOfInterest.BeginOffsetMillis and EndOffsetMillis. | {} |
Channel | string | yes | Contact channel. One of VOICE, CHAT. | VOICE |
ContentMetadata.Output | string | yes | Whether the analysis output is raw or redacted. One of Raw, Redacted. Set per Contact Lens configuration. | Raw |
ConversationCharacteristics.Interruptions.InterruptionsByInterrupter | object | yes | Per-participant interruption breakdown. Keys are participant roles (AGENT, CUSTOMER), values are lists of interruption instances with offset and duration. | {} |
ConversationCharacteristics.Interruptions.TotalCount | integer | yes | Total number of interruptions across the Contact. | 0 |
ConversationCharacteristics.Interruptions.TotalTimeMillis | integer | yes | Total interruption time in milliseconds. | 0 |
ConversationCharacteristics.NonTalkTime.Instances | object[] | yes | List of non-talk segments. Each entry has BeginOffsetMillis, EndOffsetMillis, and DurationMillis. | [] |
ConversationCharacteristics.NonTalkTime.TotalTimeMillis | integer | yes | Total non-talk time in milliseconds. | 0 |
ConversationCharacteristics.Sentiment.OverallSentiment.CUSTOMER | number | yes | Customer overall sentiment score across the Contact, in the range -5 (most negative) to +5 (most positive). | 0 |
ConversationCharacteristics.Sentiment.SentimentByPeriod.QUARTER.CUSTOMER[].BeginOffsetMillis | integer | yes | Start of this conversation quarter in milliseconds from Contact start. | 0 |
ConversationCharacteristics.Sentiment.SentimentByPeriod.QUARTER.CUSTOMER[].EndOffsetMillis | integer | yes | End of this conversation quarter in milliseconds from Contact start. | 3743 |
ConversationCharacteristics.Sentiment.SentimentByPeriod.QUARTER.CUSTOMER[].Score | number | yes | Customer sentiment score for this quarter, in the range -5 to +5. | 0 |
ConversationCharacteristics.TalkSpeed.DetailsByParticipant.AGENT.AverageWordsPerMinute | integer | yes | Agent’s average speaking rate in words per minute. | 0 |
ConversationCharacteristics.TalkSpeed.DetailsByParticipant.CUSTOMER.AverageWordsPerMinute | integer | yes | Customer’s average speaking rate in words per minute. | 138 |
ConversationCharacteristics.TalkTime.DetailsByParticipant.AGENT.TotalTimeMillis | integer | yes | Total time the agent was speaking, in milliseconds. | 0 |
ConversationCharacteristics.TalkTime.DetailsByParticipant.CUSTOMER.TotalTimeMillis | integer | yes | Total time the customer was speaking, in milliseconds. | 435 |
ConversationCharacteristics.TalkTime.TotalTimeMillis | integer | yes | Total talk time across both participants, in milliseconds. | 435 |
ConversationCharacteristics.TotalConversationDurationMillis | integer | yes | Total Contact duration in milliseconds, as measured by Contact Lens. | 14975 |
CustomerMetadata.InputS3Uri | string | yes | S3 URI of the input recording Contact Lens analyzed. | s3://op.performance.sampling/.../139fb487.wav |
CustomerMetadata.ContactId | string (UUID) | yes | Amazon Connect Contact ID this summary applies to. | 139fb487-aaaa-bbbb-cccc-ea068b242bbc |
CustomerMetadata.InstanceId | string (UUID) | yes | Amazon Connect instance ID. | 62e2306a-aaaa-bbbb-cccc-5a1508195aa5 |
CustomModels | object[] | yes | Custom-vocabulary models applied during analysis. Empty when none are configured. | [] |
JobStatus | string | yes | Contact Lens job status. One of COMPLETED, FAILED, PARTIAL_SUCCESS. | COMPLETED |
LanguageCode | string (BCP 47) | yes | Language Contact Lens used to transcribe and analyze the Contact. | en-AU |
Participants[].ParticipantId | string | yes | Participant role identifier. One of CUSTOMER, AGENT, SYSTEM. | CUSTOMER |
Participants[].ParticipantRole | string | yes | Participant role. One of CUSTOMER, AGENT, SYSTEM. | CUSTOMER |
Transcript[].BeginOffsetMillis | integer | yes | Start of this utterance in milliseconds from Contact start. | 14540 |
Transcript[].Content | string | yes | Transcribed text for this utterance. | Mhm. |
Transcript[].EndOffsetMillis | integer | yes | End of this utterance in milliseconds from Contact start. | 14975 |
Transcript[].Id | string (UUID) | yes | Unique ID of this transcript entry. | f483ae5e-aaaa-bbbb-cccc-f1fe3b1fead3 |
Transcript[].LoudnessScore | number[] | yes | Loudness samples (in decibels) measured across the utterance window. | [83.78] |
Transcript[].ParticipantId | string | yes | Which participant spoke this utterance. | CUSTOMER |
Transcript[].Sentiment | string | yes | Sentiment classification for this utterance. One of POSITIVE, NEUTRAL, NEGATIVE, MIXED. | NEUTRAL |
Version | string | yes | Contact Lens output schema version. | 1.1.0 |
groupId | string (UUID) | no | Operata Group ID. Operata appends this on ingest; not present in the raw AWS payload. | a28453f9-abab-cdcd-efef-84d9e67ac297 |
eventId | string (UUID) | no | Operata-assigned event identifier. Operata appends this on ingest. | 33ad0712-aaaa-bbbb-cccc-0e7dd9b77c0a |
contactId | string (UUID) | no | Operata-derived Contact ID matching CustomerMetadata.ContactId. Operata appends this on ingest. | 139fb487-aaaa-bbbb-cccc-ea068b242bbc |
timestamp | string (ISO 8601) | no | Operata-assigned ingest timestamp. | 2026-05-18T10:30:14Z |