Action Buttons
Interactive buttons on Slack query results that let you tag, notify, and trigger actions with one click
Action Buttons
ProWhen a skill returns actionable data -- customer records, failed payments, at-risk accounts -- action buttons appear directly in the Slack message. One click executes the action, and the message updates with a confirmation. No need to switch to another tool.
How Action Buttons Work
The flow from skill result to completed action:
- Run a skill --
/alice churn-riskreturns a list of at-risk accounts - View results with buttons -- Each result row shows relevant action buttons (Tag in Stripe, Send DM, Open in Stripe)
- Click an action -- The button is immediately disabled to prevent double-clicks
- alice executes the action -- Tags the customer, sends the DM, or fires the webhook
- Message updates -- The original message is updated with a confirmation showing the action that was taken, who took it, and when
Under the Hood
Action buttons use Slack's Block Kit interactive components. Each button has an action_id in the format alice:{action_slug}:{skill_run_id}. When clicked, Slack sends a request to alice's action handler endpoint, which:
- Validates the request signature using the Slack signing secret
- Looks up the skill run and action configuration
- Checks that the user has permission to execute the action
- Executes the action against the appropriate data source
- Updates the original Slack message with a confirmation
Available Actions
Tag in Stripe
Adds a metadata tag to a Stripe customer record. Useful for marking customers as "at-risk", "expansion-ready", or any custom label your team uses.
| Detail | Value |
|---|---|
| Action slug | stripe_tag |
| Source | Stripe |
| Risk level | Zero -- adds metadata only |
| Requires | A customer ID in the skill result |
When you click "Tag in Stripe", alice writes a key-value pair to the customer's metadata in Stripe. The tag name is configured in the skill builder or uses a default like alice:tagged.
Open in Stripe
Opens the Stripe Dashboard page for the relevant customer, subscription, or payment in a new browser tab. This is a navigation action -- nothing is modified.
| Detail | Value |
|---|---|
| Action slug | open_stripe |
| Source | Stripe |
| Risk level | Zero -- opens a URL only |
| Requires | A Stripe object ID in the skill result |
Open in Supabase
Opens the Supabase Dashboard for the relevant table or record. Like "Open in Stripe", this is purely navigational.
| Detail | Value |
|---|---|
| Action slug | open_supabase |
| Source | Supabase |
| Risk level | Zero -- opens a URL only |
| Requires | A table name or record ID in the skill result |
Send Slack DM
Sends a direct message to a teammate in your Slack workspace. Useful for notifying account managers about at-risk customers or alerting someone about a failed payment.
| Detail | Value |
|---|---|
| Action slug | slack_dm |
| Source | Slack |
| Risk level | Zero -- sends a message only |
| Requires | A Slack user mapping or configurable recipient |
The DM includes context about the skill result that triggered it, so the recipient has full context without needing to ask follow-up questions.
Trigger Webhook
Sends an HTTP POST request to a configured URL with the skill result data as the payload. Use this to integrate with any external system -- create a Linear ticket, send an email via Resend, update a CRM, or trigger a Zapier workflow.
| Detail | Value |
|---|---|
| Action slug | webhook |
| Source | Any |
| Risk level | Zero -- sends data outbound only |
| Requires | A configured webhook URL in the skill settings |
The webhook payload includes the skill result data, the action that triggered it, and metadata about the execution.
Configuring Actions on a Skill
Actions are configured per-skill in the skill builder. Not every skill needs actions -- they are most useful for skills that return actionable records like customers, users, or accounts.
Adding Actions
- Open the skill in Dashboard > Skills > [Skill] > Edit
- In the Format step, you will see options to attach actions to result rows
- Select which actions to enable and configure their parameters
- Save the skill
Mapping Result Fields to Actions
Actions need to know which field in the result maps to the action's target. For example, the "Tag in Stripe" action needs a Stripe customer ID. In the skill builder, you map a result column to the action parameter:
customer_idcolumn maps to thestripe_tagaction's targetuser_emailcolumn maps to theslack_dmaction's recipient- The entire result row maps to the
webhookaction's payload
Idempotency
Action buttons include built-in idempotency protection. Each button press generates a unique idempotency key tied to the skill run ID and action type. This means:
- Double-clicking the same button does not execute the action twice
- Multiple users clicking the same button results in only one execution
- The message updates to show the action was already taken if a duplicate click is detected
The confirmation message shows who originally executed the action and when, so there is no ambiguity about what happened.
Safety Guarantees
All actions in alice are designed to be safe and non-destructive:
What actions can do
- Add metadata/tags to existing records
- Send notifications (Slack DMs, webhook POSTs)
- Open links to external dashboards
What actions will never do
- Cancel a subscription
- Delete a customer or user
- Issue a refund
- Modify pricing or billing
- Remove data from any source
- Perform any irreversible operation
This is a core design principle, not a temporary limitation. alice is built for visibility and lightweight operations, not for destructive data management. See Core Concepts for more on this philosophy.
Permissions
Action execution respects the same role-based access control as skill execution:
| Role | Can Execute Actions |
|---|---|
| Owner | Yes |
| Admin | Yes |
| Member | Yes |
Actions are available to all workspace members by default. If the parent skill has restricted permissions, those restrictions also apply to its actions.
Viewing Action History
Every action execution is logged in the audit trail. Go to Dashboard > Logs to see:
- Which action was taken
- Who clicked the button
- When it was executed
- The action parameters and result
- Duration of the action execution
Action logs follow the same data retention policy as skill run logs: 7 days on Free, 30 days on Pro, 90 days on Business.
Next Steps
- Actions Guide -- Detailed guide to configuring actions
- Slash Commands -- Running skills that produce action buttons
- Response Types -- Control who sees action buttons
- Security -- Audit logs and action history
Was this page helpful?