Webhooks not triggering my callback - Ideas?

Hi,

I have just set up webhooks as described here:

I have a JWT app installed (and have tested that it works for restAPI calls. Now I am trying to get webhooks working. So for my app I have 6 events to trigger webhooks, including Webinar Deleted. The callback is https://www.mysite.com/zoom/webhook

I then have a route that handles this url and goes to a webhook handler. In the Zoom webhook log for my app I don’t see Webinar Delted even though I have deleted a webinar for testing the webhook.

Any ideas?

thanks!
Brian

Hey @huetherb,

Few things to double check:

  1. Your route needs to accept POST requests.
    Example in node.js / express
    app.post('/zoom/webhook', function (req, res) {
    
    })
    
  2. Make sure your url paths match your route

14%20PM

If that still doesn’t work, then please send me the route code and a screenshot of your event subscription settings.

Thanks,
Tommy

Hi! Here is what I have in my laravel 5.3 web.php:

Route::post(
‘zoom/webhook’,
‘ZoomWebhookController@handle’
);

I have something similar for Mailchimp. Mailchimp is working. With Zoom I have my Laravel controller for this route as ZoomWebhookController with the handle method.

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Log;

class ZoomWebhookController extends Controller
{
/**
* Handle a zoom webhook.
*
*
*/
public function handle(Request $request)
{
// Handle The Event
return Response(‘My Zoom Webhook Handled’, 200);
}
}

Also laravel requires entries in the verifycsrftoken middleware. I have this:

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
*
*/

protected $except = [
    'stripe/*',
    'zoom/*',
    'mailchimp/*',

];

}

Basically I am doing everything analogous to how I am with Mailchimp. So a bit of a mystery what is happening.

thanks,
Brian

02%20PM

This is the screenshot. I am not using the token for verification (not while testing anyway) so maybe that is the issue?

Hey @huetherb,

The verification token should not be the issue.

Can you try this simple code to see if your route is getting called?

Route::post('zoom/webhook', function()
{
    error_log('webhook received');
    return 'webhook received';
});

Also are you testing this on your production domain of https://www.guitar-dreams.com/zoom/webhook ?

If you could send me the link to your code on github with instructions on how to reproduce the issue I can help debug further.

Thanks,
Tommy

Hi, I tried above but still nothing. I think maybe something is just off with my app. I noticed this:

JWT
Intend to publish: No
Account Level

Maybe my app is in some state where it doesn’t trigger webhooks?

It is working now. I added a webhook only app.

thanks,
Brian

1 Like

So here is what I notice. In the payload there is no webinar description. The reason I am using the webhook is so that I can populate a webinars table on my site.

Now I could use restAPI to get the description, but if I do that from the webhook endpoint on my site that was setup with a webhook only app, will that somehow prevent me from getting data via the restAPI?

Also, I really wish Zoom had a way to categorize and bundle webinars. Maybe add a metadata object or something that lets users have more options for syncing with their own databases. For instance on my site I will have webinars organized like

This would be for an overall series (which will have several webinars)

WebianrSeriesID WebinarSeriesName WebinarCategoryID

And individual webinars would be like

WebinarID WebinarName WebinarSeriesID

See what I mean? Would be great if Zoom supported that…

Are you a Zoom developer by the way?

regards,
Brian

Your JWT app settings are fine, make sure the JWT app is “Activated”.

Great!

In order to call the Zoom APIs, you need to use a OAuth or JWT app. This is separate and will not effect your Webhook Only App. Since you already have a JWT app setup, here is a link back on how to call the API’s with a JWT token,

You can accomplish this via occurrences, and then limiting the registration on each one. Although I see that there could be more customization here and will add this as a feature request.

Check out the registration_type and approval_type settings when creating a webinar.

10%20AM 14%20AM

I am a Zoom Developer, but I do not work on the Webinars/Webinar API’s.

Thanks,
Tommy

1 Like

Hi, my JWT app settings seem normal, but I just couldn’t get the webhook triggering with it. I only have webhooks working with the webhook app. My JWT app is working elsewhere, for instance I have a Stripe webhook and in that webhook I call Zoom restAPI via my JWT app.

So in the end, just not sure why my JWT app doesn’t work to trigger webhooks on my site…

Hi, the problem with using occurrences in that way is that a webinar has same name across occurrences. So that doesn’t let me accomplish this hierarchy:

Webinar Series A
Webinar Topic X
Webinar Topic Y

Or more ideal would be

Category 1
Webinar Series A
Webinar Topic X
Webinar Topic Y

I will try to reproduce the JWT event subscriptions not firing.

Webinar hierarchy would be a cool feature to have! I will pass it on to the team!

Thanks,
Tommy