Hi Kelsi, thanks for trying! It’s very important for us to know when a form is submitted - after all Routing allows the user to finish in many ways that aren’t events.
So I got it working with webhooks.
In case anyone else has this challenge, here are my notes.
Steps
-
Subscribing to the routing_form_submission.created event will fire anytime someone submits a routing form, whether they book or not.
NOTE: The only allowed subscription scope for Routing form submissions is organization.
If you’re an owner or admin, the personal access token you generate will authenticate the POST request with the organization scope if you want to return a response payload for data about all scheduled events for your organization
-
// I used Postman, but here's the curl syntax
curl --request GET --url https://api.calendly.com/users/me --header 'authorization: Bearer {access_token}'
I’m an admin, so I didn’t have to bother with OAuth
-
Create a webhook endpoint (this part doesn’t involve Calendly tech).
I chose IFTTT based on past experience with its reliability. If you have a HubSpot Professional or Enterprise license you can use their webhook endpoint instead. I'd do this but IFTTT is way cheaper (modest IFTTT Pro subscription required) than HubSpot for now.
My IFTTT notes:
What: calendly_routing_form_submission
When: February 11, 2024 at 05:33PM
Extra Data: {"value1":"This","value2":"is a","value3":"test from Postman."}
I found it super useful to use Postman to test the IFTTT endpoint so I knew my webhook was working before going to the next step.
-
POST https://api.calendly.com/webhook_subscriptions
Here's the body I used for my POST. Note that the 'routing_form_submission.created' event is ONLY fired for the 'organization' scope. Since that's the thing we're trying to get, user scope ain't gonna help.
{
"url": "https://yourcustomwebhookurl.goeshere",
"events": [
"invitee.created",
"invitee.canceled",
"invitee_no_show.created",
"routing_form_submission.created"
],
"organization": "https://api.calendly.com/organizations/YOURIDGOESHERE",
"scope": "organization",
"signing_key": "WHATEVERYOUWANTGOESHERE"
}
-
Test, season to taste, and enjoy!
Editors note
I also got this working with Microsoft Power Automate, since we have that license already. Though it took 3x longer to learn than IFTTT, I like it better because a) it keeps the moving parts in the same family, and b) it’s easier to send a Teams message to my team since I’m already inside our corporate subscription, and c) now that I understand Power Automate better, there are a bunch more actions I can take, including parsing the JSON to something more friendly.
Summary
Yeah, I really do think that alerts for routing_form_submission.created would be MUCH better as a Calendly notification. However, this solution lets us have ONE user experience for our primary call-to-action on our corporate site. Now back to selling!
Thanks!
Galen