External Task Providers

Kanboard can be used to manage tasks stored in another system. For example, an external system can be a bug tracker or any kind of ticketing software. In this way, you can use Kanboard to manage external tasks in the same way as native tasks.



  1. The end-user select an alternative task provider during the task creation
  2. The external task provider expose a form to the user to be able to fetch the external task
  3. The external task is retrieved from the other system
  4. A customized form is shown to the user


When the task detail page is opened, Kanboard will load asynchronously the remote task. This information might be cached by the plugin to improve the loading time.


Optionally, the plugin can offer a custom form to save extra information to the external system.


External task providers must implements at least two interfaces:

  • Kanboard\Core\ExternalTask\ExternalTaskProviderInterface
  • Kanboard\Core\ExternalTask\ExternalTaskInterface


getName()Get provider name (label)
fetch()Retrieve task from external system or cache
save($uri, array $formValues, array &$formErrors)Save external task to another system
getImportFormTemplate()Get task import template name
getCreationFormTemplate()Get creation form template
getModificationFormTemplate()Get modification form template
getViewTemplate()Get task view template name
buildTaskUri(array $formValues)Build external task URI based on import form values


getUri()Return Uniform Resource Identifier for the task
getFormValues()Return a dict to populate the task form


The plugin may raise an exception if something goes wrong:

  • Kanboard\Core\ExternalTask\ExternalTaskException: Generic error related to the external system
  • Kanboard\Core\ExternalTask\AccessForbiddenException: Access not allowed by the external system
  • Kanboard\Core\ExternalTask\NotFoundException: External task not found

Provider Registration

class Plugin extends Base
    public function initialize()
        $this->externalTaskManager->register(new MyExternalTaskProvider());