New user questionnaire / application?


(Ivar) #1

Back in the olden days, BBS systems (at least Telegard) could easily be configured to allow new users to apply to the community. This typically involved a short questionnaire about why you’re applying, what existing user on the system invited you, etc. I’m wondering if this is existing functionality for Discourse that I’ve failed to find. Any pointers appreciated…


Is there a way to restrict user to post initial post into a particular category?
(Daniela) #2

If you have a “welcome” category you can use the form in the category settings to create a list of questions that users can answer.
Otherwise you could create custom fields (max 3 by default) for users who subscribe to the forum.

The form is free. Users may or may not respond.
Custom fields can be mandatory (depends on how you create them).


(Ivar) #3

That sounds like a good option, thanks for the suggestion but I haven’t been able to make it work with my system…

My installation has the both “Require authentication to read content on this site, disallow anonymous access.” and " Staff must approve all new user accounts …" enabled. I created a “welcome” category as you suggested but I can not figure out how to make it readable to anonymous users. Is there a way to create a category that is visible to anonymous users? And if so, could it be configured so that replies are only readable by an admin ?

I’ve figured out that I can change the copy on the not-logged-in landing page which is promising. A semi-workable solution would be to direct users to fill out an offsite survey, but it’d be much better if I could find a way to do this within Discourse.


(Felix Freiberger) #4

If you want to go with the welcome category, you’ll have to disable approval of new accounts to let users register freely. Then, you protect all other categories and only let users in a group access them, then access users to this group once they’ve posted in the Welcome category and you accept them.

If you want to use custom fields, you leave approval on and don’t need to protect the other categories – users won’t be able to complete their registration until you approve them.

There’s a third way: Go invitation-only, and ask users to send you an email to join. The target address can be a group inbox so the applications appear as a message in Discourse. Once you accept a user, invite him.

All methods have advantages and disadvantages, but I’d recommend that you go with email.

Here are reasons to avoid the category-based approach:

  • You’ll break badges, because almost all categories are considered non-public.
  • The applications must be public.

Here are disadvantages of the custom field approach:

  • You are somewhat limited in what questions you ask, users will have to fit their answers into tiny textboxes.
  • You cannot easily ask a pending user questions – you’ll have to approve or deny the request based on the information you have.

(Allen) #5

Like @ivar, for my use case I would like to develop something along the following lines:

  1. User registers somewhere (preferably in Discourse)

  2. Discourse creates token in LimeSurvey (a php based Survey application) via LimeSurvey API

  3. LimeSurvey sends user a mail with a link to his personal Survey

  4. User fills out Survey

  5. Once user completes Survey, LimeSurvey then enables the user in Discourse via Discourse API

  6. Finally, LimeSurvey would populate some data from the survey in Discourse via API: Post the survey results as a topic in the “New Members” catagory and populate a few user custom fields with input from the survey (for example Country and a few dates - didn’t check if this can be done via API).

Do you see any architectural problems with building a plugin to implement the workflow outlined above? Do you have any thoughts or tips regarding the implementation of such a setup?


(Felix Freiberger) #6

My personal guess is that you’d be better off managing user registrations and the survey in a separate, custom-built application and using SSO, as this requires less hacking on the Discourse side.