Connecting Skedda to Kisi will allow you to automate your booking and access control work flows. Automatically unlock a door or send an access link to allow users to get into the spaces they've booked in Skedda.

This automation can allow access for the duration of the booking, first few minutes of the booking, etc, but it will always be dependant on the booking. If you would like to give all of your Skedda users access to Kisi all of the time or not dependant on their bookings, then we can be used as two standalone platforms without an integration.

Since every Skedda venue is unique and has differing needs, we created this tutorial for you to make your own integration using Zapier. To allow for this flexibility there is a little bit of coding involved, but this article gives you all the information you'll need to get started!

After choosing the right trigger, set up the rest of the Zap actions to communicate with Kisi. Based on your situation, we have 3 examples of Kisi actions:

Refer to Kisi's API documentation for extra information or if you run into strange errors.

All of the Kisi API interactions are done through Zapier's Webhooks, specifically a Custom Request > POST

This requires a Starter Zapier plan or above (depending on how many Zap tasks you do per month).


Create a Webhooks by Zapier action to talk to Kisi

Choose Webooks by Zapier and pick Custom Request:

The Method is POST, the URL and Data will depend on what Kisi action you are doing. Various actions are described below.

Headers

Kisi documentation: Headers

Each POST needs to have at least 3 headers:

  • accept = application/json

  • content-type = application/json

  • X-Kisi-Integration-Identifier = Skedda

    • Kisi can react and reach out to us in case of any issues with your integration

Each POST after the log in step needs to have an additional authorization header:

  • Authorization = KISI-LOGIN authentication token from login

    • The authentication token is labelled "Secret:" in the log in step.

    • See below for how to login and get this value.


Create Kisi login to get your authentication token

This is the first POST required before any other Kisi API interactions. The Kisi authentication token output from this step needs to be included in the headers of following POSTs.

Kisi documentation: Create login

URL: https://api.kisi.io/logins

Data:

{
"login": {
"type": "api"
},
"user": {
"domain": "YOUR ORGANIZATION",
"email": "YOUR EMAIL",
"password": "YOUR PASSWORD"
}
}


Unique Kisi values (ID numbers) needed

To tell Kisi which items to do the actions to, find the following IDs in the URL of various pages in your Kisi dashboard. Include these where necessary in your Zap actions.

Door page: https://web.kisi.io/places/12345/locks/67890

Place ID = 12345

Lock ID = 67890

Team page: https://web.kisi.io/organization/123/groups/45678

Organization ID = 123

Group ID = 45678

Locks vs. Groups

You can perform some Kisi actions on individual locks or groups of locks. If you can group locks to avoid doing multiple actions each Zap, then you'll cut down on the number of Zap tasks you run!

Add doors/locks to a Team in the Kisi dashboard and take note of the Group ID in the URL.


Example Kisi Actions

Unlock a lock

This unlocks the lock at the time of the Zap action for the duration set in the lock settings (3 - 30 seconds).

Anyone standing at the door at the exact time of this unlock action can get inside. This means it's fairly secure, but doesn't leave much flexibility for your booking holders. They can't be even 30 seconds late!

Kisi documentation: Unlock a lock

You only need to input the lock ID in the URL and include the 4 headers. No code in the data section is necessary for this action.

URL: https://api.kisi.io/locks/ID/unlock


Create a scheduled unlock

This unlocks a lock or group of locks for the duration of the booking or another duration that you set (ex. first 10 minutes of the booking). You can run this Zap to create the schedule a set time before the booking starts, ideally once the booking is locked-in in Skedda. If you use the external calendar (synced to Skedda) trigger, you just need to allow time for the calendar to sync with Skedda before running this Zap.

Creating a scheduled unlock can be done manually from Kisi in the lock page:

Example workflow: Skedda > Speedy script > Google Calendar > Webhooks Zap > Kisi

  • Skedda 2 hour lock-in policy (users cannot edit or cancel their booking if it starts in less that 2 hours)

  • Speedy script syncs your Google Calendar to Skedda every 30 minutes

  • Create the scheduled unlock through Zapier 1 hour before the event start in Google Calendar

This option gives the most flexibility to your booking holders and anyone attending the booking; however, it is the least secure. If the booking holder doesn't show up there is no way for Skedda/Kisi to know and the door will still be unlocked automatically. If you do choose this option, it is recommended that you require your users to notify you if they won't be coming to their booking in your terms and conditions. That way you can manually cancel the Zap or delete the scheduled unlock in Kisi to prevent unintended users from accessing your space.

Example Zaps:

Kisi documentation: Create a scheduled opening for the duration of the booking

URL: https://api.kisi.io/schedules

Data:

{
"schedule": {
"enabled": true,
"consequence": "unlock",
"scheduleable_type": "GROUP OR LOCK",
"scheduleable_id": ID OF THE GROUP OR LOCK,
"type": "single_event",
"starts_at": "EVENT START FROM TRIGGER",
"ends_at": "EVENT END FROM TRIGGER"
}

Here is what it will look like in Zapier for a Lock with ID 22281 and Google Calendar trigger:


Send group access link

This will email a link to the booking holder (or another email that you collect in a custom field) that is valid for the duration of the booking to unlock a lock or group of locks. This can be done manually in Kisi from the Teams page > Access Links:

The link can be forwarded by them to anyone else who needs access to the space. This is the most secure option, but is not suitable for users that do not have internet access when they are standing at the door. For example, if they run out of data on their mobile plan, or if their device runs out of battery, they will be locked out.

Example Zap:

Kisi documentation: Send access link

URL: https://api.kisi.io/group_links

Data:

{
"group_link": {
"name": "NAME OF THE USER or generic label SKEDDA BOOKING",
"email": "BOOKING HOLDER EMAIL",
"valid_from": "BOOKING START TIME",
"valid_until": "BOOKING END TIME",
"group_id": ID OF THE GROUP
}
}

Here is what it will look like in Zapier for a Group with ID 32693 and Google Calendar trigger with a formatting step to extract the booking holder's email (step 2 output):


Zap Templates/Examples

Did this answer your question?