Webhook Integrations Setup

Use the Sine Webhook integration to push data to your favourite service.

Robert Sterling avatar
Written by Robert Sterling
Updated over a week ago

Accessing Integration Settings

  1. Select Sites from the side-menu.

2. Select the Site you wish to integrate.

3. Select the Integrations tab at the bottom of the sidebar

4. The Integrations page will appear. When you have no integrations configured, it will appear the same as the picture below:

Adding a WebHook

Click on the + on WebHook under Available Integrations. The Add a new WebHookmodal will appear.

Note: If you need more information on webhooks, either click on the ‘?’ button in the top-right of the modal or read the information provided below

Configuration

  • Name: Used to identify the integration on rejected passes and the integrations page.

  • External ID: This field can be used to match up sites in the external system.

  • URL: The publicly accessible endpoint that Sine will call out to. We recommend using HTTPS.

  • API Key: Provide an identifier that Sine will pass through in the x-sine-auth header on requests. Use this key to verify that requests are coming from Sine.

  • Rejection Message: Users may set a rejection message in the case that the check-in attempt was unsuccessful. This will display on the iPad in the case that their details do not correspond to the WebHook server, preventing them from checking in. Customize this message from the Rejection message box from the Configuration page.(Optional): You can leave this field blank to display the default rejection message that your web-hook returns (for example, “You have been rejected by a Sine service.”). Alternatively, you can insert “%EXTERNAL_REJECTION_MESSAGE%” into the message, and the web-hook will automatically replace this with your default rejection message. An example of this is “%EXTERNAL_REJECTION_MESSAGE% Please ring for assistance” which will display something along the lines of “You have been rejected by a Sine service. Please ring for assistance“

  • Visitor Types: Select the desired visitor types that you want to capture events for. An example would be ‘Contractor’ only if using this WebHook for inductions.

  • Events: Select at least one event that you want this integration to run.
    No event type is reliant on another event type.
    Check-in Request Triggered before a Pass is created. Allows the integration to reject a pass with a rejection message or optionally add additional information to accepted passes. This is normally the most useful event for integrations.
    Check-in Success: Triggered after a pass has successfully been created. An integration can not mutate a pass off this event. This event will include answers to any entry forms configured on the site.
    Check-out Success: Triggered when a pass is checked out or expires. An integration cannot mutate a pass off this event. This event will include answers to any exit forms configured on the site.

    Check-in Rejected: Triggered after a pass is rejected. An integration can not mutate a pass off this event. The event will include details depending on integrations set up at Check-in Request or Check-in Request with Details (read below) and will pass through the rejection reason.

  • Events (Enterprise Plans only)
    Check-in Request with Details Triggered before a Pass is created. Allows the integration to reject a pass with a rejection message or optionally add additional information to accepted passes. This contains additional Check-in details.
    Check-in Approval Pending Triggered before a Pass is created and where an approval is in Pending.
    Invitation Create Triggered when an invitation is created for a Visitor.
    Invitation Update Triggered when an invitation is updated for a Visitor.
    Invitation Delete Triggered when an invitation is deleted for a Visitor.

  • Status: whether the integration is active or not.

Request Specification

The following applies to all events:

  • Request will always be a POST.

  • Request will be application/json.

  • Responses must be application/json.

  • Responses must be a 200.

  • Sine is a cloud based service running on AWS. Integration endpoints must be open to the internet and use the x-sine-auth header for authentication.

The following applies to the Check-in Request event:

  • Request Format

  • Rejected Response Format

  • Success Response Format

  • This is a real time integration, the check-in process will be interrupted until the integration request has received a response.

  • If the response to the integration request is anything other than a 200 the check-in process will be aborted.

The following applies to the Check-in Success event:

  • Request Format

Note: if the check-in was related to an invite, the inviteID will be referenced in this event.

The following applies to the Check-in Reject event:

{
"event":"signin_rejected",
"date":"2022-08-26T00:51:04Z",
"data":{
"id":"fe9e32c4-a635-4059-a013-bcc85e8c1e80",
"startDate":"2022-08-26T00:51:03.895Z",
"expiresDate":"2022-08-26T00:51:03.895Z",
"firstName":"first name",
"lastName":"last name",
"email":"[email protected]",
"mobile":"+6142645098",
"mobileVerified":false,
"emailVerified":false,
"photoURL":null,
"status":"rejected",
"autoExpired":false,
"formResponses":{
"id":"94fb2b93-0123-4c89-a4a8-3fe11316c76a",
"responses":[
{
"id":"c301d376-4ad4-49b0-8873-322693eb997d",
"type":"multiplechoice",
"value":"Meeting / Interview"
}
],
"prefillDate":"2022-08-26T00:51:03.151Z"
},
"formResponsesSignOut":null,
"inviteId":null,
"company":"example company",
"site":{
"id":"d7468acd-43ed-4386-8e15-ae50a10a056a",
"name":"example site"
},
"visitorType":{
"id":"8db48499-05fe-4bdb-ab60-8c3be9bf1ac0",
"name":"Visitor"
},
"rejectionReasons":[
{
"name":"Workflow integration",
"reason":"We couldn't find a valid Workflow response. We've sent you an SMS or email with more information."
},
],
},
"externalId":"123123"
}

Note: if the integrations only run on Check-in Request, then the Check-in Reject event will not include photo url, form responses or hosts.

If the rejection is a host rejection, the name of the rejectionReason will be null.

  "rejectionReasons":[
{
"name": null,
"reason":"The pass has been rejected by host"
}
],

The following applies to the Check-out Success event:

  • Request Format

The following applies to the Invitation event:

  • Request Format

Testing

The webhook responses can be easily tested using the following method:

  1. Go to https://webhook.site/ and it will provide you with a URL that you can use, then paste that URL in to the Integration URL field.

  2. Enter any value into the External ID and API Key fields for now.

  3. Create an invitation or Check-in with Sine. You will see the response on the webhook.site page.
    (Note, some webhook events are only available in Enterprise plans).

Note: Make sure the content type is : application/json and the response body is:

{
"code":"SUCCESS"
}

IP Ranges

Requests will come from the following addresses:

  • 13.55.216.196

  • 52.63.2.142

  • 3.105.152.200

  • 13.55.196.118

  • 13.55.33.1

  • 3.105.192.233

  • 13.237.31.4

  • 13.236.199.231

Did this answer your question?