Custom Wizard Plugin 🧙

Well basically I’d want to create a wizard via a plugin, this wizard will offer some sort of a free calculator (still trying to figure out how to exactly take the input, process and return back a result) . The user can use this wizard and if he likes it he could sign up, if not then it would still be okay.
Another solution I had in mind is to have a separate web app that offers this services and posts the result to discourse via the REST API but I thought that this plugin would be less complex to configure compared to having an app beside discourse and the need to route.

I just did a ./launcher rebuild app and now my custom wizard will not load. I get the following JS error in dev tools.


I see only a blank white screen. No header, menus, footer, etc.

Research thus far…

Is this a plugin issue or discourse issue? Any recommendations on how to resolve?


Thanks. We’ll take a look ahead of the next supported upgrade period (1st five days of each month)


Hey guys,

Recently I read more about Custom Wizard Plugin :mage: and amazed about how the plugin will help me I installed it.

The plugin installation seems to be okay, I have it displayed in my admin panel.

However, I don’t really know how to implement this in my forum. Is created some wizards for a test with all included, filed, and stuff, it creates a link /w/test, but trying to access, it open only a blank page. Am I doing something wrong? I even tried to access the wizard’s examples at the Pavillion website, without success. Sorry, but I am new at Discourse.

And with this link, how can I create a button or something to direct to my wizard?

Just to make it clear, I need a simple wizard that after filled in will create a topic with its details.

I talked to @merefield via inbox and he recommended me to post my doubt here. I hope I could be clear. :slightly_smiling_face: :slightly_smiling_face:


I THINK you could have discovered the ‘bug’ mentioned two posts above yours.

Check your browser console log to see if you’re getting a similar message to the one described.

At the moment it seems that with the latest beta.2.7.0 Discourse, the Custom Wizard Plugin does not work.


@Thamer, FYI I’ve been able to get my staging site working again by installing an earlier version of Discourse using a specific commit ID.

Caveat: I imagine that in general, this is not recommended on live sites. Also, with a major update from Postgres 10 to 12 in the last couple of beta point releases, it is especially not recommended/possible to go back past that release (beta.2.5.0?). Finally, to the best of my knowledge, you cannot easily run against specific plugin versions. So proceed with extreme care.

I’ve only gone down this route because I’m developing some extensions to the wizard and I need to be able to test them.

If you can wait until early next month when the CWP will be made to work with the then latest version of Discourse, I’d recommend you do that.

@merefield, this confirms to me that something between beta.2.6.0 and beta.2.7.0 has caused the CWP to stop working with the error that @codechef detailed above.

Moving back to Discourse beta.2.6.0 to test the Custom Wizard Plugin

To use an earlier commit I followed the instructions here.

Rebuilding with a specific version

The specific commit ID I used was 09dc5eb5ea4d8c474ec144c976c9be557e040767 which refers to this version bump commit.

Version bump to v2.5.0.beta6 · discourse/discourse@09dc5eb · GitHub

To use the specific version ID I edited the app.yml file and searched for version and change the commented line to read…

version: "09dc5eb5ea4d8c474ec144c976c9be557e040767"

In context, that looks like.

  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "256MB"

  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed
  version: "09dc5eb5ea4d8c474ec144c976c9be557e040767"

NOTE: I’ve only shown the lines above the version line for context. They do not need to be changed. Also note that, as is the way with YAML files, the version line is indented by two spaces.

I then did a ./launcher rebuild app and my staging site is now running at beta.2.6.0

And now the wizard is working again.


Thanks for doing that. Yes it’s a breaking change in core.


Hey @bletch,

My bad haha, thanks for all information provided.

Thus, I will anxiously wait for updates from Pavillion (@merefield and @angus) to implement this plugin on my website.


Hey guys, thank you for the reports.

I’ve just pushed an update for this plugin to bring it up-to-date with the latest Discourse :slight_smile:

As has been mentioned, the normal update period is the first 5 days of each month.


Thank you for fixing in advance of your planned schedule @Angus :awthanks:

I am testing Custom Wizard Plugin quite extensively now, and have identified a possible bug and two feature requests;

Content mapping from wizard fields - I absolutely love that this is a thing now! Unfortunately, there is an issue with actually mapping the values to, for example, a dropdown. I fully understand that can’t be expected to work when mapping other wizard fields within the same step. I notice however, that it doesn’t work as expected even when mapping to prior wizard fields is done in following steps. For me, it only works when doing a reload of the page - then I can select dropdown values based wizard fields from prior steps.

Date field type - It would be great if you could add date field as a type.

Filter selectable tags based on tag groups - It would be great to set/filter selectable tags in tag field to be within a specific tag group.

Thank you for an amazingly useful plugin <3


Thanks for the feedback.

Indeed this is far from ideal, and I’d like to make it better, specifically the field conditionality between steps (as you say intra-step conditionality is harder). Could you share with me a detailed example of what you’re expecting to happen over on I’d love to hash this out with a real use case and also get input from a few other Pavilion members. Make sure you @ me there to get my attention.

You can add an event field type if you have the Events Plugin, however I appreciate this may not be what you’re after. What’s are you trying to do with the date?

I’m glad you reminded me of this. I intended to do this but never got around to it. That said this one will probably need to wait a bit, but could you also make a feature request for this.


Will do! I would basically be super happy with a forced page reload when loading a new step in order to ensure that mapped values and, thanks to to prior step, stored values are loaded from server.

Basically just render a date on screen. Perhaps like Discourse’s now built in feature like 2020-06-24T07:30:00Z ie [date=2020-06-24 time=09:30:00 timezone="Europe/Stockholm"]? Niceties would be able to define action output format when creating a topic. Why? Taking a step back, it is because I want to use Custom Wizard as a CCK light and be able to enforce some basic input which absolutely is solvable, but in a much less reliable way, by relying on topic templates and the users’ sensibility.

Will gladly do!



I’m on the latest c16ad39f8e commit and I’m getting this error Compile Error: d-textarea is not a helper and everything after the text area (including itself) is not rendering.



This is a great plugin; thank you for sharing your work!

I am making a Welcome Wizard to assist people in getting their profile in good order once they’ve signed up. One thing I’m struggling to interpret is how I can set their birthday.

I have my steps setup and my current fields and actions are all working fine. I don’t understand what type of field entry I should use to set a person’s Date of Birth. Please would you be able to point me in the right direction?


@SvenC56 I’ve fixed it :+1:

@Zavan As @torstensson pointed out, there isn’t a date input yet :slight_smile: There is an integration with the Events Plugin, but I don’t think that would suit your case.

I think the next feature will be an explicit date input. It’s a bit crazy there isn’t one already. Stay tuned.


Roger! Thanks for a quick response - appreciate it :slight_smile:

1 Like

Hi @angus,

Thanks for this amazing plugin I really like all Pavilion plugins. :slightly_smiling_face:

I have a question for the location form. Is that possible to add Map Location (Locations plugin) field to Custom Wizard?

So when Users finish the Wizard and set up their location than it will their default location for topics.

I tried to connect this but no working.
Thank you! :slightly_smiling_face:

1 Like

Hi @angus,
I couldn’t get the plugin to install. The most relevant failure it reports is:
Sprockets::FileNotFound: couldn't find file 'discourse/app/lib/preload-store' with type 'application/javascript'

is the plugin broken in a recent commit?


Most certainly a recent change to the core. We’ll get this one fixed but please don’t update your instance before the 1st of next month if you’re using the plugin for production.


hey @fzngagan, This is a development instance, we’re using it to test out a few things before we roll changes to production discourse of a client, we can pin to a specific branch/commit if that’s known to work. :slight_smile:

Ps: thanks for the heads up, we’ll keep that in mind before upgrading the production site.

1 Like