For the complete documentation index, see llms.txt.
Skip to main content
Version: 8.10 (unreleased)

App Integrations connector

Send messages to Microsoft Teams and Slack, and create channels, directly from your BPMN process.

About this connector

The App Integrations connector sends messages through your organization's Camunda app integrations. The connection is configured once for the environment, so the task itself carries no credentials and no endpoint.

A message can go to a Microsoft Teams channel, user, or conversation, to a Slack channel or user, or to a Camunda recipient — an assignee, candidate users, or candidate groups, which are resolved to whichever platforms those people have connected. Alongside the text you can send an Adaptive Card, a Block Kit payload, or a Camunda form.

When to use this connector

Use this connector if your organization uses Camunda app integrations — the Camunda apps for Microsoft Teams and Slack. Messages sent from a process travel through the same integration your users already have, so they arrive in the same channels and chats, alongside the task notifications those users already receive, rather than through a separate bot with its own identity.

If you do not use app integrations, and you would rather register your own app and supply its credentials in the process model, use the Slack or Microsoft Teams connector instead.

Prerequisites

Use this connector

New to using an outbound connector? Learn how to add and use this type of connector, apply element templates, use connector secrets, handle results and errors, and more.

App integrations must be set up before this connector can be used. This is an administrator task, and it is done once per environment — there is nothing to configure on the task itself.

An organization administrator must turn on Enable app integrations extensions in the cluster settings of every cluster that uses the connector.

Create an App Integrations connector task

You can apply a connector to a task or event via the append menu. For example:

  • From the canvas: Select an element and click the Change element icon to change an existing element, or use the append feature to add a new element to the diagram.
  • From the properties panel: Navigate to the Template section and click Select.
  • From the side palette: Click the Create element icon.

In each of these menus, you can search by connector name or by the operation you want to perform, such as upload object or send email. Connectors that provide several operations list them as separate entries, and selecting an operation applies the connector with that operation preselected.

After you have applied a connector to your element, follow the configuration steps or see using connectors to learn more.

Send message

Send a message to one or more destinations. Choose the Recipient source first — it determines which targets and which content formats are available.

Recipient

Address people by their Camunda identity, and let app integrations resolve which platforms to deliver to. At least one of the three fields is required.

PropertyTypeRequiredDescriptionExample
Assignee emailStringNo*Email address of the recipient.= assigneeEmail
Candidate usersListNo*Usernames to notify.= ["alice", "bob"]
Candidate groupsListNo*Group names to notify.= ["approvers"]

* At least one of the three must be provided.

Message content

Message is plain text and always available. It is optional — leave it empty to send only the additional content, or fill both to send text and a card in one message.

Additional content offers different formats depending on the recipient, because each platform accepts different payloads:

RecipientAdditional content options
CamundaNone · Form
Microsoft TeamsNone · Adaptive card · Form
SlackNone · Block Kit · Form

You can select at most one, so a card and a form are mutually exclusive. You must provide a message, additional content, or both — an empty message with None is rejected before any call is made.

Additional contentPropertyTypeRequiredDescription
Adaptive cardAdaptive cardTextYesAdaptive Card as JSON.
Block KitBlock Kit blocksTextYesSlack Block Kit blocks array as JSON.

Both fields accept pasted JSON as well as a FEEL expression referencing a card built earlier in the process, such as = approvalCard. A JSON literal is valid FEEL, so pasting works without further quoting.

When additional content is Form, the connector renders a linked Camunda form — as an Adaptive Card in Teams, as Block Kit in Slack. Select the form and its binding in the properties panel:

PropertyTypeRequiredDescription
Form bindingDropdownYesLatest, Deployment, or Version tag. Defaults to Latest.
Form IDStringYesID of the Camunda form to render alongside the message.
Version tagStringYes*The version tag to bind to.

* Required when Form binding is Version tag.

Response

The connector reports every destination the message reached, and every one it did not:

{
"deliveries": [
{
"platform": "teams",
"conversation": "19:abc@thread.tacv2;messageid=17123456789",
"messageId": "17123456789"
}
],
"failures": [
{ "platform": "slack", "conversation": "C0123", "reason": "not_in_channel" }
]
}
FieldDescription
deliveriesEvery destination the message was delivered to.
deliveries[].platformteams or slack.
deliveries[].conversationThe conversation the message landed in. Use it to reply later.
deliveries[].messageIdThe message identifier. In Slack, this is the thread anchor.
failuresEvery destination that could not be reached.
failures[].platformteams or slack.
failures[].conversationThe conversation that could not be reached.
failures[].reasonWhy that destination failed.

A single delivery is a one-element list, so with a result variable of response you read it as = response.deliveries[1].conversation. FEEL lists are 1-indexed.

failures is non-empty on a partial success. A process that must not continue on an incomplete fan-out can check = count(response.failures) > 0.

tip

To continue a conversation, feed the response back in. Pass conversation as the Microsoft Teams Conversation target, or as the Slack Channel ID target with messageId as Thread.

Create channel

Create a channel in Microsoft Teams or Slack. Select the Platform first.

PropertyTypeRequiredDescriptionExample
Channel nameStringYesDisplay name for the new channel. Maximum 50 characters.Releases
Team IDStringYesThe team's group ID, or a full Teams URL — the groupId query parameter is extracted automatically.<groupId>
Channel typeDropdownYesMembership type. Only Standard is available.Standard
DescriptionStringNoChannel description.Release coordination
note

Only standard channels are supported. Private and shared channels are not yet available, and a request for either is rejected.

Response

{ "channelId": "19:new-channel@thread.tacv2" }

Read the new channel with = response.channelId. You can pass it straight into a Send message task as the channel target.

Troubleshooting

Connector not configured

When app integrations are not set up for the environment, every job fails immediately with the error code APP_INTEGRATIONS_NOT_CONFIGURED and raises an incident.

This failure is not retried. The Retries and Retry backoff settings on the task do not apply, because no amount of retrying can supply missing configuration. Only processes using this connector are affected — the connector runtime keeps serving every other connector.

Resolving it is an administrator task. See prerequisites.

EnvironmentCauseFix
SaaSEnable app integrations extensions is off for the cluster.Ask an organization administrator to enable it in the cluster settings.
Self-ManagedThe connector runtime is not configured to reach app integrations.Complete the App Integrations connection settings and redeploy the runtime.
Self-ManagedThe runtime authenticates with OAuth, but no cluster ID is set.Set the cluster ID to the cluster's UUID and redeploy the runtime. See choose an authentication method.

The incident message names the missing setting, so read it before changing configuration.

Other error codes

CodeCause
VALIDATION_ERRORAdditional content is Form but no linked form reached the job, or an Adaptive Card or Block Kit payload is not valid JSON of the expected shape.
IO_ERRORThe request could not be serialized, or the response could not be parsed.
HTTP status, such as 401App integrations returned an error. The error code is the HTTP status.

Troubleshooting

To learn about general error handling in Camunda, see BPMN errors and failing jobs.

Further resources