> ## Documentation Index
> Fetch the complete documentation index at: https://botpress-charmenta-pr-716.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Slack

> Add a bot to Slack using the official integration.

export const OpenInHub = ({integration}) => {
  const {version, id} = integration || ({});
  const basePath = 'https://studio.botpress.cloud/home?exploreHub=1&hubItemId=';
  const url = `${basePath}${id}`;
  return <>
            <a className="button rounded-xl" href={url}>
                <span>
                Open in Hub
                </span>
            </a>
            <i style={{
    margin: "0",
    fontStyle: "normal",
    color: "#666",
    fontSize: "0.85rem",
    padding: '.5rem'
  }}>
                v{version}
            </i>
        </>;
};

export const integrationVersions = {
  "accelo": {
    "version": "2.0.0",
    "id": "intver_01JFAQHPVKP4XTKMNXC2RZKZ88"
  },
  "activecampaign": {
    "version": "2.0.0",
    "id": "intver_01JFAQHVA0Z25PFC7H13EQ41FR"
  },
  "acumatica": {
    "version": "2.0.0",
    "id": "intver_01JFAQHZTNGNHPPS9CKD35Q6EY"
  },
  "airtable": {
    "version": "3.0.0",
    "id": "intver_01KQYW202230PVRW9RVA68VRYR"
  },
  "alchemer": {
    "version": "2.0.0",
    "id": "intver_01JFAQQZRS9ZQ7WBWHCF1MKGCM"
  },
  "anthropic": {
    "version": "18.0.1",
    "id": "intver_01KQYW62BM57D669VPPSAKXGHG"
  },
  "anydesk": {
    "version": "2.0.0",
    "id": "intver_01JFAQR4048H4976FCKT2YHD2X"
  },
  "apollo": {
    "version": "3.0.2",
    "id": "intver_01K6BJFKR5WZV44VNENAN6XBT1"
  },
  "asana": {
    "version": "0.3.13",
    "id": "intver_01KMZACD2E15B0RZB8RJ2XN2JX"
  },
  "attio": {
    "version": "1.0.3",
    "id": "intver_01KMZACN5Z3VJK0W280ED7G4Y0"
  },
  "avoma": {
    "version": "2.0.0",
    "id": "intver_01JFAQRC955G4CXN8QTFHXAPXZ"
  },
  "bamboohr": {
    "version": "2.1.2",
    "id": "intver_01KMZACXWM0GDNQF5PS3QBPQDN"
  },
  "beehiiv": {
    "version": "2.0.0",
    "id": "intver_01JFAQRGRRB95YC5YKWB1BFHZH"
  },
  "bigcommerce": {
    "version": "3.2.4",
    "id": "intver_01KMZAD5GM0P6BGFJHKE2QDDR8"
  },
  "bigin": {
    "version": "2.0.0",
    "id": "intver_01JFAQRS4Q0AY8CEAGYTDMPEPV"
  },
  "bolt": {
    "version": "2.0.0",
    "id": "intver_01JFAQRXGEVSFY1PYM195NAWQ6"
  },
  "box": {
    "version": "2.0.0",
    "id": "intver_01JFAQS1NBSGECDYX5MTTFN7RK"
  },
  "braze": {
    "version": "2.0.0",
    "id": "intver_01JFAQS5V6T5HF7MRJ46NMP42B"
  },
  "brevo": {
    "version": "2.0.0",
    "id": "intver_01JFAQSA1R5F1JGJZS55VTC1RP"
  },
  "britive": {
    "version": "2.0.0",
    "id": "intver_01JFAQSE7EMRGQE8EQD2CB6AZR"
  },
  "browser": {
    "version": "0.8.8",
    "id": "intver_01KPBEHKBJD4MZ0ZDWEBMHX74D"
  },
  "bynder": {
    "version": "2.0.0",
    "id": "intver_01JFAQSJT5N0Q2J2K7KGG12QQ5"
  },
  "calcom": {
    "version": "0.4.2",
    "id": "intver_01KMZADKWGWXARSDEH5VES64JY"
  },
  "calendly": {
    "version": "0.0.5",
    "id": "intver_01KMZADVPKFVFATR33S36R2NQ8"
  },
  "canny": {
    "version": "0.2.3",
    "id": "intver_01KMZAE3W37N658H69Y6ZPSREQ"
  },
  "capsule-crm": {
    "version": "2.0.0",
    "id": "intver_01JFAQSQ6CJJ6G9FK7PAACKE6X"
  },
  "cerebras": {
    "version": "9.0.0",
    "id": "intver_01KNRZZPBTBA0FAHVDVGAJNBJ1"
  },
  "charts": {
    "version": "0.2.8",
    "id": "intver_01KMZAEJVYBMNRMP01816TVEBH"
  },
  "chat": {
    "version": "1.0.0",
    "id": "intver_01KNSDHSSEHCX633DGB62V2ZB8"
  },
  "checkout": {
    "version": "2.0.0",
    "id": "intver_01JFAQSVA80GG51V7QKTARFG0E"
  },
  "clari": {
    "version": "2.0.0",
    "id": "intver_01JFAQSZVXNWXV8371M8ACEPFV"
  },
  "clay": {
    "version": "2.0.0",
    "id": "intver_01JFAQT424E25GR5K1Q8PZC4SC"
  },
  "clickup": {
    "version": "0.0.3",
    "id": "intver_01KMZAF5TCYZNN80SFM4MCASB5"
  },
  "close": {
    "version": "2.0.0",
    "id": "intver_01JFAQT8BMZG66DNJM1DBZ2EQ3"
  },
  "cognism": {
    "version": "2.0.0",
    "id": "intver_01JFAQTCC9XR5N28RA4SNZ8KYJ"
  },
  "comeet": {
    "version": "2.0.0",
    "id": "intver_01JFAQTGMDYR086FC0VEQ95VGC"
  },
  "confluence": {
    "version": "3.3.4",
    "id": "intver_01KMZAFH0Z4679X7P0SSY18DPV"
  },
  "copper": {
    "version": "2.0.0",
    "id": "intver_01JFAQTS5YQTVNMSRMTH12X4YC"
  },
  "creatio": {
    "version": "2.0.0",
    "id": "intver_01JFAQTXY9Z4S1XDWSBT4J4KJJ"
  },
  "crmone": {
    "version": "2.0.0",
    "id": "intver_01JFAQV28DCXF7SV71N9Q5BJC8"
  },
  "dalle": {
    "version": "0.3.8",
    "id": "intver_01KMZAFVDB02KE332TQ930T76J"
  },
  "databricks": {
    "version": "0.0.4",
    "id": "intver_01JBMK24H270H1ZTH2E8P34V4J"
  },
  "demandbase": {
    "version": "2.0.0",
    "id": "intver_01JFAQV9ZZ9MHH2ENEQ1ERMY2G"
  },
  "desk": {
    "version": "1.0.0",
    "id": "intver_01KGQ972H97YAN3D3KY9425JYN"
  },
  "discord": {
    "version": "1.2.1",
    "id": "intver_01KREWJHF8AZMBHH3JC5XFSFTB"
  },
  "docusign": {
    "version": "2.0.0",
    "id": "intver_01JFAQVKFW4F7BBRSDD7EEZE6Z"
  },
  "dropbox": {
    "version": "2.0.1",
    "id": "intver_01KMZAG63Y41V6CJGWD858VKQN"
  },
  "email": {
    "version": "0.1.4",
    "id": "intver_01KMZAGF70MCA75BCVVY3DGHXD"
  },
  "enchant": {
    "version": "2.0.0",
    "id": "intver_01JFAQVQQ60DZV01V3D1GA29YG"
  },
  "engagebay": {
    "version": "2.0.0",
    "id": "intver_01JFAQVVW42J4KNWCEZ6VQ3ZSJ"
  },
  "fathom": {
    "version": "2.0.0",
    "id": "intver_01JFAQW0QPEJS7M4EPVN9GJJDK"
  },
  "feature-base": {
    "version": "1.0.3",
    "id": "intver_01KMZAGPXHR49811P7S89CWN35"
  },
  "fireworks-ai": {
    "version": "11.0.0",
    "id": "intver_01KNS0091R8GPT9C088F3F3PE0"
  },
  "fivetran": {
    "version": "2.0.0",
    "id": "intver_01JFAQW55482FWTDSPCYT53DWE"
  },
  "flodesk": {
    "version": "2.0.0",
    "id": "intver_01JFAQW9APE7Z8E81T2F58VDM7"
  },
  "folk": {
    "version": "2.0.0",
    "id": "intver_01JFAQWDVG2DVFYKJRD8DMHVPZ"
  },
  "freshchat": {
    "version": "1.5.5",
    "id": "intver_01KMZAH6YY639ZNJTGDMTH25GT"
  },
  "freshsales": {
    "version": "2.0.0",
    "id": "intver_01JFAQWJ3CC3DJ5KG0W6XP33FD"
  },
  "fullstory": {
    "version": "2.0.0",
    "id": "intver_01JFAQWPM0T9EH5SAGDQ3Z14ZC"
  },
  "gainsight": {
    "version": "2.0.0",
    "id": "intver_01JFAQWTPKB13Y7619A6GEN5HQ"
  },
  "getaccept": {
    "version": "2.0.0",
    "id": "intver_01JFAQWZ0SAMDJVQNNA86RG21M"
  },
  "getresponse": {
    "version": "2.0.0",
    "id": "intver_01JFAQX34P2PBW0EM9NC6ZGFT5"
  },
  "github": {
    "version": "1.2.1",
    "id": "intver_01KMZAHF5WMDMTT9H6V3DQ8T50"
  },
  "gladly": {
    "version": "2.0.0",
    "id": "intver_01JFAQX7B29WE85VA8N5BCST16"
  },
  "gmail": {
    "version": "1.0.7",
    "id": "intver_01KMZAHQQ8YSB2DRVR1B6YXNCN"
  },
  "google-ai": {
    "version": "8.0.0",
    "id": "intver_01KNS00R1R8P4N2J4SVN6HHX4P"
  },
  "google-analytics": {
    "version": "1.0.0",
    "id": "intver_01KPRHR42CF02FMDDGSF0TG0DB"
  },
  "googlecalendar": {
    "version": "2.0.9",
    "id": "intver_01KMZAJAKBEZKGH0ZPQJBR1VAE"
  },
  "googledrive": {
    "version": "0.4.2",
    "id": "intver_01KMZAJJE94ZYG631DQM93B9RN"
  },
  "groq": {
    "version": "16.0.0",
    "id": "intver_01KNS015P14BRMA1C0CJG239M4"
  },
  "gsheets": {
    "version": "2.1.9",
    "id": "intver_01KP5Z7BRNQNGVY406742M7BBE"
  },
  "gusto": {
    "version": "2.0.0",
    "id": "intver_01JFAR75Y17N5EWS6P0PC93RHQ"
  },
  "happyfox": {
    "version": "2.0.0",
    "id": "intver_01JFAQXFNYWCXX819GTBHJ470W"
  },
  "help-scout": {
    "version": "2.0.0",
    "id": "intver_01JFAQXKX61YWJMMHYK3YDFZ0K"
  },
  "hitl": {
    "version": "2.0.2",
    "id": "intver_01K0SV5HZAT9FSVVEB7S91SH4F"
  },
  "honeybook": {
    "version": "2.0.0",
    "id": "intver_01JFAQXRQ8TADY78EBPBKSXFPC"
  },
  "hubspot": {
    "version": "6.0.9",
    "id": "intver_01KTV8S0ZX48N54R7AVG24CHJZ"
  },
  "hunter": {
    "version": "1.0.2",
    "id": "intver_01KMZAKV7RM16T6375G0JXDYHH"
  },
  "instagram": {
    "version": "4.1.9",
    "id": "intver_01KRC18D2WGRKT0G2SRZQ5VE3Z"
  },
  "instantly": {
    "version": "2.0.0",
    "id": "intver_01JFAQXWNN3ZM0DAQBE7N2BP54"
  },
  "intercom": {
    "version": "2.0.4",
    "id": "intver_01KMZAMCN5KTKK60239ADVZGCP"
  },
  "keap": {
    "version": "2.0.0",
    "id": "intver_01JFAQY1A6AQGSZRPKRJ11649R"
  },
  "kit": {
    "version": "2.0.0",
    "id": "intver_01JFAQYAZCH51RNSK7XT8ZKFZC"
  },
  "klaviyo": {
    "version": "3.0.2",
    "id": "intver_01K6BFXSKB0G4KMVGJPTR1X835"
  },
  "knack": {
    "version": "2.0.0",
    "id": "intver_01JFAQYKKW7JQJYH5GQW95AXFJ"
  },
  "kommo": {
    "version": "0.1.0",
    "id": "intver_01KN89QSX1YDM04NFRHK0WKZMG"
  },
  "kustomer": {
    "version": "2.0.0",
    "id": "intver_01JFAQYR6A4M0527JHDSNXN4TY"
  },
  "kylas": {
    "version": "2.0.0",
    "id": "intver_01JFAQYWG9PSP9076S99BE546R"
  },
  "leadsquared": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ0PFZ7W5AJN0MZQJHGW7"
  },
  "leandata": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ54J1MYP5D4WXZ1Z7KK7"
  },
  "less-annoying-crm": {
    "version": "2.0.0",
    "id": "intver_01JFAQZ99G8ZWD4847189A4EGS"
  },
  "line": {
    "version": "2.0.6",
    "id": "intver_01KMZAMNQDY2BZAW86RZ58VSQY"
  },
  "linear": {
    "version": "2.5.0",
    "id": "intver_01KRHWEFJX783DXZG4XZ7B6ER8"
  },
  "linkedin": {
    "version": "0.1.3",
    "id": "intver_01KN89RB1CBCP1MGAYEBHMCT5Q"
  },
  "localiq": {
    "version": "2.0.0",
    "id": "intver_01JFAQZDKZQV3J44CJF074YHXZ"
  },
  "loops": {
    "version": "0.1.5",
    "id": "intver_01KMZANASVEZEW761JG63F1RM0"
  },
  "mailchimp": {
    "version": "0.3.12",
    "id": "intver_01KMZANJGYPESPJHZJ7NPEE7C6"
  },
  "mailerlite": {
    "version": "3.0.2",
    "id": "intver_01K6BFZTMA8A1Z3KV1QXGWB61S"
  },
  "make": {
    "version": "0.3.9",
    "id": "intver_01KMZANTJE8DN94EE6K74ETJ0Z"
  },
  "mcp-client": {
    "version": "0.1.0",
    "id": "intver_01KQWWKVJFV3DD65PR233GRHMH"
  },
  "messenger": {
    "version": "5.1.8",
    "id": "intver_01KPDRM4RJN85JM6DRP43W48PX"
  },
  "mindtickle": {
    "version": "2.0.0",
    "id": "intver_01JFAQZNRAZMBAEZ943WY44EXD"
  },
  "mintlify": {
    "version": "1.0.1",
    "id": "intver_01KMZAPEVTD6HZ9BPRHVK09DC5"
  },
  "mistral-ai": {
    "version": "1.0.0",
    "id": "intver_01KNS021C2ZFXWGAXC5TFAXBA9"
  },
  "monday": {
    "version": "1.0.2",
    "id": "intver_01KMZAQ1357YEQBMVPHQ8QYSAF"
  },
  "mural": {
    "version": "2.0.0",
    "id": "intver_01JFAQZT1R0PR8C59Z1MHWMG83"
  },
  "notion": {
    "version": "3.0.5",
    "id": "intver_01KN89RW8Z2ZK98F8JM8X66RXS"
  },
  "nutshell": {
    "version": "2.0.0",
    "id": "intver_01JFAQZYAY7HCM2VTWTZK0GHZ6"
  },
  "odoo": {
    "version": "0.1.0",
    "id": "intver_01KRC19AE1XTHSSW6D0FZPJZ1H"
  },
  "okta": {
    "version": "2.0.0",
    "id": "intver_01JFAR02JMED7RK95YXCDRVNXX"
  },
  "openai": {
    "version": "20.0.0",
    "id": "intver_01KNS02E7FF0WQAYXWJDM3ZZNQ"
  },
  "outreach": {
    "version": "2.0.0",
    "id": "intver_01JFAR0717CX7YJNEX0FXRR8TN"
  },
  "pandadoc": {
    "version": "2.0.0",
    "id": "intver_01JFAR0BBGR1EGMRR2PRGHRABB"
  },
  "pdf-generator": {
    "version": "0.0.7",
    "id": "intver_01KMZAQP6WG231KVJSEY88KG2J"
  },
  "pimcore": {
    "version": "2.0.0",
    "id": "intver_01JFAR0FRDMZNK1B1EYKTHKANP"
  },
  "pipedrive": {
    "version": "5.0.1",
    "id": "intver_01K6BG0EMJ1FQ0E5DCZZEN9301"
  },
  "pipeliner": {
    "version": "2.0.0",
    "id": "intver_01JFAR0R7XHB7VYX0Q0ETV9B3F"
  },
  "plaid": {
    "version": "2.0.0",
    "id": "intver_01JFAR0WH09T4MRTTQHRAH2ESD"
  },
  "planhat": {
    "version": "2.0.0",
    "id": "intver_01JFAR10SHDPEPXTJN6RRB9H6S"
  },
  "plus/apify": {
    "version": "1.0.4",
    "id": "intver_01KH6R8P2ZYNACH8KQED02E9YC"
  },
  "plus/brevo-hitl": {
    "version": "2.0.0",
    "id": "intver_01K392AS04342HT6Z2HZZ60A2D"
  },
  "plus/chatwoot": {
    "version": "1.0.4",
    "id": "intver_01KD3BFCBTV2PNJ80V3VYFBC4M"
  },
  "plus/email-notifier": {
    "version": "1.1.1",
    "id": "intver_01KB0YDR2AQ5A8H0GBZ35J51MQ"
  },
  "plus/go-high-level": {
    "version": "1.0.4",
    "id": "intver_01K6BDMWTZ7FNKTGD4N8YDPH1H"
  },
  "plus/google-analytics": {
    "version": "0.2.4",
    "id": "intver_01HXS7S3FCANEG2EN5FKKWH722"
  },
  "plus/google-chat-spaces": {
    "version": "1.0.3",
    "id": "intver_01K6BDNG0ZNW5JXRA5RDQJQCWN"
  },
  "plus/google-sheets": {
    "version": "1.2.5",
    "id": "intver_01K6BDP63K6Y5HFVJ84R7EKP0Y"
  },
  "plus/hitl-api": {
    "version": "0.2.0",
    "id": "intver_01J804C5W78Y5FWHHNVWMR5VM3"
  },
  "plus/hubspot-help-desk-hitl": {
    "version": "3.1.1",
    "id": "intver_01KC2AWT9BDMTHV36AJRVEF4DN"
  },
  "plus/hubspot-hitl": {
    "version": "5.0.4",
    "id": "intver_01K6BF9Q6D3M6T3J3V541ZJC8Z"
  },
  "plus/huggingface": {
    "version": "0.0.1",
    "id": "intver_01J6FP62B7KEHH4NC4R7NBBTW5"
  },
  "plus/intercom-hitl": {
    "version": "2.0.5",
    "id": "intver_01KEWH6D0NF81Q1WB8W8V225A8"
  },
  "plus/jira": {
    "version": "0.2.4",
    "id": "intver_01KCVM0T96KA8YK723W3N8P494"
  },
  "plus/livechat-hitl": {
    "version": "3.0.2",
    "id": "intver_01K6BFYE44DVXKVFXBHKZED8P9"
  },
  "plus/magento2": {
    "version": "2.0.4",
    "id": "intver_01K6BKG43JX1R6ZEB4CXJ6R65D"
  },
  "plus/messaging": {
    "version": "0.2.3",
    "id": "intver_01HVM0R2R0QXWNH3BEZPYFK6ZJ"
  },
  "plus/mixpanel": {
    "version": "0.2.3",
    "id": "intver_01HXABTRSS5J9K0G1S1MPCX8J9"
  },
  "plus/persat": {
    "version": "1.0.0",
    "id": "intver_01K75D7C0JTQ5FY058T1187G32"
  },
  "plus/salesforce": {
    "version": "1.0.2",
    "id": "intver_01JRTXEF3N4CG8D668ANNW40DS"
  },
  "plus/segment": {
    "version": "0.2.4",
    "id": "intver_01HX7R8GHK3BKX2RHER1KYV0VT"
  },
  "plus/sharepoint": {
    "version": "4.1.0",
    "id": "intver_01K8XWKTBHY5AX8JTBV4T0D4V6"
  },
  "plus/sharepoint-excel": {
    "version": "2.2.1",
    "id": "intver_01K6BKHB4TQ5RFVA6W1VKAREFB"
  },
  "plus/shopify-products-sync": {
    "version": "3.0.2",
    "id": "intver_01K8VDHZ8FM3ZDMTYA8Y7EDXTT"
  },
  "plus/twiliovoice": {
    "version": "0.2.3",
    "id": "intver_01K6BKKDTZ1X8ECNS52N96M8AM"
  },
  "plus/zoho": {
    "version": "3.0.0",
    "id": "intver_01JNRREVZ0BA8VKEKMPMRF0DW5"
  },
  "plus/zohosalesiq": {
    "version": "2.0.0",
    "id": "intver_01JP37YJSERZGZQQW369F7W27C"
  },
  "plus/zoho-sales-iq-hitl": {
    "version": "3.0.0",
    "id": "intver_01K397TXPTA9982A829WV7XNX5"
  },
  "plus/zoom": {
    "version": "3.1.1",
    "id": "intver_01KAEBBGJ327TGZ0AZW31H6S19"
  },
  "posthog": {
    "version": "2.0.0",
    "id": "intver_01JFAR153DTQEGNZXMA4PAAV7D"
  },
  "postman": {
    "version": "2.0.0",
    "id": "intver_01JFAR19F7PZWCD9CBKAB30540"
  },
  "postmark": {
    "version": "0.1.0",
    "id": "intver_01KQ01G3YEPEXVNP2SFH49079G"
  },
  "quickbooks": {
    "version": "2.0.0",
    "id": "intver_01JFAR1E05TRXX8ZHQ52QMG2KJ"
  },
  "reachdesk": {
    "version": "2.0.0",
    "id": "intver_01JFAR1JD70W5VTGDEDGFQXKEB"
  },
  "resend": {
    "version": "0.1.10",
    "id": "intver_01KMZAQXVC4KP20TFCJNGY8PKV"
  },
  "revenuehero": {
    "version": "2.0.0",
    "id": "intver_01JFAR1PDG5ZQHDAT4PX3J67N5"
  },
  "rippling": {
    "version": "0.0.4",
    "id": "intver_01JBMK2M3NWMH63ZTQBSQSEXHB"
  },
  "sage": {
    "version": "2.0.0",
    "id": "intver_01JFAR8RTCW2P6C8VWSMN7FQFS"
  },
  "salesflare": {
    "version": "2.0.0",
    "id": "intver_01JFAR2316BGX6S5NS812P3K1Z"
  },
  "salesforce": {
    "version": "1.0.0",
    "id": "intver_01KN5FRKT6KRAB6RM9T34J70M2"
  },
  "salesloft": {
    "version": "2.0.0",
    "id": "intver_01JFAR27CFAGF2479ER2FSSDF7"
  },
  "sap": {
    "version": "2.0.0",
    "id": "intver_01JFAR2BP4TDJTAGWN841KBC1S"
  },
  "seismic": {
    "version": "2.0.0",
    "id": "intver_01JFAR2G7J0GAC6J69K8TN3429"
  },
  "sendgrid": {
    "version": "0.1.10",
    "id": "intver_01KMZAR5KN275G2NPSSFZ9WTSE"
  },
  "showpad": {
    "version": "2.0.0",
    "id": "intver_01JFAR2MD45546TPY7V2CPBAMD"
  },
  "sisense": {
    "version": "2.0.0",
    "id": "intver_01JFAR2RSBXRYQ5YX9JNTP4A9C"
  },
  "slack": {
    "version": "5.0.2",
    "id": "intver_01KQF3XKNH2W5EPAXK6G4CMW96"
  },
  "smartsheet": {
    "version": "2.0.0",
    "id": "intver_01JFAR2WXTE6FV2C2HP7V0WBTE"
  },
  "splunk": {
    "version": "0.0.4",
    "id": "intver_01JBMK2Y874WV5BGHXYN07HKHE"
  },
  "square": {
    "version": "2.0.0",
    "id": "intver_01JFARACGK6NT3YTKC5KVXVKX6"
  },
  "stripe": {
    "version": "0.5.6",
    "id": "intver_01KMZARNC46Y0CJTQNR5AA8AKD"
  },
  "sunco": {
    "version": "2.0.1",
    "id": "intver_01KMZARX5E90SJEDCQ6GKZ4ZBV"
  },
  "surveymonkey": {
    "version": "2.0.0",
    "id": "intver_01JFAR3A2K8BEMP4XHQ7F5R47R"
  },
  "tableau": {
    "version": "2.0.0",
    "id": "intver_01JFAR3E9K4XXVYFE7SSGT1C9E"
  },
  "tally": {
    "version": "0.1.2",
    "id": "intver_01KMZAS4KR8F34JNE9VP1HJXT9"
  },
  "teamleader": {
    "version": "2.0.0",
    "id": "intver_01JFAR3JKE5HAGV6TBCW7SV4QM"
  },
  "teams": {
    "version": "2.0.4",
    "id": "intver_01KMZASBVV28FFKB2227618RRM"
  },
  "teamviewer": {
    "version": "2.0.0",
    "id": "intver_01JFAR3PY3EBMYYBKQTZAHESXP"
  },
  "telegram": {
    "version": "1.0.7",
    "id": "intver_01KQYYDZKSAHXH5DRK1ES6CKNS"
  },
  "thryv": {
    "version": "2.0.0",
    "id": "intver_01JFAR3VQXXNJTR85472MM0RDY"
  },
  "todoist": {
    "version": "1.0.5",
    "id": "intver_01KMZASWGQHERWV5WESYJR1W1R"
  },
  "trello": {
    "version": "2.1.3",
    "id": "intver_01KMZAT7K4J1JWT5VCV838TFRN"
  },
  "twilio": {
    "version": "1.3.2",
    "id": "intver_01KMZATFC2J1KF4J3T93HPFKGF"
  },
  "vcita": {
    "version": "2.0.0",
    "id": "intver_01JFAR3ZXVBWKYYJ53W7C4E4VB"
  },
  "vercel": {
    "version": "2.0.0",
    "id": "intver_01JFAR44YN7JA1Z86S8CACVG5C"
  },
  "viber": {
    "version": "1.0.5",
    "id": "intver_01KMZATNKPMTPMYBQNZN6744N4"
  },
  "vonage": {
    "version": "1.0.4",
    "id": "intver_01KMZATWVPMNCXAF3XB72FNHKS"
  },
  "webchat": {
    "version": "0.3.0",
    "id": "intver_01JBVV0VQW8XN3Z5V9K8DB1M3B"
  },
  "webflow": {
    "version": "3.1.4",
    "id": "intver_01KMZAV5CCPAJKR8S1M36266M8"
  },
  "webhook": {
    "version": "1.1.5",
    "id": "intver_01KMZAVBMNBFJBA9SM7ATDS5R8"
  },
  "wechat": {
    "version": "0.1.1",
    "id": "intver_01KMZAVJTKWA8CQ8A7KFRDYR5X"
  },
  "whatsapp": {
    "version": "4.15.0",
    "id": "intver_01KRC1AEDCE4P5HTZP5G41495H"
  },
  "workable": {
    "version": "0.1.2",
    "id": "intver_01KMZAWAMH776SVXW1R98ABBHP"
  },
  "workday": {
    "version": "2.0.0",
    "id": "intver_01JFARBCCKWG9BS7DT2RBW9D7B"
  },
  "wrike": {
    "version": "2.0.0",
    "id": "intver_01JFAR4H5WXG78YBE7MEG967MW"
  },
  "zapier": {
    "version": "0.3.10",
    "id": "intver_01KMZAWN77ZX053EB5VJH7C9B9"
  },
  "zendesk": {
    "version": "3.0.6",
    "id": "intver_01KFGPZM7JH7PMSEBRSSM5C4H8"
  },
  "zendesk-messaging-hitl": {
    "version": "1.1.0",
    "id": "intver_01KPRHTAYTB64Z5QEDC1XZCSYH"
  },
  "zendesk-sell": {
    "version": "2.0.0",
    "id": "intver_01JFAR4NP3JGG1BPV4MFJ2HBC3"
  },
  "zoho": {
    "version": "3.1.4",
    "id": "intver_01KMZAX48A0JA4Q0CD3B7REDT0"
  },
  "zoom": {
    "version": "0.1.0",
    "id": "intver_01KNSQZR3F06SRHJY3BCN20JH9"
  }
};

<OpenInHub integration={integrationVersions.slack} />

The official Slack integration allows members of your Slack workspace to chat with your bot via a Slack app.

## Setup

<Tabs>
  <Tab title="Automatic configuration">
    <Info>
      You will need:

      * A [published bot](/get-started/quick-start)
      * A [Slack workspace](https://slack.com/get-started?entry_point=help_center#/createnew)
    </Info>

    1. In Botpress Studio, select **Explore Hub** in the upper-right corner.
    2. Search for the **Slack** integration, then select **Install Integration**.
    3. In the **Configuration** menu, select **Authorize Slack**.
    4. Follow the instructions to connect Botpress to your Slack account.
  </Tab>

  <Tab title="Manual configuration">
    For advanced use cases, you can use your own Slack app with our integration.

    <Info>
      You will need:

      * A [published bot](/get-started/quick-start)
      * A [Slack workspace](https://slack.com/get-started?entry_point=help_center#/createnew)
    </Info>

    <Steps titleSize="h3">
      <Step title="Install the Slack integration in Botpress">
        1. In Botpress Studio, select **Explore Hub** in the upper-right corner.
        2. Search for the **Slack** integration, then select **Install Integration**.
        3. In the **Configuration** menu, select the drop-down menu, then select **Configure by manually supplying the refresh token and signing secret**.
        4. Leave the configuration fields empty for now—you'll come back to them after you've setup your Slack app.
      </Step>

      {/* ### Step 2: Create a Slack app */}

      <Step title="Create a Slack app">
        Next, you'll need to create a Slack app for your bot:

        1. Open a new tab and go to your [Slack API portal](https://api.slack.com/apps). Login if you haven't already.
        2. Select **Create New App**, then **From a manifest**.
        3. Select the workspace you want to connect your bot to.
        4. Erase everything in the field, then paste this code:

        <CodeGroup>
          ```json JSON [expandable] lines theme={null}
          {
              "display_information": {
                  "name": "Bot (powered by Botpress)"
              },
              "features": {
                  "bot_user": {
                      "display_name": "Bot (powered by Botpress)",
                      "always_online": false
                  }
              },
              "oauth_config": {
                  "redirect_urls": [
                      "https://webhook.botpress.cloud/oauth"
                  ],
                  "scopes": {
                      "bot": [
                          "channels:history",
                          "channels:manage",
                          "channels:read",
                          "chat:write",
                          "groups:history",
                          "groups:read",
                          "groups:write",
                          "im:write",
                          "im:read",
                          "im:history",
                          "mpim:history",
                          "mpim:read",
                          "mpim:write",
                          "reactions:read",
                          "reactions:write",
                          "team:read",
                          "users.profile:read",
                          "users:read",
                          "users:read.email"
                      ]
                  }
              },
              "settings": {
                  "event_subscriptions": {
                      "request_url": "https://webhook.botpress.cloud/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "bot_events": [
                          "member_joined_channel",
                          "member_left_channel",
                          "message.channels",
                          "message.groups",
                          "message.im",
                          "message.mpim",
                          "reaction_added",
                          "reaction_removed",
                          "team_join"
                      ]
                  },
                  "org_deploy_enabled": false,
                  "socket_mode_enabled": false,
                  "token_rotation_enabled": false
              }
          }
          ```

          ```yaml YAML [expandable] lines theme={null}
          display_information:
            name: Bot (powered by Botpress)
          features:
            bot_user:
              display_name: Bot (powered by Botpress)
              always_online: false
          oauth_config:
            redirect_urls:
              - https://webhook.botpress.cloud/oauth
            scopes:
              bot:
                - channels:history
                - channels:manage
                - channels:read
                - chat:write
                - groups:history
                - groups:read
                - groups:write
                - im:write
                - im:read
                - im:history
                - mpim:history
                - mpim:read
                - mpim:write
                - reactions:read
                - reactions:write
                - team:read
                - users.profile:read
                - users:read
                - users:read.email
          settings:
            event_subscriptions:
              request_url: https://webhook.botpress.cloud/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
              bot_events:
                - member_joined_channel
                - member_left_channel
                - message.channels
                - message.groups
                - message.im
                - message.mpim
                - reaction_added
                - reaction_removed
                - team_join
            org_deploy_enabled: false
            socket_mode_enabled: false
            token_rotation_enabled: false
          ```
        </CodeGroup>

        5. Select **Create**. This creates a Slack app with all the necessary scopes and subscriptions for the Botpress Slack integration.
      </Step>

      {/* ### Step 3: Install the app to your workspace */}

      <Step title="Install the app to your workspace">
        Next, you need to install the app to your Slack workspace and enable token rotation:

        1. Navigate to **OAuth and Permissions** in the left navigation bar of your Slack app's settings.
        2. Under OAuth Tokens, select **Install to (your workspace name)**, then follow the on-screen instructions to authorize the app.

        <Warning>
          Make sure you follow this step before moving on—otherwise, you won't be able to install the app to your workspace.
        </Warning>

        3. Scroll up to **Advanced token security via token rotation**, then select **Opt In**.
      </Step>

      {/* ### Step 4: Configure the integration in Botpress */}

      <Step title="Configure the integration in Botpress">
        Now you can use your app's credentials to fill in the configuration fields from [Step 1](#step-1-install-the-slack-integration-in-botpress):

        <AccordionGroup>
          <Accordion title="Slack Refresh Token or Bot Token">
            1. Navigate to **OAuth & Permissions** in the left navigation bar of your Slack app's settings.
            2. Copy the **Bot User OAuth Token**.
            3. Paste it into the **Slack Refresh Token or Bot Token** field.
          </Accordion>

          <Accordion title="Slack Client ID">
            1. Navigate to **Basic Information** in the left navigation bar of your Slack app's settings.
            2. Copy the **Client ID**.
            3. Paste into the **Slack Client ID** field.
          </Accordion>

          <Accordion title="Slack Client Secret">
            1. Navigate to **Basic Information** in the left navigation bar of your Slack app's settings.
            2. Copy the **Client secret**.
            3. Paste into the **Slack Client Secret** field.
          </Accordion>

          <Accordion title="Slack Signing Secret">
            1. Navigate to **Basic Information** in the left navigation bar of your Slack app's settings.
            2. Copy the **Signing secret**.
            3. Paste into the **Slack Signing Secret** field.
          </Accordion>
        </AccordionGroup>

        When all the fields have been filled in, scroll down and select **Save Configuration**. This automatically activates the integration.
      </Step>

      {/* ### Step 5: Add the integration's webhook URL */}

      <Step title="Add the integration's webhook URL">
        All you need to do now is add the integration's webhook URL to your Slack app:

        1. Scroll up and copy the webhook URL at the top of the integration's **Configuration** menu. It should start with `webhook.botpress.cloud`.
        2. Go back to your Slack app's settings. Navigate to the **Event Subscriptions** section.
        3. In the **Request URL** field, erase the placeholder webhook URL and paste your actual webhook URL.
        4. Select **Save Changes** at the bottom of the page.
      </Step>
    </Steps>

    <Check>
      Your Slack integration is ready. Within your Slack workspace, you can search for the app and add it to any channel—it should respond as your bot.
    </Check>
  </Tab>
</Tabs>

***

## Options

The Slack integration's **Configuration** menu offers a few additional options:

### Custom display name / avatar

* Fill in the **Bot name** field to display a custom name as the sender in Slack conversations.
* Fill in the **Bot avatar URL** field to set a custom image as the bot's Slack avatar.

<Note>
  The image should be square, at least 512x512 pixels, and no larger than 1024x1024 pixels. The URL must be publicly accessible. Supported formats include GIF, PNG, JPG, JPEG, HEIC, and HEIF.
</Note>

### Typing indicator emoji

When the **Typing indicator emoji** option is enabled, the bot will [react](https://www.google.com/url?sa=t\&source=web\&rct=j\&opi=89978449\&url=https://slack.com/help/articles/202931348-Use-emoji-and-reactions\&ved=2ahUKEwjkjonOtueOAxXug4kEHWXTNBsQFnoECBcQAQ\&usg=AOvVaw0_PwUudKr3nwqdIQhPpFza) to incoming messages with an emoji to indicate that it's processing the message.

### Reply threading

When the **Reply Threading Enabled** option is enabled, the bot will reply to incoming messages in [threads](https://slack.com/help/articles/115000769927-Use-threads-to-organize-discussions).

If you want the bot to only reply in a thread when [mentioned](https://slack.com/help/articles/205240127-Use-mentions-in-Slack), enable the **Require Bot Mention for Reply Threading** option.

{/* <Note>
Enabling reply threading alone doesn't stop your bot from posting in the main channel. To restrict responses exclusively to threads, modify your Workflow to terminate when receiving messages from the main channel:

1. Insert a Standard Node at the very beginning of your Main Workflow. Then, connect it to your existing Workflow.
2. Add an [expression Card](/studio/concepts/cards/flow-logic#expression) to the Standard Node.
3. Set the expression Card's condition to `event.channel === 'channel'`.
TODO: modify conditional to account for other channel types
3. Create an End Card and connect the expression Card to it.
</Note> */}

## Limitations

Here are some limitations with the Slack integration:

### API rate limits

Standard Slack API limits apply to the Slack integration in Botpress. These include rate limits, message size restrictions, and other constraints imposed by the Slack platform. Ensure that your bot adheres to these limits to maintain optimal performance and reliability.

<Note>
  For more information, check out the [Slack API documentation](https://api.slack.com/apis/rate-limits).
</Note>

### Rich text processing

Slack uses a proprietary markup language, [mrkdwn](https://api.slack.com/reference/surfaces/formatting#lists), to format rich text in messages. Since Botpress uses [standard Markdown](https://www.markdownguide.org/cheat-sheet/) for rich text, we convert incoming `mrkdwn` messages from Slack to Markdown. This is to ensure that:

* Studio's interface can read them properly
* Botpress' AI inference engine can understand them

However, any outgoing AI-generated messages your bot sends to the Slack integration will still be rendered in Markdown by default. This means **rich text messages from your bot may not be rendered properly in Slack** without additional processing.

***

## Cards

{/* vale off */}

Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration:

### Add Reaction

<span>
  {"Add a reaction to a message"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="name" type="string" required>
      <span>
        {"The name of the reaction to add, ex: thumbsup"}
      </span>
    </ResponseField>

    <ResponseField name="messageId" type="string" required>
      <span>
        {"The ID of the message, ex: {{event.messageId}}"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

### Find Target

<span>
  {"Find a target in Slack (ex: a channel, a user to send a dm, etc)"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="query" type="string" required>
      <span>
        {"What to search for, ex name of a channel, a user, etc."}
      </span>
    </ResponseField>

    <ResponseField name="channel" type="enum<string>" required>
      <span>
        {"Which channel to look into, ex: dm, channel"}
      </span>

      Available options: `dm`, `channel`
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="targets" type="array" required>
      <span>
        {"The matching targets"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="displayName" type="string" required>
          <span>
            {"The display name of the target"}
          </span>
        </ResponseField>

        <ResponseField name="tags" type="object" required>
          <span>
            {"The tags of the target"}
          </span>
        </ResponseField>

        <ResponseField name="channel" type="enum<string>" required>
          <span>
            {"The type of channel of the target"}
          </span>

          Available options: `dm`, `channel`
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get Channels Info

<span>
  {"Get information about Slack channels one page at a time. Returns channel details for the current page and a cursor for the next page."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="includeArchived" type="boolean">
      <span>
        {"Whether to include archived channels in the results"}
      </span>
    </ResponseField>

    <ResponseField name="includePrivate" type="boolean">
      <span>
        {"Whether to include private channels in the results"}
      </span>
    </ResponseField>

    <ResponseField name="includeDm" type="boolean">
      <span>
        {"Whether to include direct messages in the results"}
      </span>
    </ResponseField>

    <ResponseField name="cursor" type="string">
      <span>
        {"Pagination cursor for fetching the next page of channels. Omit for the first page."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="channels" type="array" required>
      <span>
        {"List of channels on this page"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="id" type="string" required>
          <span>
            {"The Slack ID of the channel"}
          </span>
        </ResponseField>

        <ResponseField name="name" type="string" required>
          <span>
            {"The name of the channel"}
          </span>
        </ResponseField>

        <ResponseField name="topic" type="string" required>
          <span>
            {"The topic of the channel"}
          </span>
        </ResponseField>

        <ResponseField name="purpose" type="string" required>
          <span>
            {"The purpose of the channel"}
          </span>
        </ResponseField>

        <ResponseField name="numMembers" type="number" required>
          <span>
            {"The number of members in the channel"}
          </span>
        </ResponseField>

        <ResponseField name="isPrivate" type="boolean" required>
          <span>
            {"Whether the channel is private"}
          </span>
        </ResponseField>

        <ResponseField name="isArchived" type="boolean" required>
          <span>
            {"Whether the channel is archived"}
          </span>
        </ResponseField>

        <ResponseField name="isDm" type="boolean" required>
          <span>
            {"Whether this is a direct message conversation"}
          </span>
        </ResponseField>

        <ResponseField name="userId" type="string" required>
          <span>
            {"The Slack user ID of the other participant (for 1:1 DMs)"}
          </span>
        </ResponseField>

        <ResponseField name="creator" type="string" required>
          <span>
            {"The Slack user ID of the channel creator"}
          </span>
        </ResponseField>

        <ResponseField name="created" type="number" required>
          <span>
            {"The Unix timestamp of when the channel was created"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nextCursor" type="string" required>
      <span>
        {"Cursor for the next page. Empty string if no more pages."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get or Create a Conversation

<span>
  {"Proactively create a conversation from a bot"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="conversation" type="object" required>
      <Expandable>
        <ResponseField name="channelId" type="string">
          <span>
            {"The Slack channel ID. If provided, the channel name lookup is skipped. (for channel type)"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="conversationId" type="string" required>
      <span>
        {"The Botpress ID of the created conversation"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Get User Profile

<span>
  {"Get information about a user"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="userId" type="string" required>
      <span>
        {"The ID of the user to retrieve information about"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="firstName" type="string">
      <span>
        {"The first name of the user"}
      </span>
    </ResponseField>

    <ResponseField name="lastName" type="string">
      <span>
        {"The last name of the user"}
      </span>
    </ResponseField>

    <ResponseField name="email" type="string">
      <span>
        {"The email of the user"}
      </span>
    </ResponseField>

    <ResponseField name="displayName" type="string">
      <span>
        {"The display name of the user"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Retrieve Message

<span>
  {"Retrieve a message from Slack"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="ts" type="string" required>
      <span>
        {"The timestamp of the message to retrieve"}
      </span>
    </ResponseField>

    <ResponseField name="channel" type="string" required>
      <span>
        {"The channel of the message to retrieve"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="type" type="string" required>
      <span>
        {"The type of the message"}
      </span>
    </ResponseField>

    <ResponseField name="user" type="string" required>
      <span>
        {"The user who sent the message"}
      </span>
    </ResponseField>

    <ResponseField name="ts" type="string" required>
      <span>
        {"The timestamp of the message"}
      </span>
    </ResponseField>

    <ResponseField name="text" type="string" required>
      <span>
        {"The text of the message"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Sync Members

<span>
  {"Sync Slack workspace members to Botpress users. This action keeps track of the last sync timestamp and will only sync updated members since the last sync."}
</span>

<ResponseField name="input" type="object">
  This Card has no input fields.
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="syncedCount" type="number" required>
      <span>
        {"The number of members synced"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Update Channel Topic

<span>
  {"Update the topic of a channel"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="topic" type="string" required>
      <span>
        {"The new topic of the channel"}
      </span>
    </ResponseField>

    <ResponseField name="channelId" type="string" required>
      <span>
        {"The channel id of the target channel"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  This Card has no output.
</ResponseField>

***

## Triggers

{/* vale off */}

Here's a reference for all [Triggers](/studio/concepts/triggers/) available with the integration:

<Tip>
  You can access data returned from any of these Triggers by reading `event.payload` after the Trigger fires.
</Tip>

### Member Joined Channel

<span>
  {"Triggered when a member joins a channel"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="botpressUserId" type="string" required>
      <span>
        {"The Botpress ID of the user who joined the channel"}
      </span>
    </ResponseField>

    <ResponseField name="botpressConversationId" type="string" required>
      <span>
        {"The Botpress ID of the channel the user joined"}
      </span>
    </ResponseField>

    <ResponseField name="inviterBotpressUserId" type="string">
      <span>
        {"The Botpress ID of the user who invited the new member"}
      </span>
    </ResponseField>

    <ResponseField name="targets" type="object" required>
      <span>
        {"Slack IDs of the user, channel and inviter"}
      </span>

      <Expandable>
        <ResponseField name="slackUserId" type="string" required>
          <span>
            {"The Slack ID of the user who joined the channel"}
          </span>
        </ResponseField>

        <ResponseField name="slackChannelId" type="string" required>
          <span>
            {"The Slack ID of the channel the user joined"}
          </span>
        </ResponseField>

        <ResponseField name="slackInviterId" type="string">
          <span>
            {"The Slack ID of the user who invited the new member"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Member Joined Workspace

<span>
  {"Triggered when a member joins the workspace"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="userId" type="string" required>
      <span>
        {"The Botpress ID of the user who joined the workspace"}
      </span>
    </ResponseField>

    <ResponseField name="target" type="object" required>
      <span>
        {"Slack user who joined the workspace"}
      </span>

      <Expandable>
        <ResponseField name="userId" type="string" required>
          <span>
            {"The Slack ID of the user who joined the workspace"}
          </span>
        </ResponseField>

        <ResponseField name="userName" type="string" required>
          <span>
            {"The username of the user who joined the workspace"}
          </span>
        </ResponseField>

        <ResponseField name="userRealName" type="string" required>
          <span>
            {"The real name of the user who joined the workspace"}
          </span>
        </ResponseField>

        <ResponseField name="userDisplayName" type="string" required>
          <span>
            {"The display name of the user who joined the workspace"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Member Left Channel

<span>
  {"Triggered when a member leaves a channel"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="botpressUserId" type="string" required>
      <span>
        {"The Botpress ID of the user who left the channel"}
      </span>
    </ResponseField>

    <ResponseField name="botpressConversationId" type="string" required>
      <span>
        {"The Botpress ID of the channel the user left"}
      </span>
    </ResponseField>

    <ResponseField name="targets" type="object" required>
      <span>
        {"Slack IDs of the user and channel"}
      </span>

      <Expandable>
        <ResponseField name="slackUserId" type="string" required>
          <span>
            {"The Slack ID of the user who left the channel"}
          </span>
        </ResponseField>

        <ResponseField name="slackChannelId" type="string" required>
          <span>
            {"The Slack ID of the channel the user left"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Reaction Added

<span>
  {"Triggered when a reaction is added to a message"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="reaction" type="string" required>
      <span>
        {"The reaction that was added"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string">
      <span>
        {"The ID of the user who added the reaction"}
      </span>
    </ResponseField>

    <ResponseField name="conversationId" type="string">
      <span>
        {"The ID of the conversation"}
      </span>
    </ResponseField>

    <ResponseField name="targets" type="object" required>
      <span>
        {"The targets of the reaction"}
      </span>

      <Expandable>
        <ResponseField name="dm" type="object">
          <span>
            {"The DMs targeted by the reaction"}
          </span>
        </ResponseField>

        <ResponseField name="channel" type="object">
          <span>
            {"The channels targeted by the reaction"}
          </span>
        </ResponseField>

        <ResponseField name="thread" type="object">
          <span>
            {"The threads targeted by the reaction"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Reaction Removed

<span>
  {"Triggered when a reaction is removed from a message"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="reaction" type="string" required>
      <span>
        {"The reaction that was removed"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string">
      <span>
        {"The ID of the user who removed the reaction"}
      </span>
    </ResponseField>

    <ResponseField name="conversationId" type="string">
      <span>
        {"The ID of the conversation"}
      </span>
    </ResponseField>

    <ResponseField name="targets" type="object" required>
      <span>
        {"The targets of the reaction"}
      </span>

      <Expandable>
        <ResponseField name="dm" type="object" />

        <ResponseField name="channel" type="object" />

        <ResponseField name="thread" type="object" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Workflow Webhook

<span>
  {"Triggered when the workflow webhook is triggered"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="value" type="string">
      <span>
        {"The value of the workflow webhook"}
      </span>
    </ResponseField>

    <ResponseField name="userId" type="string">
      <span>
        {"The Slack ID of the user who triggered the workflow"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Tags

You can read [event tags](/studio/guides/advanced/event-properties#param-tags) to get information about an active Slack conversation:

### Slack conversation ID

To get the Slack conversation ID:

`event.tags.conversation["slack:id"]`

### Slack thread ID

To get the Slack conversation thread ID (if it's a thread):

`event.tags.conversation["slack:thread"]`

### Slack user ID

To get the Slack user ID:

`event.tags.user["slack:id"]`

### Slack message ID

To get the Slack message ID:

`event.tags.message["slack:id"]`
