Create Apex controller to receive webhook payload
Last updated
Was this helpful?
Last updated
Was this helpful?
To receive webhook events from Calendly you'll need to add the apex controller class and any relevant objects/fields to your Site’s Public Access Settings (see ).
@RestResource(urlMapping='/fe92da7d')
global class CalendlyWebhookController {
@HttpPost
global static void doPost() {
String signingKey = 'YOUR_WEBHOOK_SIGNING_KEY';
String requestBody = RestContext.request.requestBody.toString();
String webhookSignature = RestContext.request.headers.get('Calendly-Webhook-Signature');
CalendlyApi.VerifyWebhookResult result = CalendlyApi.verifyWebhookSignature(webhookSignature, signingKey, requestBody);
if (!result.isValid) {
RestContext.response.responseBody = Blob.valueOf(result.errorMessage);
RestContext.response.statusCode = 403;
} else {
JSONParser parser = System.JSON.createParser(requestBody);
CalendlyApi.WebhookPayload webhookPayload = (CalendlyApi.WebhookPayload) parser.readValueAs(CalendlyApi.WebhookPayload.class);
System.debug(webhookPayload.event + ' event received!');
}
}
}