We're Hiring!

Mattermost, Inc.

Mattermost Plugins in Beta! (Server v4.4.0)


The question was that the plug-ins (provided that the developer of the plug-in was not initially limited to writing) would be technically limited as far as possible, depending on the version.

Thanks @danilvoe, good question.

There are some limitations what the plugin developer can do. For instance, not all the UI components can be overwritten quite yet and the developer might need plugin APIs or hooks that aren’t available yet. The plan is to add support and extend the ability of plugins over time based on customer and community feedback.

This is similar to webhook integrations where we add support for additional features over time (personal access tokens, message buttons, etc).

Let me know if that helps?

1 Like

I am trying to add zoom plugin in Mattermost 4.5 version.But its not working.
I have done below steps:
I have created Zoom developer account and use API key and secret in system console Plugins zoom.
I have use webhook url to zoom webhook settings in API credentials.
Then activate the zoom plugin.
After that zoom plugin is not display in default channel.

I have solved the issue. Web socket was not connecting but when SSL add the issue resolved.


I’m getting the error:

[2018/01/03 10:04:18 GMT] [EROR] failed to start up plugins: mkdir ./client/plugins: no such file or directory

I’ve checked my perms. They all seem healthy. The plugin dir even seems to exist…

# pwd
# ls -l client | grep plugins
drwxr--r--. 2 mattermost mattermost        6 Nov 27 08:30 plugins

other things seem to be working ok (file attachments, custom emoji, etc)

@rheouk What triggers this error message for you?

I get this at startup, or when trying to enable plugins. In context with the nearby messages:

[2018/01/03 13:40:29 GMT] [INFO] Starting up plugins
[2018/01/03 13:40:29 GMT] [EROR] failed to start up plugins: mkdir ./client/plugins: no such file or directory
[2018/01/03 13:40:29 GMT] [INFO] Starting up plugins
[2018/01/03 13:40:29 GMT] [EROR] failed to start up plugins: mkdir ./client/plugins: no such file or directory
[2018/01/03 13:40:33 GMT] [EROR] /api/v4/plugins/webapp:GetActivePluginManifests code=501 rid=asdf uid=zxcv ip= Plugins have been disabled. [details: ]

Just to confirm, I am using 4.5.0…

@rheouk is there a client directory inside your mattermost folder? Also can you share the service configuration you’re using?

For example on Ubuntu 14.04 it might be:

start on runlevel [2345]
stop on runlevel [016]
limit nofile 50000 50000
chdir /opt/mattermost
setuid mattermost
exec bin/platform

@jwilander here you go:


[root@matterhost ~]# systemctl status mattermost
● mattermost.service - Mattermost
   Loaded: loaded (/usr/lib/systemd/system/mattermost.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2018-01-03 09:49:37 GMT; 5h 24min ago
 Main PID: 14880 (platform)
   CGroup: /system.slice/mattermost.service
           └─14880 /opt/mattermost/bin/platform

Jan 03 15:04:29 matterhost.example.com platform[14880]: [2018/01/03 15:04:29 GMT] [EROR] /api/v4/plugins/webapp:GetActivePlugi...ls: ]
[root@matterhost ~]# ls -l /opt/mattermost
total 196
drwxr-xr-x. 3 mattermost mattermost     35 Dec 15 23:18 bin
drwxr-xr-x. 7 mattermost mattermost  16384 Dec 15 23:17 client
drwxr-xr-x. 2 mattermost mattermost   4096 Jan  3 09:49 config
-rw-r--r--. 1 mattermost mattermost   2044 Dec 15 23:17 ENTERPRISE-EDITION-LICENSE.txt
drwxr-xr-x. 2 mattermost mattermost     24 Dec 15 23:17 fonts
drwxr-xr-x. 2 mattermost mattermost   4096 Dec 15 23:17 i18n
drwxr-xr-x. 2 mattermost mattermost   4096 Dec 15 23:17 logs
-rw-r--r--. 1 mattermost mattermost 147575 Dec 15 23:17 NOTICE.txt
-rw-r--r--. 1 mattermost mattermost   5181 Dec 15 23:17 README.md
drwxr-xr-x. 2 mattermost mattermost   4096 Dec 15 23:17 templates
drwxr-xr-x. 3 mattermost mattermost     17 Sep 13 23:32 webapp

Can you try updating your WorkingDirectory to WorkingDirectory=/opt/mattermost? My bet is that it’s looking in /opt/mattermost/bin/client/plugins/ instead of /opt/mattermost/client/plugins/

1 Like

great spot - that sorted it! (and I even spotted a similar fix in the docker build - didn’t spot it in my own unit file… :man_facepalming:)

You called the /bin, too:

[root@matterhost bin]# ls -l
total 48568
-rwxr-xr-x. 1 mattermost mattermost 49731993 Dec 15 23:18 platform
drwxr--r--. 2 mattermost mattermost        6 Nov 27 08:30 plugins
[root@matterhost bin]# pwd

Thanks again @jwilander and @jasonblais

Awesome, glad we figured it out. I think we’re also going to make some updates to make this less likely to be an issue in the future and we also have some ideas about better error handling/reporting that should make figuring out issues easier.

I’ve been playing a bit with the plugins system (mainly to add slash commands without having to install anything else outside Mattermost), and I have a few feedbacks points to make :slight_smile:

  1. It wasn’t obvious in the documentation how to get the TeamId (which is required to register slash command). Looking at the PR that introduced the slash command support in plugins, I found that I simply needed to add TeamId to the Plugin struct. How does that work ? Are there other ‘magic’ attributes that work the same way (maybe Enabled which I saw in the JIRA plugin example)?

  2. When there’s an error while activating a plugin from the Management page, the plugin appears activated even though it’s not (you have to go to the logs to see the error, or refresh the page to see the deactivated status).

  3. When the plugin configuration is modified via its dedicated page, the plugin is deactivated and needs to be activated manually again. I find that really weird so maybe it’s an error on my part?

  4. When defining my slash commands, I set the AutoCompleteHint property but no hint appears when the command is displayed in the autocompletion list.

  5. Is it wanted that configuration pages of deactivated plugins are visible in the menu?

The plugin framework is a cool tool and it’s going to be a joy to use it to make Mattermost even more useful, thank you for your work :slight_smile:

1 Like

Always happy to get feedback on plugins!

  1. There are no plugin fields with any special meaning. If you’re looking at the TeamId field of the test plugin here, note that it’s populated by the test here. Your plugin is probably working now because the team id isn’t actually required (and should still work if you removed the field). For example, see the code for our /memes plugin. The only thing that’s required to register a command is the trigger.

  2. That page needs a lot of work. :-/

  3. That’s definitely not intended behavior. The plugin shouldn’t be deactivated at all, and the OnConfigurationChange hook should fire. If you have any relevant log messages or other details, I’ll be glad to investigate this if needed. (I did just try this locally though and things seemed to work fine for me.)

  4. I assume you’re also setting AutoComplete to true? Went ahead and tested this. It’s a bug and here’s the fix.

  5. I think so. For some plugins it makes sense to configure them before activating them for the first time.

I can investigate 3 and 4 if it looks like something’s not working right. And if you think of any cool plugins that you want to build, but find we haven’t implemented all of the plugin APIs you would need, let us know. We’re pretty receptive to feature requests for plugins right now. :slight_smile:

You can also join us in our dev toolkit channel if you have more questions or feedback: https://pre-release.mattermost.com/core/channels/developer-toolkit

1 Like

Thank you for all these informations, and the memes plugin that had escaped my searches and provides lots of examples (also, fun to use) :slight_smile:
Regarding #3, I havent reproduced it recently so it must have been a bug in my code (or my brain).

There is a feeling that the support for plugins has stalled, what with the development of https://github.com/mattermost/mattermost-developer-kit?

Hey @danilvoe! Great question.

We’ve been working on the following items in recent releases:

Here are some upcoming changes we’re planning on:


Ability for plugins to intercept, modify or reject messages before they’re written to the database (PR #8791). This supports the following:

  • Plugins see every post going into the system, including system messages (with some exceptions)
  • Plugins can reject/modify any post before it reaches the DB, including system messages. Supports things like profanity filters. Example here: https://github.com/mattermost/mattermost-plugin-profanity-filter/blob/master/server/plugin.go
  • Plugins can modify any field on the post object. This includes doing interesting things like setting CreateAt to 5 minutes from now or 5 years ago.

Summer 2018 (subject to change)

  1. Release a pre-built Gfycat plugin across desktop and mobile


  1. Add updating user statuses to the plugin API
  • Sample use case: Automatically update user status in Mattermost based on your meeting calendar in Gmail or Outlook/Exchange
  1. Add support for plugins to add options in the […] post dropdown menu
  • Sample use case: Report inappropriate post via the […] post dropdown menu
  1. Add support to customize file upload icon
  • Sample use case: Upload files from Google Drive or OneDrive via the file upload icon
  1. Enhance webhook interactive message capabilities through (currently supports interactive buttons)
  • Message menus
  • Forms and dialogs

Is there documentation for all the plugin related config keys? These for instance:

  "PluginSettings": {
        "Enable": true,
        "EnableUploads": true,
        "Directory": "./plugins",
        "ClientDirectory": "./client/plugins",
        "Plugins": {},
        "PluginStates": {
            "com": {
                "Enable": true

Two of us seem to be having the exact same problem at the moment: Custom Plugin not found after upload/activation.


Is there a public backlog containing the remaining work until the plugin system will be stable ?
(It is still marked as “Beta” in my administration console)


Hi @GuiGuiSoft! We’re actively evaluating taking the beta wrapper off in the first half of next year. There’s a couple of key things that we’d like to address first:

  • The developer API and documentation needs to be unified and cleaned up.
  • We don’t have a story for mobile plugins. As we’re not planning on doing the same client-side code injection as we did for the webapp, we’d like to flesh out a strategy for more/better cross-platform components like interactive dialogs and messages.
  • The plugin infrastructure hasn’t been performance tested. This is often a concern from some of our larger customers.

Stay tuned on our https://community-release.mattermost.com/core/channels/developer-toolkit channel to learn more :slight_smile: