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

# Google Calendar

> Add a bot to Google Calendar 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.5",
    "id": "intver_01KRPJKZ1ER9XBZQC5QTXBRGND"
  },
  "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.googlecalendar} />

The official Google Calendar integration allows your bot to access your Google Calendar data and manage events.

## Setup

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

      * A [published bot](/get-started/quick-start)
      * A [Google account](https://www.google.com/url?sa=t\&source=web\&rct=j\&opi=89978449\&url=https://accounts.google.ca/\&ved=2ahUKEwjT06jO35CSAxWy5MkDHcRzEJIQFnoECAwQAQ\&usg=AOvVaw2kpHPlQsXrFmVVEu4DOt-N)
    </Info>

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

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

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

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

  <Tab title="Manual configuration">
    For more advanced use cases, you can manually configure the integration.

    <Info>
      You will need:

      * A [published bot](/get-started/quick-start)
      * A [Google account](https://accounts.google.com/signup)
      * Access to [Google Cloud Console](https://console.developers.google.com/)
    </Info>

    ### Step 1: Create a Google Cloud project

    <Steps>
      <Step>
        Go to the [Google Cloud Console](https://console.developers.google.com/) and sign in with your Google account.
      </Step>

      <Step>
        Go to **Select a project**, then select **New Project**.
      </Step>

      <Step>
        Enter your project details:

        * **Project name**: Choose a descriptive name for your project.
        * **Organization**: Select your organization (if applicable).
        * **Location**: Choose the appropriate location.
      </Step>

      <Step>
        Select **Create** and wait for the project to be created.
      </Step>

      <Step>
        Verify you're in the correct project by checking the project name next to the Google logo.
      </Step>
    </Steps>

    ### Step 2: Enable the Google Calendar API

    <Steps>
      <Step>
        In the Google Cloud Console, open the left sidebar and go to **API & Services > Credentials**.
      </Step>

      <Step>
        Select **+ Create Credentials > API Key** to create an API key. Copy and store it somewhere.
      </Step>

      <Step>
        Go to **Library**, search for "Google Calendar API", and select **Enable**.
      </Step>
    </Steps>

    ### Step 3: Create a service account

    <Steps>
      <Step>
        Open the left sidebar again and go to **API & Services > Credentials**.
      </Step>

      <Step>
        Select **+ Create Credentials > Service Account**.
      </Step>

      <Step>
        Enter a **Service account name**. The Service Account ID will be automatically generated.
      </Step>

      <Step>
        The remaining fields are optional. Select **Done** to create the service account.
      </Step>

      <Step>
        Select your newly created service account, then go to the **Keys** tab.
      </Step>

      <Step>
        Select **Add Key > Create new key**, choose **JSON** as the key type, then select **Create**.

        A JSON file will be downloaded to your machine. Keep this file secure—you'll need it to configure the integration.
      </Step>
    </Steps>

    <Note>
      The downloaded JSON file contains sensitive credentials. Store it securely and never share it publicly. The file structure looks like this:

      ```json theme={null}
      {
        "type": "service_account",
        "project_id": "your-project-id",
        "private_key_id": "...",
        "private_key": "...",
        "client_email": "your-service-account@your-project.iam.gserviceaccount.com",
        "client_id": "...",
        "auth_uri": "...",
        "token_uri": "...",
        "auth_provider_x509_cert_url": "...",
        "client_x509_cert_url": "...",
        "universe_domain": "googleapis.com"
      }
      ```
    </Note>

    ### Step 4: Enable domain-wide delegation (Google Workspace only)

    <Warning>
      Domain-wide delegation is **required** if you want your bot to:

      * Create Google Meet links for events
      * Send invitations to attendees
      * Act on behalf of users in your organization

      Without domain-wide delegation, the service account can only manage its own calendar and cannot invite attendees or create Meet links.

      **This feature is only available for Google Workspace accounts.** Personal `@gmail.com` accounts do not support domain-wide delegation.
    </Warning>

    Follow Google's official guide to [delegate domain-wide authority to your service account](https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority).

    When configuring the OAuth scopes in the Google Admin Console, paste in the following scopes (comma-separated):

    ```
    https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
    ```

    ### Step 5: Configure OAuth consent screen (if not already configured)

    <Steps>
      <Step>
        Open the left sidebar again and go to **API & Services > OAuth consent screen**.
      </Step>

      <Step>
        Select **Get started**.
      </Step>

      <Step>
        Configure the OAuth consent screen. Under **App Information**:

        * **App name**: Enter a name for your application.
        * **User support email**: Select your email address.

        Then, select **Next**.
      </Step>

      <Step>
        Under **Audience**, select **Internal**. Then, select **Next**.
      </Step>

      <Step>
        Under **Contact Information**, enter a contact email address. Then, select **Next**.
      </Step>

      <Step>
        Agree to the Google API policy, then select **Create**.
      </Step>
    </Steps>

    ### Step 6: Create OAuth client

    <Steps>
      <Step>
        Select **Create OAuth client**.
      </Step>

      <Step>
        Select an **Application type** and enter a name. Then select **Create**.
      </Step>
    </Steps>

    ### Step 7: Configure scopes

    <Steps>
      <Step>
        Go to **Data Access** in the left sidebar, then select **Add or remove scopes**.
      </Step>

      <Step>
        Add the following scopes:

        * `https://www.googleapis.com/auth/calendar`
        * `https://www.googleapis.com/auth/calendar.events`
      </Step>

      <Step>
        Select **Update**.
      </Step>
    </Steps>

    ### Step 8: Grant calendar access to the service account

    <Steps>
      <Step>
        Open [Google Calendar](https://calendar.google.com) and select the settings icon in the upper-right corner. Then, select **Settings**.
      </Step>

      <Step>
        In the left sidebar, select the calendar you want to share with your bot.
      </Step>

      <Step>
        Go to **Shared with** > **+ Add people and groups**.
      </Step>

      <Step>
        Enter the `client_email` from your downloaded JSON file (for example, `your-service-account@your-project.iam.gserviceaccount.com`).
      </Step>

      <Step>
        Set the permission to **Make changes to events** so the bot can manage calendar events.
      </Step>
    </Steps>

    ### Step 9: Configure the integration in Botpress

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

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

      <Step>
        In the **Configuration** menu, select the drop-down and choose **Configure manually**.
      </Step>
    </Steps>

    Fill in the integration's configuration fields:

    <AccordionGroup>
      <Accordion title="Calendar ID">
        1. In Google Calendar, go to **Settings** and select your calendar.
        2. Scroll to **Integrate calendar** to find your Calendar ID.
        3. Copy the Calendar ID and paste it into the **Calendar ID** field in Botpress.
      </Accordion>

      <Accordion title="Client Email">
        Open the JSON file you downloaded in [Step 3](#step-3-create-a-service-account) and copy the `client_email` value.
      </Accordion>

      <Accordion title="Private Key">
        Open the JSON file you downloaded in [Step 3](#step-3-create-a-service-account) and copy the entire `private_key` value, including the `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` markers.
      </Accordion>

      <Accordion title="Impersonate Email (Google Workspace only)">
        Enter the email address of a user in your Google Workspace that the service account will impersonate.

        This field is **required** for:

        * Creating Google Meet links
        * Sending attendee invitations

        The email must belong to an actual user in your Google Workspace domain. Without this field configured, Meet creation and attendee invitations will not work.

        <Note>
          This field only applies if you have configured [domain-wide delegation](#step-4-enable-domain-wide-delegation-google-workspace-only). Personal @gmail.com accounts do not support impersonation.
        </Note>
      </Accordion>
    </AccordionGroup>

    When you've filled in all the fields, select **Save Configuration**.

    <Check>
      You've successfully configured the Google Calendar integration!
    </Check>
  </Tab>
</Tabs>

***

## Limitations

Different Google account types have different capabilities when using this integration.

| Feature                             |                                             Google Workspace                                            | Personal (`@gmail.com`) |
| ----------------------------------- | :-----------------------------------------------------------------------------------------------------: | :---------------------: |
| Create, read, update, delete events |                                                   Yes                                                   |           Yes           |
| Create Google Meet links            |                                                   Yes                                                   |            No           |
| Invite attendees                    | Yes ([requires domain-wide delegation](#step-4%3A-enable-domain-wide-delegation-google-workspace-only)) |            No           |

***

## Cards

{/* vale off */}

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

### Check Availability

<span>
  {"Checks calendar availability and returns free time slots for the specified date range."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="timeMin" type="string" required>
      <span>
        {"Start of the time range to check (ISO 8601 format, e.g., \"2025-11-05T09:00:00-04:00\")."}
      </span>
    </ResponseField>

    <ResponseField name="timeMax" type="string" required>
      <span>
        {"End of the time range to check (ISO 8601 format, e.g., \"2025-11-05T17:00:00-04:00\")."}
      </span>
    </ResponseField>

    <ResponseField name="slotDurationMinutes" type="number" default={45}>
      <span>
        {"Duration of each time slot in minutes. Defaults to 45 minutes."}
      </span>
    </ResponseField>

    <ResponseField name="timezone" type="string" default="America/Toronto">
      <span>
        {"Timezone for formatting output (e.g., \"America/Toronto\"). Defaults to America/Toronto."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="freeSlots" type="array" required>
      <span>
        {"Array of available time slots in ISO format."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="start" type="string" required>
          <span>
            {"ISO 8601 formatted start time of the free slot."}
          </span>
        </ResponseField>

        <ResponseField name="end" type="string" required>
          <span>
            {"ISO 8601 formatted end time of the free slot."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="formattedFreeSlots" type="array" required>
      <span>
        {"Array of human-readable formatted free slots (e.g., \"9:00 AM – 9:45 AM\")."}
      </span>
    </ResponseField>

    <ResponseField name="busySlots" type="array" required>
      <span>
        {"Array of busy time slots in ISO format."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="start" type="string" required>
          <span>
            {"ISO 8601 formatted start time of the busy slot."}
          </span>
        </ResponseField>

        <ResponseField name="end" type="string" required>
          <span>
            {"ISO 8601 formatted end time of the busy slot."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Create Event

<span>
  {"Creates a new event in the calendar."}
</span>

<ResponseField name="input" type="object">
  <span>
    {"The definition of the new event."}
  </span>

  <Expandable>
    <ResponseField name="summary" type="string" required>
      <span>
        {"Title of the event."}
      </span>
    </ResponseField>

    <ResponseField name="description" type="string">
      <span>
        {"Description of the event. Can contain HTML. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="location" type="string">
      <span>
        {"Geographic location of the event as free-form text. Optional. (e.g., \"Meeting Room\")."}
      </span>
    </ResponseField>

    <ResponseField name="startDateTime" type="string" required>
      <span>
        {"The start date and time in RFC3339 format (e.g., \"2023-12-31T10:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="endDateTime" type="string" required>
      <span>
        {"The end date and time in RFC3339 format (e.g., \"2023-12-31T12:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="colorId" type="string">
      <span>
        {"The color ID of the event. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanInviteOthers" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can invite others to the event. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanSeeOtherGuests" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="recurrence" type="array">
      <span>
        {"List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events."}
      </span>
    </ResponseField>

    <ResponseField name="status" type="enum<string>" default="confirmed">
      <span>
        {"Status of the event. Optional. The default value is \"confirmed\"."}
      </span>

      Available options: `confirmed`, `tentative`, `cancelled`
    </ResponseField>

    <ResponseField name="visibility" type="enum<string>" default="default">
      <span>
        {"Visibility of the event. Optional. The default value is \"default\"."}
      </span>

      Available options: `default`, `public`, `private`, `confidential`
    </ResponseField>

    <ResponseField name="enableGoogleMeet" type="boolean" default={false}>
      <span>
        {"Whether to enable Google Meet for the event. Optional. The default value is false."}
      </span>
    </ResponseField>

    <ResponseField name="sendNotifications" type="boolean" default={true}>
      <span>
        {"Whether to send notifications to attendees. Optional. The default value is true."}
      </span>
    </ResponseField>

    <ResponseField name="attendees" type="array">
      <span>
        {"List of attendees for the event. Email invitations will be sent automatically."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="email" type="string (email)" required>
          <span>
            {"The email address of the attendee."}
          </span>
        </ResponseField>

        <ResponseField name="displayName" type="string">
          <span>
            {"The name of the attendee. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="optional" type="boolean" default={false}>
          <span>
            {"Whether this is an optional attendee. Optional. The default is False."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <span>
    {"The data of the new event."}
  </span>

  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"Opaque identifier of the event."}
      </span>
    </ResponseField>

    <ResponseField name="summary" type="string" required>
      <span>
        {"Title of the event."}
      </span>
    </ResponseField>

    <ResponseField name="description" type="string">
      <span>
        {"Description of the event. Can contain HTML. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="location" type="string">
      <span>
        {"Geographic location of the event as free-form text. Optional. (e.g., \"Meeting Room\")."}
      </span>
    </ResponseField>

    <ResponseField name="startDateTime" type="string" required>
      <span>
        {"The start date and time in RFC3339 format (e.g., \"2023-12-31T10:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="endDateTime" type="string" required>
      <span>
        {"The end date and time in RFC3339 format (e.g., \"2023-12-31T12:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="colorId" type="string">
      <span>
        {"The color ID of the event. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="eventType" type="enum<string>" required>
      <span>
        {"Specific type of the event. This cannot be modified after the event is created."}
      </span>

      Available options: `default`, `birthday`, `focusTime`, `fromGmail`, `outOfOffice`, `workingLocation`
    </ResponseField>

    <ResponseField name="guestsCanInviteOthers" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can invite others to the event. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanSeeOtherGuests" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="htmlLink" type="string" required>
      <span>
        {"URL of the event page in the Google Calendar Web UI."}
      </span>
    </ResponseField>

    <ResponseField name="recurrence" type="array">
      <span>
        {"List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events."}
      </span>
    </ResponseField>

    <ResponseField name="status" type="enum<string>" default="confirmed">
      <span>
        {"Status of the event. Optional. The default value is \"confirmed\"."}
      </span>

      Available options: `confirmed`, `tentative`, `cancelled`
    </ResponseField>

    <ResponseField name="visibility" type="enum<string>" default="default">
      <span>
        {"Visibility of the event. Optional. The default value is \"default\"."}
      </span>

      Available options: `default`, `public`, `private`, `confidential`
    </ResponseField>

    <ResponseField name="enableGoogleMeet" type="boolean" default={false}>
      <span>
        {"Whether to enable Google Meet for the event. Optional. The default value is false."}
      </span>
    </ResponseField>

    <ResponseField name="sendNotifications" type="boolean" default={true}>
      <span>
        {"Whether to send notifications to attendees. Optional. The default value is true."}
      </span>
    </ResponseField>

    <ResponseField name="attendees" type="array">
      <span>
        {"List of attendees for the event. Email invitations will be sent automatically."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="email" type="string" required>
          <span>
            {"The email address of the attendee."}
          </span>
        </ResponseField>

        <ResponseField name="displayName" type="string">
          <span>
            {"The name of the attendee. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="optional" type="boolean" default={false}>
          <span>
            {"Whether this is an optional attendee. Optional. The default is False."}
          </span>
        </ResponseField>

        <ResponseField name="responseStatus" type="enum<string>">
          <span>
            {"The attendee's response status. Read-only when creating events."}
          </span>

          Available options: `needsAction`, `declined`, `tentative`, `accepted`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="conferenceLink" type="string">
      <span>
        {"The Google Meet link for the event. This is automatically generated when enableGoogleMeet is true."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Delete Event

<span>
  {"Deletes an event from the calendar."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="eventId" type="string" required>
      <span>
        {"The ID of the calendar event to delete."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

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

### List Events

<span>
  {"Retrieves events from the calendar."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="count" type="number" default={100}>
      <span>
        {"The maximum number of events to return. Defaults to 100."}
      </span>
    </ResponseField>

    <ResponseField name="pageToken" type="string">
      <span>
        {"Token specifying which result page to return."}
      </span>
    </ResponseField>

    <ResponseField name="timeMin" type="string">
      <span>
        {"Only return events occurring on or after this date. Must be in RFC3339 format. Defaults to now if not specified."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <Expandable>
    <ResponseField name="events" type="array" required>
      <span>
        {"The list of calendar events."}
      </span>

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

        <ResponseField name="summary" type="string" required>
          <span>
            {"Title of the event."}
          </span>
        </ResponseField>

        <ResponseField name="description" type="string">
          <span>
            {"Description of the event. Can contain HTML. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="location" type="string">
          <span>
            {"Geographic location of the event as free-form text. Optional. (e.g., \"Meeting Room\")."}
          </span>
        </ResponseField>

        <ResponseField name="startDateTime" type="string" required>
          <span>
            {"The start date and time in RFC3339 format (e.g., \"2023-12-31T10:00:00.000Z\")."}
          </span>
        </ResponseField>

        <ResponseField name="endDateTime" type="string" required>
          <span>
            {"The end date and time in RFC3339 format (e.g., \"2023-12-31T12:00:00.000Z\")."}
          </span>
        </ResponseField>

        <ResponseField name="colorId" type="string">
          <span>
            {"The color ID of the event. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="eventType" type="enum<string>" required>
          <span>
            {"Specific type of the event. This cannot be modified after the event is created."}
          </span>

          Available options: `default`, `birthday`, `focusTime`, `fromGmail`, `outOfOffice`, `workingLocation`
        </ResponseField>

        <ResponseField name="guestsCanInviteOthers" type="boolean" default={true}>
          <span>
            {"Whether attendees other than the organizer can invite others to the event. Optional. The default is True."}
          </span>
        </ResponseField>

        <ResponseField name="guestsCanSeeOtherGuests" type="boolean" default={true}>
          <span>
            {"Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True."}
          </span>
        </ResponseField>

        <ResponseField name="htmlLink" type="string" required>
          <span>
            {"URL of the event page in the Google Calendar Web UI."}
          </span>
        </ResponseField>

        <ResponseField name="recurrence" type="array">
          <span>
            {"List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events."}
          </span>
        </ResponseField>

        <ResponseField name="status" type="enum<string>" default="confirmed">
          <span>
            {"Status of the event. Optional. The default value is \"confirmed\"."}
          </span>

          Available options: `confirmed`, `tentative`, `cancelled`
        </ResponseField>

        <ResponseField name="visibility" type="enum<string>" default="default">
          <span>
            {"Visibility of the event. Optional. The default value is \"default\"."}
          </span>

          Available options: `default`, `public`, `private`, `confidential`
        </ResponseField>

        <ResponseField name="enableGoogleMeet" type="boolean" default={false}>
          <span>
            {"Whether to enable Google Meet for the event. Optional. The default value is false."}
          </span>
        </ResponseField>

        <ResponseField name="sendNotifications" type="boolean" default={true}>
          <span>
            {"Whether to send notifications to attendees. Optional. The default value is true."}
          </span>
        </ResponseField>

        <ResponseField name="attendees" type="array">
          <span>
            {"List of attendees for the event. Email invitations will be sent automatically."}
          </span>

          <Expandable title="array item properties">
            <ResponseField name="email" type="string" required>
              <span>
                {"The email address of the attendee."}
              </span>
            </ResponseField>

            <ResponseField name="displayName" type="string">
              <span>
                {"The name of the attendee. Optional."}
              </span>
            </ResponseField>

            <ResponseField name="optional" type="boolean" default={false}>
              <span>
                {"Whether this is an optional attendee. Optional. The default is False."}
              </span>
            </ResponseField>

            <ResponseField name="responseStatus" type="enum<string>">
              <span>
                {"The attendee's response status. Read-only when creating events."}
              </span>

              Available options: `needsAction`, `declined`, `tentative`, `accepted`
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="conferenceLink" type="string">
          <span>
            {"The Google Meet link for the event. This is automatically generated when enableGoogleMeet is true."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nextPageToken" type="string">
      <span>
        {"Token used to access the next page of this result. Omitted if no further results are available."}
      </span>
    </ResponseField>
  </Expandable>
</ResponseField>

### Update Event

<span>
  {"Updates an existing event in the calendar. Omitted properties are left unchanged."}
</span>

<ResponseField name="input" type="object">
  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"The ID of the calendar event to update."}
      </span>
    </ResponseField>

    <ResponseField name="summary" type="string" required>
      <span>
        {"Title of the event."}
      </span>
    </ResponseField>

    <ResponseField name="description" type="string">
      <span>
        {"Description of the event. Can contain HTML. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="location" type="string">
      <span>
        {"Geographic location of the event as free-form text. Optional. (e.g., \"Meeting Room\")."}
      </span>
    </ResponseField>

    <ResponseField name="startDateTime" type="string" required>
      <span>
        {"The start date and time in RFC3339 format (e.g., \"2023-12-31T10:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="endDateTime" type="string" required>
      <span>
        {"The end date and time in RFC3339 format (e.g., \"2023-12-31T12:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="colorId" type="string">
      <span>
        {"The color ID of the event. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanInviteOthers" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can invite others to the event. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanSeeOtherGuests" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="recurrence" type="array">
      <span>
        {"List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events."}
      </span>
    </ResponseField>

    <ResponseField name="status" type="enum<string>" default="confirmed">
      <span>
        {"Status of the event. Optional. The default value is \"confirmed\"."}
      </span>

      Available options: `confirmed`, `tentative`, `cancelled`
    </ResponseField>

    <ResponseField name="visibility" type="enum<string>" default="default">
      <span>
        {"Visibility of the event. Optional. The default value is \"default\"."}
      </span>

      Available options: `default`, `public`, `private`, `confidential`
    </ResponseField>

    <ResponseField name="enableGoogleMeet" type="boolean" default={false}>
      <span>
        {"Whether to enable Google Meet for the event. Optional. The default value is false."}
      </span>
    </ResponseField>

    <ResponseField name="sendNotifications" type="boolean" default={true}>
      <span>
        {"Whether to send notifications to attendees. Optional. The default value is true."}
      </span>
    </ResponseField>

    <ResponseField name="attendees" type="array">
      <span>
        {"List of attendees for the event."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="email" type="string (email)" required>
          <span>
            {"The email address of the attendee."}
          </span>
        </ResponseField>

        <ResponseField name="displayName" type="string">
          <span>
            {"The name of the attendee. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="optional" type="boolean" default={false}>
          <span>
            {"Whether this is an optional attendee. Optional. The default is False."}
          </span>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="output" type="object">
  <span>
    {"The data of the event."}
  </span>

  <Expandable>
    <ResponseField name="id" type="string" required>
      <span>
        {"Opaque identifier of the event."}
      </span>
    </ResponseField>

    <ResponseField name="summary" type="string" required>
      <span>
        {"Title of the event."}
      </span>
    </ResponseField>

    <ResponseField name="description" type="string">
      <span>
        {"Description of the event. Can contain HTML. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="location" type="string">
      <span>
        {"Geographic location of the event as free-form text. Optional. (e.g., \"Meeting Room\")."}
      </span>
    </ResponseField>

    <ResponseField name="startDateTime" type="string" required>
      <span>
        {"The start date and time in RFC3339 format (e.g., \"2023-12-31T10:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="endDateTime" type="string" required>
      <span>
        {"The end date and time in RFC3339 format (e.g., \"2023-12-31T12:00:00.000Z\")."}
      </span>
    </ResponseField>

    <ResponseField name="colorId" type="string">
      <span>
        {"The color ID of the event. Optional."}
      </span>
    </ResponseField>

    <ResponseField name="eventType" type="enum<string>" required>
      <span>
        {"Specific type of the event. This cannot be modified after the event is created."}
      </span>

      Available options: `default`, `birthday`, `focusTime`, `fromGmail`, `outOfOffice`, `workingLocation`
    </ResponseField>

    <ResponseField name="guestsCanInviteOthers" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can invite others to the event. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="guestsCanSeeOtherGuests" type="boolean" default={true}>
      <span>
        {"Whether attendees other than the organizer can see who the event's attendees are. Optional. The default is True."}
      </span>
    </ResponseField>

    <ResponseField name="htmlLink" type="string" required>
      <span>
        {"URL of the event page in the Google Calendar Web UI."}
      </span>
    </ResponseField>

    <ResponseField name="recurrence" type="array">
      <span>
        {"List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. This field is omitted for single events or instances of recurring events."}
      </span>
    </ResponseField>

    <ResponseField name="status" type="enum<string>" default="confirmed">
      <span>
        {"Status of the event. Optional. The default value is \"confirmed\"."}
      </span>

      Available options: `confirmed`, `tentative`, `cancelled`
    </ResponseField>

    <ResponseField name="visibility" type="enum<string>" default="default">
      <span>
        {"Visibility of the event. Optional. The default value is \"default\"."}
      </span>

      Available options: `default`, `public`, `private`, `confidential`
    </ResponseField>

    <ResponseField name="enableGoogleMeet" type="boolean" default={false}>
      <span>
        {"Whether to enable Google Meet for the event. Optional. The default value is false."}
      </span>
    </ResponseField>

    <ResponseField name="sendNotifications" type="boolean" default={true}>
      <span>
        {"Whether to send notifications to attendees. Optional. The default value is true."}
      </span>
    </ResponseField>

    <ResponseField name="attendees" type="array">
      <span>
        {"List of attendees for the event. Email invitations will be sent automatically."}
      </span>

      <Expandable title="array item properties">
        <ResponseField name="email" type="string" required>
          <span>
            {"The email address of the attendee."}
          </span>
        </ResponseField>

        <ResponseField name="displayName" type="string">
          <span>
            {"The name of the attendee. Optional."}
          </span>
        </ResponseField>

        <ResponseField name="optional" type="boolean" default={false}>
          <span>
            {"Whether this is an optional attendee. Optional. The default is False."}
          </span>
        </ResponseField>

        <ResponseField name="responseStatus" type="enum<string>">
          <span>
            {"The attendee's response status. Read-only when creating events."}
          </span>

          Available options: `needsAction`, `declined`, `tentative`, `accepted`
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="conferenceLink" type="string">
      <span>
        {"The Google Meet link for the event. This is automatically generated when enableGoogleMeet is true."}
      </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>

### Event Created

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

### Event Deleted

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

### Event Updated

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