‘username can’t be blank’ when setting up Zoom webinar topic

Hi Penar, thanks for the great plugin this will be really useful! I just tested it out and setup went smoothly. A few issues I’ve noticed:

  • When I create a topic with the webinar I get this error, but if I refresh the page it does create the topic and everything seems to be okay.

I get this in the logs

/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:18:in `block (2 levels) in execute'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:12:in `block in execute'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
activerecord-6.0.1/lib/active_record/relation/delegation.rb:85:in `each'
/var/www/discourse/plugins/discourse-zoom/app/jobs/scheduled/send_webinar_reminders.rb:11:in `execute'
/var/www/discourse/app/jobs/base.rb:232:in `block (2 levels) in perform'
rails_multisite-2.1.1/lib/rails_multisite/connection_management.rb:64:in `with_connection'
/var/www/discourse/app/jobs/base.rb:221:in `block in perform'
/var/www/discourse/app/jobs/base.rb:217:in `each'
/var/www/discourse/app/jobs/base.rb:217:in `perform'
/var/www/discourse/app/jobs/base.rb:279:in `perform'
mini_scheduler-0.12.2/lib/mini_scheduler/manager.rb:86:in `process_queue'
mini_scheduler-0.12.2/lib/mini_scheduler/manager.rb:36:in `block (2 levels) in initialize'
  • The biggest problem is that I don’t see a join button when the meeting is live:

  • FYI the countdown background doesn’t follow the theme, I had to change this to match my dark theme as it was just white:
.webinar-header .countdown .pill {
    background: #485769;

Question, when someone registers will they only get a notification on the site and no email? Or will they get an email if they are not currently on the site?



Thanks David,

Did you complete the event subscription steps? That’s a webhook from the Zoom API, and it’s used to switch the Registered button to a “join now” button as soon as an event starts.

They will get a PM which means they will get an email if their settings are such that PMs send them emails.

I will look into the other two issues shortly.


I did all that. This is probably a stupid question, but under content security policy script src you have https://source.zoom.us, is source supposed to be replaced with something else? Possibly the name of the app?

1 Like

Hmm. And you checked all the boxes in the webinar tab? Should look like this:

No, that’s fine, in any case your setup hasn’t gotten to that screen yet.

1 Like

Yeah I have those checked, what should my Event notification endpoint URL be in the app?

1 Like

It should be https://yoursite.com/zoom/webhooks/webinars.json – I see that my instructions above do not include that detail, sorry about that. Hopefully that’ll be the missing piece.


That did it. Thank you!


I wasn’t very clear, just for clarification I am still having the problem with Username, etc. can’t be blank error with nothing in the logs now, everything else is working okay.


I looked into this issue @davidkingham, it looks like the webinar you’re creating in Zoom has no host, or the API is not returning those details for the host. The plugin tries to match the Zoom user account (via email) to a Discourse account and if it doesn’t find an account, it creates a staged user in Discourse.

Either your webinar has no host set or the API call to get the user object for the host is returning empty.


That makes sense, I was using a different email for each. I changed the email in zoom to match my user in discourse. This helped to show the upcoming webinars in the list when adding a webinar to the topic, which it wasn’t doing before, but I still get the ...can't be blank error. Does the email need to match the user that is creating the topic, or the admin email?

Also, if I delete the topic to retry, it doesn’t allow me to add that webinar to another topic because it thinks the webinar is associated with another topic already, even though it’s been deleted.


I wonder whether you are getting an email back for the user from Zoom at all. Maybe the API key does not have the correct scopes set?

This is the API call that I think is not returning data: https://marketplace.zoom.us/docs/api-reference/zoom-api/users/user (or maybe your user’s status is pending?)

Yes, confirmed. There might be a fix coming for this soon, for the moment, you can go to the deleted topic and from the topic’s admin menu you can click on Remove Webinar.


Here’s the call log when I get the error, looks like it’s hitting a rate limit

endpoint: "https://api.zoom.us/v2/users/VI4TWwOvT-SKaycEEMws8w",
response_headers: [
"Set-Cookie: cred=73B256F7AFD1CC7FEA83613B92876F28; Path=/; Secure; HttpOnly"
date_time: "2020-03-25 11:42:17",
method: "GET",
request_body: "N/A",
response: {
code: 429,
message: "You have reached the maximum per-second rate limit for this API. Try again later."
request_headers: [
"authorization: ******",
"connection: close"
request_params: [
http_status: "429"

That is quite restrictive… AFAIK it’s only making 2 API calls, one to get the webinar, and the other to get the webinar host’s details (in fact, in an ideal world, the host’s details should have been included in the first API call).

You could try raising this in Zoom’s developer forum.


I posed the question here, based on other questions I don’t have much faith that they will help.

Small suggestion for the plugin, I would like to see the panelist list display like the host. So putting the avatar below the title with their name next to it. Right now the panelist is not very obvious with just the small avatar.