How to connect Discourse with hundreds of apps using Make

You can now integrate Discourse using Make. Make is a no-code integration platform where you can easily connect almost any app or API to Discourse. The Discourse app on Make has a number of modules (actions, triggers, and searches) that enable you to automate your communications in Discourse, and sync data automatically.

What is integromat@2x

The Discourse modules enable you to monitor, create, update, retrieve, or delete posts and topics in your Discourse account. Available triggers can watch posts, topics, and private messages on Discourse to then transfer and store data in another app.

Make allows you to build any integration you can imagine. Using the visual builder, you can drag and drop as many apps or steps as needed to simulate the actual workflow. Currently there are more than 700 available apps, plus a variety of generic apps that allow you to connect to any API through HTTP/JSON.

See the full list of available Discourse modules and pre-made integration templates, or click on the screenshots below to see the scenario:

These predefined templates make creating scenarios much easier. The Make wizard will take you through the build step by step. Of course, you can always expand and customize the scenario to meet your own individual needs, or create your own.

To start, you will need to sign up for a Make account, and then make a connection with your Discourse account. Once you register and log in, follow this step-by-step guide.

To start creating a scenario (scenarios are Make-speak for integrations), you’ll enter the visual scenario builder. Start by choosing the Discourse action you want, and you’ll then be asked to create a connection. To connect your Discourse account to Make, you’ll need to obtain the API Key, and insert it in the Make Create a connection dialog.

Features

  • Retrieves post details when a new post is created

  • Retrieves a list of the latest posts across topics

  • Retrieves post details

  • Updates an existing post

  • Deletes an existing post

  • Retrieves topic details when a new topic is created

  • Retrieves a list of topics

  • Retrieves topic details

  • Allows you to updates an existing topic’s title or/and category

  • Deletes an existing topic

  • Retrieves message details when a new private message is received

  • Retrieves private messages in your account

  • Creates a post, topic or private message

  • Allows you to perform a custom API call

:arrow_right: Install: Follow the plugin installation guide to connect Discourse to Make

Configuration

1. Log in to your Discourse account.

2. Open the menu in the top-right corner.

3. Navigate to Admin > API.

01

4. Click the New API Key button.

5. Set the API Key configuration as follows:

  • Description: Enter the name for the API Key.

  • User Level Select the Single User option to restrict the access via API to the user specified in the User field below.

  • User Select the user you want to grant API access to your Discourse account. User names you can select from will display as you type.

  • Global Key (allows all actions) Enable this option to allow all actions. Otherwise, define the particular scopes you want to enable for the API access.

6. Click the Save button and copy the provided API Key.

7. Go to Make and open the Discourse module’s Create a connection dialog. Fill the following fields:

  • Connection name Enter the name for the connection to your Discourse account.

  • Host URL Select the URL of your Discourse domain name (including HTTPS), e.g. https://.discourse.group

  • API Key Enter the API Key you have copied in step 6 above.

  • API User Name Enter the user name of the user assigned to the API Key.

8. Click the Continue button to establish the connection.

Now, you can continue with setting up the module and connecting the rest of your apps in a similar fashion. If you need help setting up your integrations, you can contact the Make support team by submitting a ticket.

15 Likes

Great post! Integromat is awesome :heart:

2 Likes

Not … Michaela Staffova . Solutions Specialist - Generalist at Integromat by any chance???

5 Likes

That is correct :slightly_smiling_face: And I am very happy to be working for Integromat while simultaneously finding it awesome :pray:

4 Likes

This is my favorite automation platform :clap: I’ve been using it with the Discourse API for a long time already - I guess I can migrate some of my modules now :slight_smile:

8 Likes

Thank you for the continued positive feedback, @bartv! We also saw the post you recently published about us :slightly_smiling_face:

3 Likes

Really good pricing on this compared to Zapier. Much better free tier as well. I’m going to play around with this to test some possible functionality with my community. I would like to link Discourse and Telegram group communications.

2 Likes

Sure @Bill , we have Telegram as well, you can see it here. If you need help setting up your scenarios, please contact Integromat’s Support team :slight_smile:

1 Like

Here’s one of my favorite scenarios that I wrote for a weekly roundup of the best artwork on Blender Artists that I post on my other site, BlenderNation. I create a Google Sheet with URLs of posts that I want to feature. The scenario loads each topic, fetches the thumbnail image, uploads it to WordPress and builds the entire article. All I need to do is hit publish. What took me at least an hour to create before is now down to 5 minutes of work. (The scenario that I posted above is step 2 in this process - it takes the same sheet and congratulates everyone, gives them a badge etc).

13 Likes

Wow, @bartv this is incredibly impressive, thanks for sharing! It’s always a pleasure to stumble upon a power user :slightly_smiling_face:. Keep up the great work and thanks for automating with us :pray:

3 Likes

I’ve opened a feature request for support of Discourse Tags:

I couldn’t find anything tag-related in the available fields in Integromat. I think this would be super helpful to have available.

In my particular case I am wanting to be able to set a Tag on a Topic in Discourse and use that as a trigger in Integromat to then transfer that topic’s contents into ClickUp. More specifically, I’ll use this to flag particular forum topics for development tracking in ClickUp (e.g. new feature, bug, etc.).

Not all forum topics should go into ClickUp, and we want to be able to use Categories for differentiating between e.g. Bug and Feature (or other things). A current workaround might be to move a topic to a special “ClickUp” category and use existing Integromat data support to handle this, but it’d be much better and less obtrusive with tags.

Thanks for the awesome Integromat support!

Hi there @oshyan, hope you’re well, and thanks for automating with us!

Unfortunately, there’s currently not an elegant way of achieving what you’re looking to do. That’s mostly due to the limitations in the Discourse API. The main problem is that there is not an easy way to monitor for recent tag assignments.

There is a solution to this but - like mentioned before - it’s not very elegant.

  1. Get a list of all tags via “Make an API Call” module (learn how to make API calls with Integromat here).
  2. Get details for each tag = get the list of assigned topics via “Make API Call” module.
  3. Save the current state into a database (could be a Data Store within Integromat).
  4. Compare the current state against the previous one.
  5. Find which topics have new tags.
  6. Carry out a desired action in ClickUp.

The unfortunate thing is that the scenario would consume quite a number of operations. We realize this is not super convenient but Integromat can only work with what the specific API allows.

Hope this clarifies the situation :slightly_smiling_face:

If you have any questions, feel free to ask away and we’ll make sure to provide more context.

Have a great day!

1 Like

Wow, thank you, that is very helpful and informative! Sounds like I need to request some API updates from the Discourse team then.

Assuming the API were updated to allow querying new tags on topics, I am guessing that it would not be hard to add tag support into Integromat at that point?

Couldn’t this work with a topic webhook? e.g. whenever a topic is updated in Discourse, and it has a tag, make sure it is added to clickup.

1 Like

Interesting. I’m not sure exactly how this works, or how to set it up. As long as it could match when a new tag was added to a previously created topic, and only perform the “add to ClickUp” action with a specific tag (or tags), then it would address my need, at least.

I still think the API sounds like it needs better tag support though.

I needed something similar: I wanted a feed of topics with a specific tag, ordered by tagging date. I ended up working around it by setting up a query in the data explorer, and then calling the report from an external script. Happy to share details if that helps you.

3 Likes

Thanks! I think that gives me a direction to look at if an Integromat-based solution doesn’t come together. I’ll let you know if the details would be helpful. Thanks again. :slight_smile:

1 Like

@oshyan @bartv @JonathanShaw

:raised_hand_with_fingers_splayed: Hi guys!

Upon further investigation, we can confirm a solution via our generic webhooks module could be a viable option.

If you are able to setup webhooks in your Discourse account and use generic Integromat webhook URL as the listener, then you can listen for “topic” events which carry tag information in the payload.

A beginning of a scenario could look like this:

As you know, a topic can have more than one tags, so you should iterate through the tags before making any actions.Our sample scenario ends with “Iterator” but you’d need to add more modules to perform your desired actions (e.g. in the above-mentioned ClickUp app).

You can also check for the more important pieces of the scenario in the following shots:



We are also investigating whether we could add a native webhook support within the existing Discourse app with our development team but given that webhooks in Discourse exist since 2016, there could be a technical issue which is preventing us from doing so.

Hope you will find this useful!
Let us know if you need more help :robot:

1 Like

Wow, this is some excellent support! Thank you, again. So does this avoid the need to use a data store and comparison process?

Happy to help, @oshyan :slightly_smiling_face:

To answer your question - - →

Yes, in this specific case, you should not need to worry about the data store (90% positive about it) and here is why:

  1. We assume that once a tag is assigned to a topic, it rarely gets removed. Only more new tags might be added.
  2. Every topic change will generate a new ping with the current set of tags assigned to the topic - so as soon as your “monitored” tags appear assigned to a topic, your scenario generating ClickUp actions will be triggered immediately.

There still might be a reason to use a Data Store if you want to make the scenario rock solid (and quite complicated to be honest):

  1. For example, a topic gets a tag, then the tag is removed, then the very same tag is added again later => This would trigger your scenario to do the same action which has already been processed before. In this case, you may want to store information about what has already been pushed to ClickUp and what not and not proceed further if the item has been already pushed to ClickUp… On the other hand, you could simply “List All Tasks” before you push to ClickUp and only push to ClickUp if the task is not in ClickUp yet without having to bother with a Data Store. This really depends on your business logic.
  2. A Data Store might simply be just a good log of items processed if you ever want to see what happened on date XYZ. On the other hand, you may just save the log to Google Sheets… And - once again - this depends on your business logic.

Let us know if you need more clarifications.

1 Like