Slack job type for Workflows
Dec 10, 2025 by
Stanisław Chmiela

The Slack job sends a message during a workflow run to your Slack workspace. Since this is an API call to Slack's servers, we have configured our Slack job to skip spinning up a VM and instead send the API call immediately when this job runs. This means your Slack messages will be sent nearly instantaneously.
Using the Slack job
To send a message to a Slack channel, add a job with `type: slack` to your workflow:
name: Send messagejobs:send_slack_message:name: Send Slack messagetype: slackparams:webhook_url: {{ env.SLACK_WEBHOOK_URL }}message: "Hello Slack! 🎉"
The webhook URL can be obtained from your Slack workspace's app settings.
Examples
Below are a couple of examples on how you might sequence the Slack job with other jobs in your workflows.
You can send a message to a channel conditionally when a build fails:
name: Build Notificationjobs:build_ios:name: Build iOStype: buildparams:platform: iosprofile: productionnotify_build:name: Notify Build Statusneeds: [build_ios]type: slackparams:webhook_url: {{ env.SLACK_WEBHOOK_URL }}message: 'Build completed for app ${{ after.build_ios.outputs.app_identifier }} (version ${{ after.build_ios.outputs.app_version }})'
You can also compose rich Slack messages. This is great for if your team coordinates testing or releases from a shared Slack channel that gets various types of messages:
name: Rich Build Notificationjobs:build_android:name: Build Androidtype: buildparams:platform: androidprofile: productionnotify_build:name: Notify Build Statusneeds: [build_android]type: slackparams:webhook_url: {{ env.SLACK_WEBHOOK_URL }}payload:blocks:- type: headertext:type: plain_texttext: 'Build Completed'- type: sectionfields:- type: mrkdwntext: "*App:*\n${{ needs.build_android.outputs.app_identifier }}"- type: mrkdwntext: "*Version:*\n${{ needs.build_android.outputs.app_version }}"- type: sectionfields:- type: mrkdwntext: "*Build ID:*\n${{ needs.build_android.outputs.build_id }}"- type: mrkdwntext: "*Platform:*\n${{ needs.build_android.outputs.platform }}"- type: sectiontext:type: mrkdwntext: 'Distribution: ${{ needs.build_android.outputs.distribution }}'
Learn more about the Slack job type in our pre-packaged jobs documentation.