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

# WhatsApp Setup

> Add a bot to WhatsApp 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"
  }
};

{/* vale on */}

<OpenInHub integration={integrationVersions.whatsapp} />

The official WhatsApp integration allows your users to chat with your bot by messaging a WhatsApp number.

## Setup

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

      * A [published bot](https://botpress.com/docs/botpress-quickstart)
      * A [Facebook account](https://www.facebook.com/signup)
    </Info>

    <Tip>
      Visual learner?

      Check out our [WhatsApp Setup guide](https://www.youtube.com/watch?v=Fs6dIxgEKoY) on YouTube for a step-by-step video guide.
    </Tip>

    <Steps>
      <Step>
        In Botpress Studio, select **Explore Hub** in the upper-right corner.
      </Step>

      <Step>
        Search for the **WhatsApp** integration, then select **Install Integration**.
      </Step>

      <Step>
        In the **Configuration** menu, select **Authorize WhatsApp**.
      </Step>

      <Step>
        Follow the instructions to connect Botpress to your WhatsApp account.
      </Step>
    </Steps>

    <Note>
      Additional requirements:

      * While setting up your WhatsApp integration, we will ask you to create or select:

        * A [Facebook business page](https://www.facebook.com/business/help/1968057156746246?id=939256796236247)
        * A [WhatsApp business account](https://business.whatsapp.com)

      * After setup is complete, your business will undergo a [verification process by Meta](https://www.facebook.com/business/help/1095661473946872?id=180505742745347), the parent company of WhatsApp. This verification confirms the identity and eligibility of your business to use Meta's platforms.
    </Note>
  </Tab>

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

    <Info>
      You will need:

      * A [Meta developer app](https://developers.facebook.com/apps/creation/) with the . Check out the [Meta developer documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/get-started#set-up-developer-assets) to learn more about the setup process.
    </Info>

    ### Step 1: Install the integration in Botpress

    <Steps>
      <Step>In Botpress Studio, select **Explore Hub** in the upper-right corner.</Step>
      <Step>Search for the **WhatsApp** integration, then select **Install Integration**.</Step>
      <Step>In the **Configuration** menu, open the drop-down menu and select **Manual Configuration**.</Step>
    </Steps>

    ### Step 2: Configure the integration

    Next, fill in the integration's configuration fields using information from your Meta app:

    <AccordionGroup>
      <Accordion title="Verify Token">
        Used by Meta to verify that you're the real owner of the provided webhook. Can be any alphanumeric string.
      </Accordion>

      <Accordion title="Access Token">
        <Steps>
          <Step>
            In your Meta app's left sidebar, go to **Use cases > Connect with customers through WhatsApp > Customize**.

            <Note>
              If you haven't added WhatsApp as a use case yet, select **Add use cases**, then **Connect with customers through WhatsApp**.
            </Note>
          </Step>

          <Step>
            Select a WhatsApp business portfolio (if you haven't already).
          </Step>

          <Step>
            Go to **API testing**.
          </Step>

          <Step>
            Select **Generate access token**, then copy the token.
          </Step>

          <Step>
            In Botpress, paste the token into the integration's **Access Token** configuration field.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="Client Secret">
        <Steps>
          <Step>In your Meta App's left sidebar, expand the **App Settings** menu and select **Basic**.</Step>
          <Step>In the **App Secret** field,  select **Show**, then copy your secret.</Step>
          <Step>In Botpress, paste the secret into the integration's **Client Secret** configuration field.</Step>
        </Steps>
      </Accordion>

      <Accordion title="Default Bot Phone Number ID">
        <Steps>
          <Step>
            In your Meta app's left sidebar, go to **Use cases > Connect with customers through WhatsApp > Customize**.

            <Note>
              If you haven't added WhatsApp as a use case yet, select **Add use cases**, then **Connect with customers through WhatsApp**.
            </Note>
          </Step>

          <Step>
            Select a WhatsApp business portfolio (if you haven't already).
          </Step>

          <Step>
            Go to **API testing**.
          </Step>

          <Step>
            Under **Select a 'From' phone number**, copy the **Phone number ID**.
          </Step>

          <Step>
            In Botpress, paste the ID into the integration's **Default Bot Phone Number ID** configuration field.
          </Step>
        </Steps>
      </Accordion>

      <Accordion title="WABA ID (WhatsApp Business Account ID)">
        <Steps>
          <Step>
            In your Meta app's left sidebar, go to **Use cases > Connect with customers through WhatsApp > Customize**.

            <Note>
              If you haven't added WhatsApp as a use case yet, select **Add use cases**, then **Connect with customers through WhatsApp**.
            </Note>
          </Step>

          <Step>
            Select a WhatsApp business portfolio (if you haven't already).
          </Step>

          <Step>
            Go to **API testing**.
          </Step>

          <Step>
            Under **Select a 'From' phone number**, copy the **WhatsApp Business Account ID**.
          </Step>

          <Step>
            In Botpress, paste the ID into the integration's **WhatsApp Business Account ID** configuration field.
          </Step>
        </Steps>
      </Accordion>
    </AccordionGroup>

    When you've filled in all the fields, select **Save Configuration**. This will automatically enable your integration.

    ### Step 3: Add your webhook

    Now that you've enabled your integration, you can add your webhook to your Meta app's configuration:

    <Steps>
      <Step>In Botpress, copy the webhook URL and **Verify Token** from the integration's **Configuration** section.</Step>

      <Step>
        In your Meta app's left sidebar, go to **Use cases > Connect with customers through WhatsApp > Customize**.

        <Note>
          If you haven't added WhatsApp as a use case yet, select **Add use cases**, then **Connect with customers through WhatsApp**.
        </Note>
      </Step>

      <Step>
        Select a WhatsApp business portfolio (if you haven't already).
      </Step>

      <Step>Go to **Configuration**.</Step>
      <Step>Paste the webhook URL into the **Callback URL** field.</Step>
      <Step>Paste your **Verify Token** in the **Verify Token** field.</Step>

      <Step>
        Select **Verify and save**. Then, subscribe to the following webhook fields:

        * `message_template_components_update`
        * `message_template_quality_update`
        * `message_template_status_update`
        * `messages`
        * `template_category_update`
      </Step>
    </Steps>

    <Check>
      You've manually configured your WhatsApp integration!

      For more information, check out WhatsApp's guide on [getting started with Cloud API](https://developers.facebook.com/docs/whatsapp/cloud-api/get-started#send-test-message).
    </Check>
  </Tab>

  <Tab title="Playground">
    If you want to test your bot's behaviour in WhatsApp before going through the actual setup process, you can use the WhatsApp integration playground.

    <Info>
      You will need:

      * A [published bot](https://botpress.com/docs/botpress-quickstart)
      * A [WhatsApp account](https://web.whatsapp.com)
    </Info>

    <Steps>
      <Step>In Botpress Studio, select **Explore Hub** in the upper-right corner.</Step>
      <Step>Search for the **WhatsApp** integration, then select **Install Integration**.</Step>
      <Step>Select **Test your agent on WhatsApp**.</Step>
      <Step>Follow the instructions to set up the playground.</Step>
    </Steps>
  </Tab>
</Tabs>

***

## Cards

<Warning>
  Some of the integration's Cards use [WhatsApp message templates](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/) to send messages to users.

  In WhatsApp, these templates support both [named and positional parameters](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates/#parameter-formats). However, the integration currently only supports positional parameters. This means you'll get an error if you try to provide named parameters in a Card's `conversation.templateVariablesJson` field.
</Warning>

{/* vale off */}

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

### List Message Templates

<span>
  {"Lists WhatsApp message templates from the connected WhatsApp Business Account, including parameter schemas and approval status"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="status" type="enum<string>">
      <span>
        {"Filter templates by approval status. Returns all statuses if not specified."}
      </span>

      Available options: `APPROVED`, `PENDING`, `REJECTED`, `PAUSED`, `DISABLED`, `ARCHIVED`, `LIMIT_EXCEEDED`, `IN_APPEAL`
    </ResponseField>

    <ResponseField name="name" type="string">
      <span>
        {"Filter templates by exact name match."}
      </span>
    </ResponseField>

    <ResponseField name="limit" type="number" default={20}>
      <span>
        {"Maximum number of templates to return per page (default: 20, max: 100)."}
      </span>
    </ResponseField>

    <ResponseField name="nextCursor" type="string">
      <span>
        {"Cursor for fetching the next page of results. Obtained from a previous listTemplates call."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="templates" type="array" required>
      <span>
        {"Array of message templates"}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="id" type="string" required>
          <span>
            {"Unique identifier of the template"}
          </span>
        </ResponseField>

        <ResponseField name="name" type="string" required>
          <span>
            {"Name of the message template"}
          </span>
        </ResponseField>

        <ResponseField name="status" type="string" required>
          <span>
            {"Approval status of the template"}
          </span>
        </ResponseField>

        <ResponseField name="category" type="string" required>
          <span>
            {"Category of the template (e.g. MARKETING, UTILITY, AUTHENTICATION)"}
          </span>
        </ResponseField>

        <ResponseField name="language" type="string" required>
          <span>
            {"Language and locale code of the template"}
          </span>
        </ResponseField>

        <ResponseField name="components" type="array" required>
          <span>
            {"Array of template components (HEADER, BODY, FOOTER, BUTTONS)"}
          </span>

          <Expandable title="array item properties">
            <ResponseField name="type" type="string" required>
              <span>
                {"Component type (HEADER, BODY, FOOTER, BUTTONS)"}
              </span>
            </ResponseField>

            <ResponseField name="format" type="string">
              <span>
                {"Format of the component (e.g. TEXT, IMAGE, VIDEO for HEADER)"}
              </span>
            </ResponseField>

            <ResponseField name="text" type="string">
              <span>
                {"Text content of the component, may contain {{N}} placeholders"}
              </span>
            </ResponseField>

            <ResponseField name="buttons" type="array">
              <span>
                {"Array of button objects (only present for BUTTONS component type)"}
              </span>

              <Expandable title="array item properties">
                <ResponseField name="type" type="string" required>
                  <span>
                    {"Type of button (QUICK_REPLY, URL, PHONE_NUMBER, etc.)"}
                  </span>
                </ResponseField>

                <ResponseField name="text" type="string">
                  <span>
                    {"Label text of the button"}
                  </span>
                </ResponseField>

                <ResponseField name="url" type="string">
                  <span>
                    {"URL for URL-type buttons, may contain {{1}} placeholder"}
                  </span>
                </ResponseField>

                <ResponseField name="phone_number" type="string">
                  <span>
                    {"Phone number for PHONE_NUMBER-type buttons"}
                  </span>
                </ResponseField>
              </Expandable>
            </ResponseField>

            <ResponseField name="example" type="object">
              <span>
                {"Example values for the component parameters"}
              </span>
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

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

### Send Template Message

<span>
  {"Sends a WhatsApp Message Template to a user in an existing conversation"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="conversation" type="object" required>
      <span>
        {"Details of the conversation"}
      </span>

      <Expandable>
        <ResponseField name="userPhone" type="string" required>
          <span>
            {"Phone number of the WhatsApp user to start a conversation with. Add the country code (e.g. +81 for japan)"}
          </span>
        </ResponseField>

        <ResponseField name="templateName" type="string" required>
          <span>
            {"Name of the WhatsApp Message Template to start the conversation with"}
          </span>
        </ResponseField>

        <ResponseField name="templateLanguage" type="string">
          <span>
            {"Language of the WhatsApp Message Template to start the conversation with. Defaults to \"en\" (English)"}
          </span>
        </ResponseField>

        <ResponseField name="templateVariablesJson" type="string">
          <span>
            {"Deprecated: use templateBodyParams instead. JSON array of body variable values: [\"val1\", \"val2\"]."}
          </span>
        </ResponseField>

        <ResponseField name="templateHeaderParams" type="object | object | object | object">
          <span>
            {"Header parameter. For text headers: type=\"text\", value is the replacement text, parameterName is optional (for named params). For media headers: type=\"image\"|\"video\"|\"document\", url is the media URL. Documents may include a filename."}
          </span>
        </ResponseField>

        <ResponseField name="templateBodyParams" type="object | object">
          <span>
            {"Body parameters. For positional params ({{1}}, {{2}}, ...): type=\"positional\", values is an ordered array of strings. For named params ({{buyer_name}}): type=\"named\", values is a record mapping param names to values."}
          </span>
        </ResponseField>

        <ResponseField name="templateButtonParams" type="array">
          <span>
            {"Button parameters as an ordered array. url: value is the URL suffix. quick_reply: payload is the callback data. copy_code: code is the coupon code. skip: no parameter needed (for phone number buttons, etc.)."}
          </span>

          <Tabs>
            <Tab title="url">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="value" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="quick_reply">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="payload" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="copy_code">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="code" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="skip">
              <Expandable>
                <ResponseField name="type" type="string" required />
              </Expandable>
            </Tab>
          </Tabs>
        </ResponseField>

        <ResponseField name="botPhoneNumberId" type="string">
          <span>
            {"Phone number ID to use as sender (uses the default phone number ID if not provided)"}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

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

    <ResponseField name="messageId" type="string">
      <span>
        {"ID of the message created"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Start Conversation

<span>
  {"Proactively starts a conversation with a WhatsApp user by sending them a message using a WhatsApp Message Template"}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="conversation" type="object" required>
      <span>
        {"Details of the conversation"}
      </span>

      <Expandable>
        <ResponseField name="userPhone" type="string" required>
          <span>
            {"Phone number of the WhatsApp user to start a conversation with. Add the country code (e.g. +81 for japan)"}
          </span>
        </ResponseField>

        <ResponseField name="templateName" type="string" required>
          <span>
            {"Name of the WhatsApp Message Template to start the conversation with"}
          </span>
        </ResponseField>

        <ResponseField name="templateLanguage" type="string">
          <span>
            {"Language of the WhatsApp Message Template to start the conversation with. Defaults to \"en\" (English)"}
          </span>
        </ResponseField>

        <ResponseField name="templateVariablesJson" type="string">
          <span>
            {"Deprecated: use templateBodyParams instead. JSON array of body variable values: [\"val1\", \"val2\"]."}
          </span>
        </ResponseField>

        <ResponseField name="templateHeaderParams" type="object | object | object | object">
          <span>
            {"Header parameter. For text headers: type=\"text\", value is the replacement text, parameterName is optional (for named params). For media headers: type=\"image\"|\"video\"|\"document\", url is the media URL. Documents may include a filename."}
          </span>
        </ResponseField>

        <ResponseField name="templateBodyParams" type="object | object">
          <span>
            {"Body parameters. For positional params ({{1}}, {{2}}, ...): type=\"positional\", values is an ordered array of strings. For named params ({{buyer_name}}): type=\"named\", values is a record mapping param names to values."}
          </span>
        </ResponseField>

        <ResponseField name="templateButtonParams" type="array">
          <span>
            {"Button parameters as an ordered array. url: value is the URL suffix. quick_reply: payload is the callback data. copy_code: code is the coupon code. skip: no parameter needed (for phone number buttons, etc.)."}
          </span>

          <Tabs>
            <Tab title="url">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="value" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="quick_reply">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="payload" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="copy_code">
              <Expandable>
                <ResponseField name="type" type="string" required />

                <ResponseField name="code" type="string" required />
              </Expandable>
            </Tab>

            <Tab title="skip">
              <Expandable>
                <ResponseField name="type" type="string" required />
              </Expandable>
            </Tab>
          </Tabs>
        </ResponseField>

        <ResponseField name="botPhoneNumberId" type="string">
          <span>
            {"Phone number ID to use as sender (uses the default phone number ID if not provided)"}
          </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>

    <ResponseField name="messageId" type="string">
      <span>
        {"ID of the message created"}
      </span>
    </ResponseField>
  </Expandable>
</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>

### Message Delivered

<span>
  {"Triggered when a message is delivered to a user"}
</span>

<ResponseField name="payload" type="object">
  This Trigger has no payload.
</ResponseField>

### Message Failed

<span>
  {"Triggered when a message fails to be delivered"}
</span>

<ResponseField name="payload" type="object">
  <Expandable>
    <ResponseField name="error" type="string" required>
      <span>
        {"Error details describing why the message failed"}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Message Read

<span>
  {"Triggered when a user reads a message"}
</span>

<ResponseField name="payload" type="object">
  This Trigger has no payload.
</ResponseField>

### Message Sent

<span>
  {"Triggered when a message is sent"}
</span>

<ResponseField name="payload" type="object">
  This Trigger has no payload.
</ResponseField>

### Message Template Components Update

<span>
  {"Triggered when a template is edited"}
</span>

<ResponseField name="payload" type="object">
  <span>
    {"The message_template_components_update webhook notifies you of changes to a template's components."}
  </span>

  <Expandable>
    <ResponseField name="id" type="number" required>
      <span>
        {"Template ID."}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Template name."}
      </span>
    </ResponseField>

    <ResponseField name="language" type="string" required>
      <span>
        {"Template language and locale code."}
      </span>
    </ResponseField>

    <ResponseField name="element" type="string" required>
      <span>
        {"Template body text."}
      </span>
    </ResponseField>

    <ResponseField name="title" type="string">
      <span>
        {"Template Header Text."}
      </span>
    </ResponseField>

    <ResponseField name="footer" type="string">
      <span>
        {"Template Footer Text."}
      </span>
    </ResponseField>

    <ResponseField name="buttons" type="array">
      <span>
        {"Array of button objects, if present."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="button_type" type="enum<string>" required>
          <span>
            {"Button type."}
          </span>

          Available options: `CATALOG`, `COPY_CODE`, `EXTENSION`, `FLOW`, `MPM`, `ORDER_DETAILS`, `OTP`, `PHONE_NUMBER`, `POSTBACK`, `REMINDER`, `SEND_LOCATION`, `SPM`, `QUICK_REPLY`, `URL`, `VOICE_CALL`
        </ResponseField>

        <ResponseField name="button_text" type="string" required>
          <span>
            {"Button label text."}
          </span>
        </ResponseField>

        <ResponseField name="button_url" type="string">
          <span>
            {"Button URL."}
          </span>
        </ResponseField>

        <ResponseField name="button_phone_number" type="string">
          <span>
            {"Button phone number."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Message Template Quality Update

<span>
  {"Triggered when a template's quality score changes"}
</span>

<ResponseField name="payload" type="object">
  <span>
    {"The message_template_quality_update webhook notifies you of changes to a template's quality score."}
  </span>

  <Expandable>
    <ResponseField name="previous_quality_score" type="enum<string>" required>
      <span>
        {"Previous template quality score."}
      </span>

      Available options: `GREEN`, `RED`, `YELLOW`, `UNKNOWN`
    </ResponseField>

    <ResponseField name="new_quality_score" type="enum<string>" required>
      <span>
        {"New template quality score."}
      </span>

      Available options: `GREEN`, `RED`, `YELLOW`, `UNKNOWN`
    </ResponseField>

    <ResponseField name="id" type="number" required>
      <span>
        {"Template ID."}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Template name."}
      </span>
    </ResponseField>

    <ResponseField name="language" type="string" required>
      <span>
        {"Template language and locale code."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Message Template Status Update

<span>
  {"Triggered when a template is approved, rejected or disabled"}
</span>

<ResponseField name="payload" type="object">
  <span>
    {"The message_template_status_update webhook notifies you of changes to the status of an existing template."}
  </span>

  <Expandable>
    <ResponseField name="event" type="enum<string>" required>
      <span>
        {"Template status event."}
      </span>

      Available options: `APPROVED`, `ARCHIVED`, `DELETED`, `DISABLED`, `FLAGGED`, `IN_APPEAL`, `LIMIT_EXCEEDED`, `LOCKED`, `PAUSED`, `PENDING`, `REINSTATED`, `PENDING_DELETION`, `REJECTED`
    </ResponseField>

    <ResponseField name="id" type="number" required>
      <span>
        {"Template ID."}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Template name."}
      </span>
    </ResponseField>

    <ResponseField name="language" type="string" required>
      <span>
        {"Language and locale code."}
      </span>
    </ResponseField>

    <ResponseField name="reason" type="string | null" required />

    <ResponseField name="disable_info" type="object">
      <span>
        {"only included if template disabled"}
      </span>

      <Expandable>
        <ResponseField name="disable_date" type="number" required>
          <span>
            {"Unix timestamp indicating when the template was disabled."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="other_info" type="object">
      <span>
        {"only included if template locked or unlocked"}
      </span>

      <Expandable>
        <ResponseField name="title" type="enum<string>" required>
          <span>
            {"Title of template pause or unpause event."}
          </span>

          Available options: `FIRST_PAUSE`, `SECOND_PAUSE`, `RATE_LIMITING_PAUSE`, `UNPAUSE`, `DISABLED`
        </ResponseField>

        <ResponseField name="description" type="string" required>
          <span>
            {"String describing why the template was locked or unlocked."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Message Echo Received

<span>
  {"Triggered when an outbound message sent through another channel (e.g. a human agent) is echoed back via the webhook"}
</span>

<ResponseField name="payload" type="object">
  This Trigger has no payload.
</ResponseField>

### Reaction Added

<span>
  {"Triggered when a user adds a reaction 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="messageId" type="string" required>
      <span>
        {"ID of the message that was reacted to"}
      </span>
    </ResponseField>

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

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

### Reaction Removed

<span>
  {"Triggered when a user removes a reaction 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="messageId" type="string" required>
      <span>
        {"ID of the message that was reacted to"}
      </span>
    </ResponseField>

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

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

### Template Category Update

<span>
  {"Triggered when the category of a WhatsApp template is changed — whether manually or by an automated process, or when such a change is about to occur."}
</span>

<ResponseField name="payload" type="object">
  <span>
    {"The template_category_update webhook notifies you of changes to template's category."}
  </span>

  <Expandable>
    <ResponseField name="id" type="number" required>
      <span>
        {"Template ID."}
      </span>
    </ResponseField>

    <ResponseField name="name" type="string" required>
      <span>
        {"Template name."}
      </span>
    </ResponseField>

    <ResponseField name="language" type="string" required>
      <span>
        {"Template language and locale code."}
      </span>
    </ResponseField>

    <ResponseField name="correct_category" type="string">
      <span>
        {"The category that the template will be recategorized as in 24 hours."}
      </span>
    </ResponseField>

    <ResponseField name="previous_category" type="string">
      <span>
        {"The template's previous category."}
      </span>
    </ResponseField>

    <ResponseField name="new_category" type="string">
      <span>
        {"The template's new category."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Not receiving messages from bot on WhatsApp">
    Until Meta has verified your business, your bot won't be able to send messages to WhatsApp users, even if you've configured it correctly.

    If you need to test out your bot right away, you can use the [WhatsApp Playground](#playground) while waiting for business verification.
  </Accordion>

  <Accordion title="Meta business verification taking too long">
    Unfortunately, we can't help speed up Meta's business verification process.

    If you need to test out your bot right away, you can use the [WhatsApp Playground](#playground) while waiting for business verification.
  </Accordion>

  <Accordion title="Bot receiving WhatsApp messages, but not sending messages back">
    There may be a problem with the payment method in your WhatsApp business account. Check the billing hub and make sure your [payment method](https://business.facebook.com/billing_hub/) is configured correctly.
  </Accordion>
</AccordionGroup>
