alicehasnoidea/docs
WebsiteLog inGet Started Free
Guides

Actions

How to use one-click action buttons in alice Slack results. Tag customers in Stripe, send Slack DMs, and trigger webhooks from query results.

What Are Actions?

Actions turn passive query results into operational workflows. Instead of seeing a list of churn-risk customers and then switching to Stripe to tag them, you click a button right on the Slack message and it happens instantly.

Slack message showing skill results with Tag in Stripe, Send DM, and Open in Stripe action buttons on each row
Action buttons appear on each result row. Click to execute -- the message updates with confirmation.

The flow:

  1. A user runs a skill via slash command, scheduled report, or monitor
  2. Results are posted to Slack with action buttons attached
  3. A team member clicks a button
  4. Alice executes the action (tags customer, sends DM, fires webhook, etc.)
  5. The Slack message updates in-place with a confirmation
  6. The execution is logged to the audit trail

Actions work on results from any trigger type. Whether the skill was run manually, on a cron schedule, or fired by a monitor alert, the buttons are there.

Pro

Actions require a Pro or Business plan. Free plans can use the free-tier actions: Open in Stripe, Open in Supabase, Copy to Clipboard, Pin Message, Add Reaction, Reply in Thread, and Export as CSV.

Available Actions

Stripe Actions

ActionDescriptionScope
Tag in StripeAdd a metadata tag (e.g., churn-risk, vip) to a Stripe customer. Tags appear in the Stripe dashboard and can be used for segmentation.Per row
Add Stripe NoteAdd a timestamped metadata note to a Stripe customer record. Use for recording observations or context.Per row
Set MetadataSet any custom key-value pair on a Stripe customer. More flexible than Tag -- use for segment, CSM assignment, onboarding status.Per row
Apply CouponApply a discount coupon to a Stripe subscription. Takes effect on the next invoice. Requires confirmation.Per row
Extend TrialPush a subscription's trial end date forward by a specified number of days. Requires confirmation.Per row
Add CreditAdd a balance credit to a Stripe customer (applied to next invoice). Use for goodwill credits, not refunds. Requires confirmation.Per row
Open in StripeOpen the Stripe dashboard page for a customer, subscription, invoice, or payment. Deep links directly to the relevant object.Per row

Slack Actions

ActionDescriptionScope
Send Slack DMSend a direct message to a workspace member via the alice bot. Use for notifying teammates about specific results.Per row
Post to ChannelPost a custom message to a Slack channel. Use for broadcasting alerts or summaries.Global
Set ReminderCreate a Slack reminder for yourself or a teammate. Use for scheduling follow-ups.Per row
Add ReactionAdd an emoji reaction to the result message for lightweight triage (e.g., checkmark for "reviewed").Global
Pin MessagePin the result message to the channel so it stays visible. Good for daily reports.Global
Reply in ThreadPost a reply in the thread of the result message. Keeps follow-up organized.Global
Set Channel TopicUpdate a channel's topic with data from results (e.g., "MRR: $45K -- Churn: 1.8%").Global
Invite to ChannelInvite a team member to a Slack channel for escalation.Per row
Share ResultsRe-post the full formatted results to another channel or as a DM.Global

Database Actions

ActionDescriptionScope
Run Supabase QueryExecute a custom SQL query against your Supabase database. Use for write-backs: flag users, update statuses, insert audit rows. Requires confirmation.Per row
Open in SupabaseOpen the Supabase dashboard table editor filtered to a specific row.Per row

Utility Actions

ActionDescriptionScope
Send WebhookSend an HTTP request with JSON payload to any URL. Integrate with Zapier, n8n, Make.com, or custom APIs.Per row or Global
Send EmailSend a templated email via Resend. Requires confirmation.Per row
Copy to ClipboardCopy a value (email, ID, URL) to the user's clipboard.Per row
Export as CSVExport the full result set as a CSV file uploaded to the channel.Global
Export as PDFExport results as a formatted PDF report.Global

Row Actions vs. Global Actions

Actions have two scopes:

Row actions (scope: "row") appear on each individual result item. They operate on a specific record -- tagging a specific Stripe customer, DMing about a specific user. Row actions work with List and Table output types.

Global actions (scope: "global") appear once at the bottom of the entire result message. They operate on the result as a whole -- pinning the message, exporting all data as CSV, posting to another channel.

Some actions support both scopes (like Send Webhook and Tag in Stripe), and you choose the scope when configuring the skill.

How Actions Execute

When a user clicks an action button in Slack:

  1. Slack sends an interaction payload to alice's /api/slack/actions endpoint
  2. Alice verifies the request signature and identifies the action
  3. The action is executed with the configured parameters, substituting {{field}} templates with values from the result row
  4. The Slack message is updated in-place with a confirmation indicator
  5. The execution is logged to the audit trail

All of this happens within Slack's 3-second response window. For actions that require external API calls (like tagging in Stripe), alice uses deferred responses to avoid timeouts.

Template Interpolation

Actions use {{field}} templates to reference data from the result row. When you configure a "Tag in Stripe" action, you set the customer_id parameter to {{stripe_customer_id}} -- alice substitutes the actual customer ID from the row when the button is clicked.

Common template patterns:

{{email}}                -- Customer email from the result row
{{stripe_customer_id}}   -- Stripe customer ID
{{id}}                   -- Primary key / record ID
{{name}}                 -- Customer name
{{plan}}                 -- Plan name
{{amount}}               -- Monetary value

Templates work in all action parameter fields: message bodies, webhook payloads, email subjects, and SQL queries.

Configuring Actions Per Skill

Actions are configured in the skill builder. The AI skill generation feature automatically suggests appropriate actions based on your query and data sources. You can also configure actions manually.

Choosing Actions

Select actions that make sense for the data your skill returns:

  • Stripe customer data: Tag in Stripe, Open in Stripe, Add Note
  • Churn risk results: Tag in Stripe, Send DM, Set Reminder
  • Failed payments: Open in Stripe, Send DM, Apply Coupon
  • User lists: Open in Supabase, Send Email, Webhook
  • Aggregate metrics: Pin Message, Share Results, Export as CSV

Parameter Mapping

Each action has parameters that need to be mapped to your result fields. For example, "Tag in Stripe" requires:

  • customer_id -- map to {{stripe_customer_id}} or {{customer_id}}
  • tag -- set to a static value like churn-risk or map to a result field

The builder shows available parameters for each action with hints about what to map them to.

Confirmation Dialogs

Some actions require confirmation before executing. These are actions that modify external data:

  • Apply Coupon (modifies billing)
  • Extend Trial (modifies subscription dates)
  • Add Credit (modifies customer balance)
  • Run Supabase Query (modifies your database)
  • Send Email (sends external communication)

When a user clicks a confirmation-required action, a Slack dialog appears asking them to confirm before proceeding.

Safety Model

Alice follows a strict safety model for actions. The core principle: actions are additive, never destructive.

Safe (Available)Never Available
Add a tagCancel a subscription
Add a noteDelete a user
Send a notificationIssue a refund
Apply a couponModify an invoice
Extend a trialRemove a payment method
Add a creditDowngrade a plan
Set metadataRevoke access
Create a reminderPermanently delete data

Even "powerful" actions like Apply Coupon and Add Credit are additive -- they give the customer something rather than taking something away. Confirmation dialogs provide an additional safety net.

This is a deliberate design choice. Destructive actions belong in the Stripe dashboard or your admin panel, where the full context is visible and the consequences are clear. Alice is for quick operational workflows, not irreversible changes.

Audit Trail

Every action execution is logged with complete context:

FieldDescription
WhoThe Slack user who clicked the button
WhatWhich action was executed (e.g., "Tag in Stripe")
WhenTimestamp of execution
ParametersThe resolved parameter values (e.g., customer_id: cus_abc123, tag: churn-risk)
ResultSuccess or failure, with error details if applicable
SkillWhich skill the action was attached to
TriggerHow the skill was invoked (command, schedule, monitor)

View the audit trail at Dashboard > Logs. Filter by action type, user, or date range to review operational activity.

The audit trail serves two purposes:

  1. Accountability: Know exactly who did what and when
  2. Debugging: When something does not work as expected, trace the execution

Audit logs follow your plan's data retention policy: 7 days on Free, 30 days on Pro, 90 days on Business.

Plan Availability

Action CategoryFreeProBusiness
Open in Stripe / SupabaseYesYesYes
Copy to ClipboardYesYesYes
Add Reaction, Pin, Reply in ThreadYesYesYes
Export as CSVYesYesYes
Tag / Note / Metadata in Stripe--YesYes
Send Slack DM / Post to Channel--YesYes
Apply Coupon / Extend Trial / Add Credit--YesYes
Send Webhook--YesYes
Send Email--YesYes
Run Supabase Query--YesYes
Export as PDF--YesYes
Share Results--YesYes
Set Channel Topic / Invite to Channel--YesYes

Free plans have access to non-modifying actions that open external dashboards or perform local operations. Pro and Business plans unlock all actions that modify external data or send communications.

Best Practices

Match actions to the skill's purpose. A churn-risk skill should have "Tag in Stripe" and "Send DM," not "Export as CSV." Choose actions that represent the natural next step after seeing the data.

Use meaningful tag values. When configuring "Tag in Stripe," use specific, descriptive tags: churn-risk-jan-2026 is more useful than flagged. Tags accumulate in Stripe metadata, so make them self-documenting.

Pair List output with row actions. The List output type is designed for per-row actions. Each item gets its own set of buttons. If your skill returns actionable items, use List, not Table.

Include Open in Stripe as a fallback. Even if your primary action is "Tag in Stripe," include "Open in Stripe" as a secondary action. It gives users an escape hatch to view the full record when they need more context.

Set reasonable cooldowns on monitor actions. If a monitor fires and the result has actions, team members may click buttons on stale data. Ensure your actions are idempotent -- tagging the same customer twice is fine, applying a coupon twice is not (hence the confirmation dialog).

Was this page helpful?

On this page