> ## Documentation Index
> Fetch the complete documentation index at: https://integrate.essentry.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Real-Time Notifications

essentry provides real-time notifications about changes to objects in your system, allowing you to stay informed about activity as it happens.

Real-time notifications inform your system when objects are created, updated, or transitioned between states. This keeps your system synchronized with essentry and enables immediate responses to visitor activity.

## Delivery Methods

essentry offers two methods for receiving real-time notifications:

### Webhooks

HTTP-based callbacks sent to your system when objects change. We recommend webhooks if your target system is reachable from the cloud, as they provide reliable delivery and automatic retries.

**Benefits:**

* Automatic retries ensuring reliable delivery
* Simple HTTP-based implementation
* Dashboard configuration (when available)

**Requirements:**

* Your system must be reachable from the internet
* HTTPS endpoint to receive webhook calls

Webhook configuration is currently a beta feature that may not be available in your account yet. Please contact our support team at [support@essentry.com](mailto:support@essentry.com) to configure webhooks or request access to the dashboard feature.

### WebSockets

Persistent connections that provide real-time notifications when objects change. WebSockets work well for systems behind NAT without public IP addresses, as your system initiates the outbound connection to essentry.

**Benefits:**

* Works behind NAT (no public IP required)
* Real-time bidirectional communication
* No inbound firewall configuration required

**Requirements:**

* Your system must allow outbound HTTPS/WebSocket connections
* More implementation work on the client side
* Connection management and reconnection logic
* WebSocket client implementation

**Connection Details:**

* **URL:** `wss://app.essentry.com/api/v2/ws`
* **Authentication:** Required - see [Authentication](/api-reference/authentication) for details on authenticating your WebSocket connection.

Implementation examples for WebSocket integration will be provided by our support team at [support@essentry.com](mailto:support@essentry.com) based on your specific requirements.

## Payload Types

Real-time notifications can be configured for different types of objects. Both payload types provide the same data structure regardless of whether they're delivered via webhooks or WebSockets, ensuring consistent integration regardless of your chosen delivery method.

### Check-Ins

Notifications sent whenever check-ins are created, updated, or transitioned between states. This includes:

* New visitor check-ins completed at kiosks
* Check-in approvals by receptionists
* Visitor check-outs
* State changes (pending, approved, rejected, etc.)

The payload contains complete check-in information including visitor details, current state, legitimation data, and the result of the identity verification.

<ResponseField name="checkIn" type="object" required>
  The check-in object containing all visitor and visit information

  <Expandable title="checkIn properties">
    <ResponseField name="id" type="integer" required />

    <ResponseField name="state" type="string" required />

    <ResponseField name="email" type="string" required />

    <ResponseField name="firstName" type="string" required />

    <ResponseField name="lastName" type="string" required />

    <ResponseField name="birthdate" type="string" required />

    <ResponseField name="companyName" type="string" required />

    <ResponseField name="language" type="string" required />

    <ResponseField name="arrivedAt" type="string" required />

    <ResponseField name="leftAt" type="string" required />

    <ResponseField name="legitimation" type="object" required />

    <ResponseField name="trustedId" type="object" required>
      <Expandable title="trustedId properties">
        <ResponseField name="documentNumber" type="string" />

        <ResponseField name="document" type="string" required>
          Check 1: Is the identity document valid?
        </ResponseField>

        <ResponseField name="selfie" type="string">
          Check 2: Is the person in front of the kiosk the one on the document?
        </ResponseField>

        <ResponseField name="liveness" type="string">
          Check 3: Is the person real and not a photo or mask?
        </ResponseField>

        <ResponseField name="invitationMatch" type="object" required>
          Check 4: Does the data on the invitation match the data on the document?

          <Expandable title="invitationMatch properties">
            <ResponseField name="wasManuallyReviewed" type="boolean" required />

            <ResponseField name="firstName" type="string" required />

            <ResponseField name="lastName" type="string" required />

            <ResponseField name="birthdate" type="string" required />
          </Expandable>
        </ResponseField>

        <ResponseField name="images" type="object" required>
          <Expandable title="images properties">
            <ResponseField name="faceImageUrl" type="string" />

            <ResponseField name="identityDocumentImageUrl" type="string" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="accessControl" type="object" required>
      <Expandable title="accessControl properties">
        <ResponseField name="credential" type="object">
          <Expandable title="credential properties">
            <ResponseField name="cardNumberKiosk" type="string" required />

            <ResponseField name="cardNumberReception" type="string" required />

            <ResponseField name="cardNumberAccessControlSystem" type="string" required />
          </Expandable>
        </ResponseField>

        <ResponseField name="access" type="object">
          <Expandable title="access properties">
            <ResponseField name="startsAt" type="string" required />

            <ResponseField name="endsAt" type="string" required />
          </Expandable>
        </ResponseField>

        <ResponseField name="pin" type="string" />
      </Expandable>
    </ResponseField>

    <ResponseField name="customFields" type="object" required />

    <ResponseField name="location" type="object" required>
      <Expandable title="location properties">
        <ResponseField name="id" type="integer" required />

        <ResponseField name="name" type="string" required />

        <ResponseField name="timezone" type="string" required />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Access Credentials

Notifications sent whenever access credentials are created, updated, or changed. This includes:

* Card number or credential type updates
* Assignment changes (including when cards are unassigned)

This enables your access control system to stay synchronized with essentry's credential management.

<ResponseField name="accessCredential" type="object" required>
  The access credential object containing card and assignment information

  <Expandable title="accessCredential properties">
    <ResponseField name="id" type="integer" required />

    <ResponseField name="cardNumberKiosk" type="string" required />

    <ResponseField name="cardNumberReception" type="string" required />

    <ResponseField name="cardNumberAccessControlSystem" type="string" required />

    <ResponseField name="assignment" type="object">
      <Expandable title="assignment properties">
        <ResponseField name="id" type="integer" required />

        <ResponseField name="state" type="string" required />

        <ResponseField name="email" type="string" required />

        <ResponseField name="firstName" type="string" required />

        <ResponseField name="lastName" type="string" required />

        <ResponseField name="birthdate" type="string" required />

        <ResponseField name="companyName" type="string" required />

        <ResponseField name="language" type="string" required />

        <ResponseField name="arrivedAt" type="string" required />

        <ResponseField name="leftAt" type="string" required />

        <ResponseField name="legitimation" type="object" required />

        <ResponseField name="trustedId" type="object" required />

        <ResponseField name="accessControl" type="object" required>
          <Expandable title="accessControl properties">
            <ResponseField name="credential" type="object">
              <Expandable title="credential properties">
                <ResponseField name="cardNumberKiosk" type="string" required />

                <ResponseField name="cardNumberReception" type="string" required />

                <ResponseField name="cardNumberAccessControlSystem" type="string" required />
              </Expandable>
            </ResponseField>

            <ResponseField name="access" type="object">
              <Expandable title="access properties">
                <ResponseField name="startsAt" type="string" required />

                <ResponseField name="endsAt" type="string" required />
              </Expandable>
            </ResponseField>

            <ResponseField name="pin" type="string" />
          </Expandable>
        </ResponseField>

        <ResponseField name="customFields" type="object" required />

        <ResponseField name="location" type="object" required>
          <Expandable title="location properties">
            <ResponseField name="id" type="integer" required />

            <ResponseField name="name" type="string" required />

            <ResponseField name="timezone" type="string" required />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>
