Integrations

An integration hands work to an external tool. Whenever a task of your project moves from one status to another, Mabato sends a web request to an address you choose. A typical use is to give a task to an automation tool, a chat service or a build system as soon as it moves to In progress.

Integrations belong to one project, and only the owner of the project sees and manages them. Members who are not the owner do not see the section. In a closed project the section is read-only.

Configuring an integration

You manage integrations in the settings of the project.

  1. Select Projects in the top bar.
  2. On your project, select Edit project. The dialog Edit project opens.
  3. Scroll to Integrations. Existing integrations are listed with their name, the status change and the method.
The Integrations section of the Edit project dialog with one saved integration and the Add integration button
The Integrations section of a project with one integration.
  1. Select Add integration. The form New integration opens.
  2. Enter a Name of up to 100 characters. The name appears in the list and in failure notifications.
  3. Under Runs when a task moves, choose the status change that triggers the request, for example To do → In progress. The statuses are Backlog, To do, In progress and Done, and every pair of two different statuses is available. The integration runs only when a task really changes its status, whether it moved on the board, in the backlog or in the task details. Creating a task triggers nothing.
  4. Choose the HTTP method: POST, PUT or PATCH.
  5. Enter the URL. It must start with https:// and point to a public address. You can insert placeholders after the host name, for example https://builds.example.com/hooks/{{task.id}}.
The New integration form, upper part: name, the status change that triggers it, HTTP method, URL with a placeholder inserted and a header with a hidden value
The upper part of the New integration form with name, status change, method and URL.
  1. If the receiving tool needs a key, select Add header and fill Header name and Header value, for example Authorization and the key. You can add several headers.
  2. Choose the Body format, Text or JSON, and optionally write a Body (optional) that is sent with every call. Use the placeholder buttons below the field to insert task values. Leave the body empty to send no body.
  3. Set the Timeout in seconds (1-60). The default is 10.
  4. Select Save integration. The integration appears in the list.
The New integration form, middle part: the Headers group with one header name and its value field, and the Add header button
The Headers group of the form. The header value is hidden while you type.
The New integration form, lower part: body format JSON, the body with placeholders, the placeholder buttons and the timeout
The lower part of the form with body, placeholder buttons and timeout.

Mabato sets some headers itself, so you cannot use these names: Host, Content-Length, Content-Type, Transfer-Encoding, Connection, User-Agent, Upgrade, TE, Trailer and anything starting with Proxy-. Each header name can be used once per integration. Mabato sends a Content-Type header that matches the body format you chose.

Changing or deleting an integration

  1. In the Integrations section, select Edit next to the integration, change what you need and select Save integration. To leave the form without saving, select Cancel.
  2. To remove an integration, select Delete and confirm with Delete permanently. The integration and its saved header values are gone and cannot be restored.

There is no switch to pause an integration. Delete it, or change its status change, if you do not want it to run.

What happens at a status change

After Mabato has saved the status change, it sends the request in the background. Your change is never delayed or blocked by the receiving tool. A request counts as successful when the tool answers with a status from 200 to 299. Success is silent: nothing is shown or stored.

Placeholders

Placeholders are replaced by values of the task at the moment the request is sent. Write them in double curly braces, or select a button below the URL or Body (optional) field to insert one. Mabato refuses to save an integration that contains an unknown placeholder, or one that is not allowed in that field, and shows Unknown placeholder with its name.

PlaceholderIn the URLIn the bodyReplaced by
{{project.id}}yesyesthe id of the project
{{task.id}}yesyesthe id of the task
{{transition.from}}yesyesthe old status: backlog, todo, in_progress or done
{{transition.to}}yesyesthe new status, written the same way
{{project.name}}noyesthe name of the project
{{task.name}}noyesthe name of the task
{{task.description}}noyesthe description of the task, empty if it has none
{{task.acceptanceCriteria}}noyesthe acceptance criteria, one per line in their order, empty if there are none

Limits

WhatLimit
Integrations per project5. At the limit, Add integration is disabled and the section says A project can have at most 5 integrations. Delete one to add another.
Headers per integration10
Length of the URL2,000 characters
Length of a header value4,096 characters
Size of the body64 KB
Timeout1 to 60 seconds, counted for the whole request

Where Mabato may send requests

What is not included

When a call fails

When a request fails, the owner of the project gets a notification in the bell, see Integration failure notifications. The entry names the integration and the task, and gives the reason in plain words:

A failed integration in the notification list: which integration, which task, when, and why it failed
A failure notification with the reason The target could not be reached.
MessageWhat to check
The target did not answer in time.The tool is slow or down. Check it, or raise the Timeout (up to 60 seconds).
The target could not be reached.The host name is misspelled or the tool is offline. Check the URL.
The secure connection to the target failed.The tool's certificate is invalid or expired. Fix it on the tool's side.
The target answered with status code.The tool refused the request. A 401 or 403 usually means a wrong key in the header; 404 means a wrong path; 400 may mean the body is not what the tool expects.
The target answered with a redirect (status code), which is not followed.Enter the address the redirect points to.
The address is not allowed (it is not a public address).Use a public https:// address.
The rendered body is not valid.Check the braces of the body and, for a JSON body, the JSON syntax.
A saved header value could not be read. Please enter it again.Edit the integration and enter the header value again.
The task no longer exists.The task was deleted before the request was sent. Nothing to fix.
Too many calls were waiting; this call was dropped.Many status changes happened at once. Move the task again later.
  1. Select the bell, then the text of the failure entry. The settings of the project open at Integrations.
  2. Select Edit next to the integration named in the entry and correct what the reason points to.
  3. Select Save integration.
  4. Move a task through the same status change to send a new request. Mabato does not retry on its own.