Webhook Data Dictionary

Prev Next
This content is currently unavailable in Ja - 日本語. You are viewing the default (English) version.

Webhook Data Dictionary

Overview

This article defines the fields and event types ScreenMeet sends in webhook payloads. Use it to parse webhook events, track session state, and sync session data into an external system such as a CRM or ticketing platform.

To create a webhook and verify its signature, see Configuring Webhooks for Data Sync.


Payload Format

Every webhook request body is a JSON array containing one or more event objects. The body is an array even when it contains a single event, so always iterate over it.

Each event is a denormalized JSON object. Not every event contains every field, so treat the data as sparse and check for a field before reading it.

Events Can Arrive in Batches
ScreenMeet can deliver several events in one request, including events that occurred earlier in the session. In batched events, status reflects the session status when the batch was sent, not when each event occurred. Use ts to order events and use type to determine what happened.

Event Fields

FieldTypeDescription
typestringThe event name. See Event Types.
tsISO date string or integerWhen the event occurred. Most events use an ISO 8601 string, such as 2026-01-01T15:00:00.000Z. Some events, including session-activated, use Unix epoch milliseconds, such as 1767279600000. Accept both formats.
messagestringA human-readable description of the event.
idstringThe unique 6 or 12 character base62 session ID. This is the same ID that appears after the ? in a Live session URL.
pinintegerThe session PIN. PINs are temporary and are only valid while the session is new or active.
sessionTypestringThe product type: live, support, cobrowse, or replay.
labelstringThe session subject or description entered by the agent or the integration.
userDescriptionstringThe agent display name. Shown to the end user in Support and CoBrowse sessions when they are asked to share their screen.
statusstring enumThe session status. See Session Status Values.
userobjectThe agent who created the session.
organizationobjectThe organization of the agent who created the session.
settingsobjectName-value pairs of the settings used to create the session, mapped from AgentPrefs.
createdByAgentSessionobjectThe authenticated agent session used to create the ScreenMeet session.
crmSyncTargetobjectThe related record in an external system, when the session was created through an integration. Empty for console and API sessions.
deviceobjectName-value pairs describing the device: the browser for CoBrowse sessions, or the native app environment for Remote Support sessions.
statsobjectSession statistics. Populated once the session closes. See Stats Object.
secondsintegerHow many seconds into the session the event occurred.
serversobjectThe ScreenMeet servers hosting the session, keyed by service, such as live, cobrowse, or recorder.
metaDataobjectAdditional session metadata. May be empty or null.
storedFileobjectMetadata for a file written to storage. Only present on file-uploaded-to-storage.

Session Status Values

StatusMeaning
scheduledThe session is scheduled to start in the future.
newThe session is created and ready to join. No participant has joined yet.
activeAt least one participant has joined.
closedThe session has ended.

Detecting Session Start and End

To track whether a session is in progress, act on two event types and ignore the rest.

Event typeStatusMeaning
session-activatedactiveA participant has joined and the session is now in progress.
session-closedclosedThe session has ended. stats.termination-reason and stats.time-ended describe how and when.

Match events to your own records using id. If your application shares the session link, store the session ID from that link when it is sent.

Closing the Browser Does Not End a Session
A session closes when the agent ends it or when it times out. If the end user closes their browser while the agent is still in the session, the session stays active and session-closed is not sent.

Event Types

Event types are grouped by the products that emit them. This list may not include every event ScreenMeet sends. Ignore any event type your application does not recognize.

All Products

Event typeDescription
session-createdA session was created by an agent, an integration, or the API.
session-activatedThe session became active because a participant joined.
session-closedThe session ended.
session-server-selectedA server was selected to host the session.
chatA chat message was sent in the session.
file-uploadedA file was uploaded to the server.
file-uploaded-to-storageA file, such as a recording, was written to permanent storage.
file-downloadA stored recording or file was downloaded from the ScreenMeet console.
session-ratingThe agent submitted a rating after the session.
session-feedbackThe agent submitted session quality feedback after the session.
session-data-expiredThe data retention policy purged data for this session.

Live

Event typeDescription
live-server-selectedA Live media server was selected to host the session.
server-region-selectedThe Live session started in a specific server region.
entered-lobbyA user entered the meeting lobby.
room-entry-requestedA user requested entry into the room.
room-enteredA user entered the meeting room.
user-joinedA user joined the meeting.
user-leftA user left the meeting.
microphone-access-requestedAccess to a user's microphone was requested.
microphone-access-succeededA user's microphone audio stream was acquired.
microphone-access-errorAn error occurred while acquiring a user's microphone audio stream.
camera-access-requestedAccess to a user's camera was requested.
camera-access-succeededA user's camera video stream was acquired.
camera-access-errorAn error occurred while acquiring a user's camera video stream.
desktop-access-requestedAccess to a user's desktop was requested for screen sharing.
desktop-access-succeededA user's desktop video stream was acquired.
desktop-access-errorAn error occurred while acquiring a user's desktop video stream.
audio-mutedA user muted their audio.
audio-resumedA user unmuted their audio.
record-toggledRecording was turned on or off.

Remote Support

Event typeDescription
user-connectedThe end user connected to the session. Also sent for CoBrowse.
user-disconnectedThe end user disconnected from the session. Also sent for CoBrowse.
agent-joinedAn agent joined the session.
agent-leftAn agent disconnected from the session.
video-stream-startedThe end user started streaming their desktop.
session-endingSession shutdown started. The session will close shortly.
client-eventThe end user's client sent a log event.
clipboard-link-onThe agent turned on clipboard linking.
remote-control-requestedThe agent requested remote control of the end user's device.
remote-control-grantedThe end user granted remote control to the agent.
remote-control-stoppedRemote control of the end user's device stopped.
uac-requestedAdmin permission was requested on the end user's device.
uac-permission-grantedAdmin permission was granted on the end user's device.
uac-permission-deniedAdmin permission was denied on the end user's device.
remote-executeA remote macro or command ran on the end user's device.

CoBrowse

Event typeDescription
user-connectedThe end user connected to the session.
user-disconnectedThe end user disconnected from the session.
agent-connectedAn agent connected to the session.
agent-disconnectedAn agent disconnected from the session.
url-navigateThe end user navigated to a URL.
page-focusThe end user's browser focused a page that is being cobrowsed.
cb-dialog-pin-enteredThe end user entered a PIN in the CoBrowse dialog.
remote-control-permission-requestRemote control permission was requested from the end user.
remote-control-permission-grantedThe end user granted remote control permission.
remote-control-permission-deniedThe end user denied remote control permission.

Stats Object

The stats object is populated when the session closes. Fields vary by product.

FieldProductsDescription
termination-reasonAllWhy the session closed, such as closed by agent.
time-endedAllISO timestamp of when the session ended.
durationAllTotal session length in seconds.
duration-connectedAllSeconds during which participants were connected.
max-concurrent-viewersAllThe highest number of viewers connected at once.
metricsAllPerformance measurements, each with total, mdn, avg, std, min, and max. May be empty.
streamtypeLiveThe product type, such as live. Note the lowercase key.
duration-idleLiveSeconds the session was idle.
sum-user-secondsLiveTotal connected seconds summed across participants.
streamTypeCoBrowseThe product type, such as cobrowse. Note the camel-case key.
chat-message-countCoBrowseNumber of chat messages sent.
agentsCoBrowseArray of agents who joined, including name, external ID, TURN server, and user agent details.

Sample Payloads

The samples below are trimmed for readability. Values are placeholders.

Live Session Closed

[
  {
    "id": "AbCdEfGhIjKl",
    "pin": 123456,
    "label": "Case 00012345",
    "userDescription": "Alex",
    "status": "closed",
    "sessionType": "live",
    "settings": {
      "audio": true,
      "knock": false,
      "recording": false,
      "guest_video": false,
      "startwithrc": false,
      "startwithadmin": false
    },
    "stats": {
      "streamtype": "live",
      "duration": 15,
      "duration-connected": 15,
      "duration-idle": 0,
      "time-ended": "2026-01-01T15:00:00.000Z",
      "max-concurrent-viewers": 1,
      "sum-user-seconds": 0,
      "metrics": {},
      "termination-reason": "closed by agent"
    },
    "servers": {
      "live": {
        "id": 470000,
        "region": "us-east-1",
        "endpoint": "https://live-prod-470000.screenmeet.com",
        "serverInstanceId": "i-0123456789abcdef0"
      }
    },
    "organization": { "id": 1000, "name": "Example Org" },
    "user": { "id": 2000, "name": "Alex Agent", "email": "agent@example.com" },
    "crmSyncTarget": {},
    "ts": "2026-01-01T15:00:00.150Z",
    "type": "session-closed",
    "message": "Session AbCdEfGhIjKl has been closed."
  }
]

Live Session Activated

[
  {
    "id": "AbCdEfGhIjKl",
    "pin": 123456,
    "label": "Case 00012345",
    "status": "active",
    "sessionType": "live",
    "stats": null,
    "ts": 1767279585000,
    "type": "session-activated",
    "message": "live session state is now active"
  }
]

CoBrowse Event

[
  {
    "id": "kpkvgPbBYkxC",
    "userDescription": "Joe",
    "label": "test cb",
    "status": "closed",
    "settings": {
      "audio": true,
      "knock": false,
      "recording": true,
      "startwithrc": false,
      "startwithadmin": false
    },
    "stats": {
      "agents": [
        {
          "id": 9916,
          "externalId": "0054T000000jyEhQAI",
          "name": "Joe Smith",
          "isActive": true,
          "turn": "turn-11601.screenmeet.com",
          "ua": {
            "family": "Chrome",
            "major": "92",
            "os": { "family": "Mac OS X", "major": "10", "minor": "15", "patch": "7" }
          },
          "cid": "d2bf6dec-3ece-4af1-b002-d37df5be649c"
        }
      ],
      "streamType": "cobrowse",
      "chat-message-count": 0,
      "max-concurrent-viewers": 0,
      "time-ended": "2021-08-17T20:38:00.313Z",
      "duration": 22,
      "duration-connected": 16,
      "termination-reason": "closed by agent",
      "metrics": {
        "loading_time_end_user_ms": { "total": 1, "mdn": 2235, "avg": 2235, "std": 0, "min": 2235, "max": 2235 },
        "from_pin_to_agent_connect_ms": { "total": 1, "mdn": 5497, "avg": 5497, "std": 0, "min": 5497, "max": 5497 }
      }
    },
    "servers": {
      "cobrowse": {
        "id": 12327,
        "endpoint": "https://cb-12327.screenmeet.com:443",
        "use_proxy": true,
        "proxy_endpoint": "https://rt-proxy.screenmeet.com"
      },
      "recorder": { "id": 11590 }
    },
    "pin": 218560,
    "organization": { "id": 265, "provider": "sfdc", "name": "ScreenMeet Developer Org" },
    "user": { "id": 9916, "email": "joe@example.com", "name": "Joe Smith" },
    "crmSyncTarget": {},
    "ts": "2021-08-17T20:37:40.019Z",
    "type": "url-navigate",
    "message": "End-user navigated to https://cbdemo.screenmeet.com/",
    "device": {
      "browser_name": "Chrome",
      "browser_version": "92.0.4515.131",
      "os_name": "Mac OS",
      "os_version": "10.15.7"
    },
    "seconds": 1
  }
]

File Uploaded to Storage

[
  {
    "organization": { "id": 265, "provider": "sfdc", "name": "ScreenMeet Developer Org" },
    "user": { "id": 9916, "email": "joe@example.com", "name": "Joe Smith" },
    "ts": "2021-08-17T20:38:03.429Z",
    "storedFile": {
      "SupportSessionId": "kpkvgPbBYkxC",
      "OrganizationId": 265,
      "ExternalUserId": 9916,
      "size": 574295,
      "type": "recording",
      "name": "kpkvgPbBYkxC-2021-08-17.20.37.webm",
      "uploader": "ScreenMeet Session Recorder",
      "externalObjectId": "v3/2021/8/17/kpkvgPbBYkxC/kpkvgPbBYkxC-2021-08-17.20.37.webm",
      "provider": "screenmeet",
      "location": "v3/2021/8/17/kpkvgPbBYkxC/kpkvgPbBYkxC-2021-08-17.20.37.webm",
      "downloadable": true,
      "linkable": false,
      "usesRetentionPolicy": true
    },
    "type": "file-uploaded-to-storage",
    "message": "File kpkvgPbBYkxC-2021-08-17.20.37.webm from session kpkvgPbBYkxC uploaded to [screenmeet]",
    "crmSyncTarget": {}
  }
]

Related Articles