# Automation options: Workflow Builder, custom steps and webhooks

*Slack Developer Study Guide · Apps in the Slack Platform · Last updated October 21, 2026 · https://www.certifyforce.com/study-guide/slack-developer/apps-in-the-slack-platform/automation-options-workflow-builder-custom-steps-and-webhooks*

How to pick the lightest tool that meets an automation requirement: no-code Workflow Builder, a custom workflow step (Slack-hosted Deno Slack SDK or self-hosted Bolt), a one-way incoming webhook, or a full app built on the Events API and Web API.

- Certification: Salesforce Slack Developer
- Exam section: Apps in the Slack Platform
- Study guide: https://www.certifyforce.com/study-guide/slack-developer

**Official exam objective:**

> Recommend how to automate and/or enhance operations on a Slack workspace.

## What the exam expects

- Recommend Workflow Builder when built-in triggers and steps (forms, messages, buttons, connectors) meet the requirement and nobody needs to write code.
- Recommend a custom workflow step when a workflow needs logic or a system Slack's steps do not cover, and choose between the Deno Slack SDK (Slack-hosted) and Bolt (self-hosted).
- Know what custom steps cannot do: Free plan development, importing whole coded workflows, event-based runs, Admin/SCIM/Audit Logs APIs, public distribution and Slack Marketplace listing.
- Recommend an incoming webhook for one-way posts from an external system, and a full app (Events API plus Web API) when Slack activity must be heard and answered.

Key terms: **Workflow Builder** (no-code workflows from triggers and steps); **custom workflow step** (an app function offered as a Workflow Builder step); **incoming webhook** (a URL that posts JSON as a message to one channel); **Events API** (Slack pushes activity to your app); **Web API** (methods your app calls to read and act).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Who builds workflows | Anyone on a paid plan except Frontline Members, unless admins restrict it | [Create a workflow](https://slack.com/help/articles/17542172840595-Build-a-workflow--Create-a-workflow-in-Slack) |
| Step hosting | Deno Slack SDK steps are Slack-hosted; Bolt steps are self-hosted | [Workflow steps](https://docs.slack.dev/workflows/workflow-steps/) |
| Free plan | Custom workflow steps cannot be developed on a Free plan | [Workflow steps](https://docs.slack.dev/workflows/workflow-steps/) |
| Coded workflows | Only custom functions come into Workflow Builder as steps, never whole workflows | [Workflow steps](https://docs.slack.dev/workflows/workflow-steps/) |
| Finishing a step | `complete({ outputs })` or `fail({ error })`; otherwise "In progress" | [Bolt custom steps](https://docs.slack.dev/tools/bolt-js/concepts/custom-steps) |
| Step app distribution | No public distribution, no Marketplace; share code as a public repository | [Workflow steps](https://docs.slack.dev/workflows/workflow-steps/) |
| Steps from Apps | Retired September 26, 2024, with `workflow_step_execute` | [Steps from Apps retirement](https://docs.slack.dev/legacy/legacy-steps-from-apps/) |
| Incoming webhook scope | One channel; channel, username and icon cannot be overridden | [Incoming webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) |
| Webhook trigger limits | Paid plans; up to 20 flat variables (no nested JSON); one request per second | [Webhook-started workflows](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack) |
| Join greeting | `member_joined_channel` needs bot membership; `groups:read` for private channels | [member_joined_channel](https://docs.slack.dev/reference/events/member_joined_channel) |

## Check yourself

- When is an incoming webhook the right tool rather than an app?
- Why can't a webhook-triggered workflow read the fields of a nested JSON object?
- Which framework gives Slack-hosted custom steps with built-in datastores?
- Why can't a team list its workflow-step app in the Slack Marketplace?

## Sources

- [Workflow steps](https://docs.slack.dev/workflows/workflow-steps/)
- [Workflows](https://docs.slack.dev/workflows/)
- [Build a workflow: Create a workflow in Slack](https://slack.com/help/articles/17542172840595-Build-a-workflow--Create-a-workflow-in-Slack)
- [Guide to Slack Workflow Builder](https://slack.com/help/articles/360035692513-Guide-to-Slack-Workflow-Builder)
- [Automations: Collect information with a simple form](https://slack.com/help/articles/24720245025555-Automations--Collect-information-with-a-simple-form)
- [Sending messages using incoming webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks)
- [Build a workflow: Create a workflow that starts outside of Slack](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack)
- [Custom Steps (Bolt for JavaScript)](https://docs.slack.dev/tools/bolt-js/concepts/custom-steps)
- [Slack APIs](https://docs.slack.dev/apis/)
- [member_joined_channel event](https://docs.slack.dev/reference/events/member_joined_channel)
- [chat.postMessage method](https://docs.slack.dev/reference/methods/chat.postMessage)
- [Workflow Steps from Apps step back](https://docs.slack.dev/legacy/legacy-steps-from-apps/)
- [Add internal app collaborators](https://slack.com/help/articles/7887743766291-Add-internal-app-collaborators)
- [Develop Efficient Apps with Bolt Framework for Slack](https://trailhead.salesforce.com/content/learn/modules/choose-your-slack-development-path/build-slack-apps-with-bolt)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 7 linked practice questions, and unlimited timed mock exams are included with the Slack Developer pack (USD $19): https://www.certifyforce.com/practice-exams
