Update! Kisi now has Zapier actions. It is no longer necessary to use Zapier’s webhook action to connect with Skedda.
Connecting Skedda to Kisi will allow you to automate your booking and access control work flows. For example, 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 a 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 Skedda and Kisi can be used as two standalone platforms without an integration.
Since every Skedda venue is unique and has differing needs, we've created this tutorial for you to make your own integration using Zapier.
Setup
To learn more about how Zapier works generally, please refer to this article. After choosing the right trigger, you have two options to set up the rest of the Zap.
Kisi's Zapier actions allow you to do a few actions with locks, shares, and schedules. This is very easy to set up, but a bit limited.
If these options do not work for your situation, you can access all of Kisi's API actions using Zapier Webhooks. This requires a little bit of coding, but is fully explained below. This was the primary way to connect Skedda and Kisi before they released Zapier actions.
Method 1: Zapier Action
Kisi’s Zapier actions can be found here. Below is an example scenario.
Create a Kisi Share for the duration of a Skedda booking
As soon as a user makes a Skedda booking they will receive an email from Kisi. This email tells them that they have access for the duration of the Skedda booking and to install the Kisi app to unlock the door(s).
Trigger: Skedda - New User Booking
Action: Kisi - Create Share
This sends the email below to the Skedda booking holder:
If you would like to do something in your Kisi account that is not listed in the Zapier actions, but is in Kisi’s API then you can use Zapier’s webhooks.
Method 2: Webhook Method
3 examples of Kisi actions are described in this article:
Unlock a lock right at the time of the booking for 3-30 seconds.
Create a scheduled unlock to last the duration of the booking.
Send an access link that is valid for the duration of the booking.
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 these 4 headers:
accept = application/json
content-type = application/json
Authorization = KISI-LOGIN generated API key from Kisi Dashboard
X-Kisi-Integration-Identifier = Skedda
Kisi can react and reach out to us in case of any issues with your integration
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.
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
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:
Google Calendar trigger - Send team access link to email collected in custom field (with filtering by space)
Kisi documentation: Send access link
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
Skedda/Outlook → Kisi: Create unlock schedule based on a Skedda booking synced to Outlook: https://zapier.com/shared/e9ea6159c48a734c9211d1f5d0da2f808a584ccd
Skedda→ Kisi: Create unlock schedule based on a Skedda booking: https://zapier.com/shared/6de0101be4ef8dc8776373b588c98c368416bb02
Skedda/Google Calendar → Kisi: Send access link based on a Skedda booking synced to Google Calendar: https://zapier.com/shared/de1c76f515c68adc447ba90c646ca2677abba596