Skip to main content

Slack app manifest

This is the manifest you paste to create OttoBot's Slack app. OttoBot isn't listed in the Slack App Directory yet, so every installation starts here with a "From a manifest" app.

For the full walkthrough (installing the app, copying both tokens, entering them in HG Insights, and checking that it works), see Slack Integration.

Paste this into Slack​

At api.slack.com/apps, choose Create New App → From a manifest, select your workspace, then paste the YAML below unchanged. Editing it is the most common cause of an install that seems to succeed but leaves OttoBot silent or half-working.

display_information:
name: OttoBot
description: AI sales assistant — ask me about accounts, contacts, and deals.
background_color: "#3E78B9"

features:
bot_user:
display_name: OttoBot
always_online: true
app_home:
messages_tab_enabled: true
messages_tab_read_only_enabled: false
# Makes a DM with OttoBot an assistant thread, which is what enables the
# tool-activity status line. Use `agent_view` (not the legacy `assistant_view`).
agent_view:
agent_description: Ask OttoBot about accounts, contacts, and deals.

oauth_config:
scopes:
bot:
- app_mentions:read
- channels:history
- channels:read
- chat:write
- files:read
- files:write
- groups:history
- groups:read
- im:history
- im:read
- im:write
- users:read
- users:read.email
- reactions:read
- reactions:write
# Slack adds this automatically when the agent surface is enabled; it is declared
# here so the manifest matches what Slack actually provisions.
- assistant:write

settings:
event_subscriptions:
bot_events:
- app_mention
- message.channels
- message.groups
- message.im
# Required by the agent surface. Do not add `assistant_thread_started` — it belongs
# to the superseded `assistant_view` surface.
- app_home_opened
- app_context_changed
interactivity:
is_enabled: false
org_deploy_enabled: false
socket_mode_enabled: true
token_rotation_enabled: false

Why these settings matter​

SettingWhy it must stay as-is
socket_mode_enabled: trueOttoBot connects out to Slack over Socket Mode. Without it there is no inbound URL for Slack to call, so OttoBot never receives messages.
agent_viewMakes a DM with OttoBot an assistant thread, which is what enables the tool-activity status line while it works.
interactivity.is_enabled: falseOttoBot uses no buttons or modals.
token_rotation_enabled: falseHG Insights stores long-lived tokens. Enabling rotation invalidates them on Slack's schedule and OttoBot goes offline.
Scopes and eventsWhat each one is for, including the ones OttoBot doesn't use today, is listed in Permissions you're approving. Editing the manifest is unsupported, and removing a scope OttoBot uses causes partial failures that are hard to diagnose.

After creating the app​

You need two different tokens, from two different screens. They're routinely swapped:

HG Insights fieldTokenWhere to find it in Slack
Bot User OAuth Tokenstarts xoxb-OAuth & Permissions (after Install to Workspace)
App-Level Tokenstarts xapp-Basic Information → App-Level Tokens (scope connections:write)

Enter both on the Slack card under Integrations in HG Insights (Configure, then Configure Integration). They are stored encrypted and never shown back to you.

Keeping this copy current​

HG Insights keeps this page functionally identical to OttoBot's manifest: the same scopes, events and settings. Only the explanatory comments differ. If you created your app from an earlier version, see "no status line" under If something goes wrong for how to update it.

Next steps​