> ## Documentation Index
> Fetch the complete documentation index at: https://botpress-ak-docs-20-document-updating-variables-from-outsid.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": "1.0.1",
    "id": "intver_01K9SVDSQMTXJMY4M8YCV5P5M1"
  },
  "alchemer": {
    "version": "2.0.0",
    "id": "intver_01JFAQQZRS9ZQ7WBWHCF1MKGCM"
  },
  "anthropic": {
    "version": "12.0.1",
    "id": "intver_01K9SVE54HWYN9RMC26G05J3WX"
  },
  "anydesk": {
    "version": "2.0.0",
    "id": "intver_01JFAQR4048H4976FCKT2YHD2X"
  },
  "apollo": {
    "version": "3.0.2",
    "id": "intver_01K6BJFKR5WZV44VNENAN6XBT1"
  },
  "asana": {
    "version": "0.3.10",
    "id": "intver_01KEYXKM7BZ7DDF9QJDQDE8H46"
  },
  "attio": {
    "version": "1.0.0",
    "id": "intver_01K6DMEM4B00RRDYF1KPRK3T1N"
  },
  "avoma": {
    "version": "2.0.0",
    "id": "intver_01JFAQRC955G4CXN8QTFHXAPXZ"
  },
  "bamboohr": {
    "version": "2.0.3",
    "id": "intver_01KESBCSC0N9WGPHNM1W1R08VK"
  },
  "beehiiv": {
    "version": "2.0.0",
    "id": "intver_01JFAQRGRRB95YC5YKWB1BFHZH"
  },
  "bigcommerce": {
    "version": "3.2.0",
    "id": "intver_01K3KNZ6CCCZ8E95G5ZGF5QV2J"
  },
  "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.3",
    "id": "intver_01KCPVZG26185R8HFXCMEWBQZR"
  },
  "bynder": {
    "version": "2.0.0",
    "id": "intver_01JFAQSJT5N0Q2J2K7KGG12QQ5"
  },
  "calcom": {
    "version": "0.4.0",
    "id": "intver_01K3RNX07M9B21NA3PWJQ4D14H"
  },
  "calendly": {
    "version": "0.0.1",
    "id": "intver_01K4QXYC4K6PAHQ7J1AGHH1682"
  },
  "canny": {
    "version": "0.2.0",
    "id": "intver_01K5VH8AR6CKTRDRSVP99WDJN7"
  },
  "capsule-crm": {
    "version": "2.0.0",
    "id": "intver_01JFAQSQ6CJJ6G9FK7PAACKE6X"
  },
  "cerebras": {
    "version": "8.0.1",
    "id": "intver_01K9TCHXCG6K7RFRSJSQ3T2Q2P"
  },
  "charts": {
    "version": "0.2.6",
    "id": "intver_01KEYXM4W8FFZNQR97641ZGYYX"
  },
  "chat": {
    "version": "0.7.4",
    "id": "intver_01KBFTKJ7841MVQTYFRT623SP5"
  },
  "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.1",
    "id": "intver_01JEEWCGZ9QPQCBWVE95CMZ5PS"
  },
  "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.2",
    "id": "intver_01JZAY7V5PMF8HX7FDMM9JZTQX"
  },
  "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.5",
    "id": "intver_01KA00BFXTW8APN0A0T8C023F1"
  },
  "databricks": {
    "version": "0.0.4",
    "id": "intver_01JBMK24H270H1ZTH2E8P34V4J"
  },
  "demandbase": {
    "version": "2.0.0",
    "id": "intver_01JFAQV9ZZ9MHH2ENEQ1ERMY2G"
  },
  "discord": {
    "version": "0.3.2",
    "id": "intver_01J3E7AN39P65XZ0Z00C1ZAHJ9"
  },
  "docusign": {
    "version": "2.0.0",
    "id": "intver_01JFAQVKFW4F7BBRSDD7EEZE6Z"
  },
  "dropbox": {
    "version": "1.2.0",
    "id": "intver_01JV5ED268ZJ8WQGVCKJZT2QPW"
  },
  "email": {
    "version": "0.1.0",
    "id": "intver_01K22SS8XNF58PQS42G1GGTK58"
  },
  "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.0",
    "id": "intver_01K5CVJXDNHM9K8NY3G2HWK5ZP"
  },
  "fireworks-ai": {
    "version": "10.0.1",
    "id": "intver_01KA00C056YZ050NMGZ91RMK95"
  },
  "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.3",
    "id": "intver_01KBFTM9H8CW7B7AV6W7K02CZW"
  },
  "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.1.6",
    "id": "intver_01KB60MMABAE5CB0MWN2DY6RKK"
  },
  "gladly": {
    "version": "2.0.0",
    "id": "intver_01JFAQX7B29WE85VA8N5BCST16"
  },
  "gmail": {
    "version": "1.0.4",
    "id": "intver_01KF3MA6855SMVM708B30XRM4S"
  },
  "google-ai": {
    "version": "6.0.4",
    "id": "intver_01KA00CCZVWJQDB5SJ2MSJ4YEW"
  },
  "googlecalendar": {
    "version": "2.0.6",
    "id": "intver_01KCPW0RPJR7X6ATK55RP460VZ"
  },
  "googledrive": {
    "version": "0.3.4",
    "id": "intver_01K6Y3PR2TP9BQEX5PHBGEQD2H"
  },
  "groq": {
    "version": "15.0.1",
    "id": "intver_01KA00CS53WFYF70K16AEZFZXW"
  },
  "gsheets": {
    "version": "2.1.0",
    "id": "intver_01KF14JG57MFAZCXX1CS2T07FQ"
  },
  "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": "5.2.0",
    "id": "intver_01KA00D4PND97KRHJ2X9BDY2P7"
  },
  "hunter": {
    "version": "1.0.0",
    "id": "intver_01KA00DFT6W3K8DBR02GMAM99R"
  },
  "instagram": {
    "version": "4.1.6",
    "id": "intver_01KCVJSGRJYRNDX1QTE5TA2J0E"
  },
  "instantly": {
    "version": "2.0.0",
    "id": "intver_01JFAQXWNN3ZM0DAQBE7N2BP54"
  },
  "intercom": {
    "version": "2.0.2",
    "id": "intver_01KD3DHMS7HN4N4DAF7SBVWP5T"
  },
  "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"
  },
  "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.3",
    "id": "intver_01KBFTPABTXFTSGFPXVNSXWM31"
  },
  "linear": {
    "version": "1.2.0",
    "id": "intver_01KCSCJSD7TCP3P6QGX8QHADAP"
  },
  "localiq": {
    "version": "2.0.0",
    "id": "intver_01JFAQZDKZQV3J44CJF074YHXZ"
  },
  "loops": {
    "version": "0.1.2",
    "id": "intver_01K5C65MMSR9EF9ZCNTMVQA786"
  },
  "mailchimp": {
    "version": "0.3.8",
    "id": "intver_01KD3S9EJY0DZ4M0KEZP72BA5S"
  },
  "mailerlite": {
    "version": "3.0.2",
    "id": "intver_01K6BFZTMA8A1Z3KV1QXGWB61S"
  },
  "make": {
    "version": "0.3.6",
    "id": "intver_01KEYXNCV8ZWT6SKSZSJG8B8WG"
  },
  "messenger": {
    "version": "5.1.3",
    "id": "intver_01KESY33QD20ZF8B3PR2WTR971"
  },
  "mindtickle": {
    "version": "2.0.0",
    "id": "intver_01JFAQZNRAZMBAEZ943WY44EXD"
  },
  "mintlify": {
    "version": "1.0.0",
    "id": "intver_01K8TR6NDN8GCZ8TG133Z307YK"
  },
  "mistral-ai": {
    "version": "0.1.0",
    "id": "intver_01KEW1PHNVBBVS57TM74JKCBDH"
  },
  "monday": {
    "version": "1.0.0",
    "id": "intver_01JVYTJE7Q36MG5V3KCR8HVS01"
  },
  "mural": {
    "version": "2.0.0",
    "id": "intver_01JFAQZT1R0PR8C59Z1MHWMG83"
  },
  "notion": {
    "version": "3.0.0",
    "id": "intver_01KF15SA6NPZ1S1470WECYT5D0"
  },
  "nutshell": {
    "version": "2.0.0",
    "id": "intver_01JFAQZYAY7HCM2VTWTZK0GHZ6"
  },
  "okta": {
    "version": "2.0.0",
    "id": "intver_01JFAR02JMED7RK95YXCDRVNXX"
  },
  "openai": {
    "version": "18.0.0",
    "id": "intver_01KCHBZMZEM2017N9C0ND1STA5"
  },
  "outreach": {
    "version": "2.0.0",
    "id": "intver_01JFAR0717CX7YJNEX0FXRR8TN"
  },
  "pandadoc": {
    "version": "2.0.0",
    "id": "intver_01JFAR0BBGR1EGMRR2PRGHRABB"
  },
  "pdf-generator": {
    "version": "0.0.5",
    "id": "intver_01KEYXNX9CQDD2QZ8G41CX4XCA"
  },
  "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.3",
    "id": "intver_01K9DGKG0F7T1CZ5XMA07DB84N"
  },
  "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"
  },
  "quickbooks": {
    "version": "2.0.0",
    "id": "intver_01JFAR1E05TRXX8ZHQ52QMG2KJ"
  },
  "reachdesk": {
    "version": "2.0.0",
    "id": "intver_01JFAR1JD70W5VTGDEDGFQXKEB"
  },
  "resend": {
    "version": "0.1.7",
    "id": "intver_01KD3DJC2CRQMY4CTR7B81697K"
  },
  "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"
  },
  "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.8",
    "id": "intver_01KD3DJKTCXG0JMKM0SZ1RWHHQ"
  },
  "showpad": {
    "version": "2.0.0",
    "id": "intver_01JFAR2MD45546TPY7V2CPBAMD"
  },
  "sisense": {
    "version": "2.0.0",
    "id": "intver_01JFAR2RSBXRYQ5YX9JNTP4A9C"
  },
  "slack": {
    "version": "3.1.3",
    "id": "intver_01KD3DJWPSBF4ACKZ9GNWXQG01"
  },
  "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.4",
    "id": "intver_01KEYXP9M7BG0WC3ER5XVYQ1VB"
  },
  "sunco": {
    "version": "1.5.0",
    "id": "intver_01KEF51HC7QZHCETEMXGFH7BBR"
  },
  "surveymonkey": {
    "version": "2.0.0",
    "id": "intver_01JFAR3A2K8BEMP4XHQ7F5R47R"
  },
  "tableau": {
    "version": "2.0.0",
    "id": "intver_01JFAR3E9K4XXVYFE7SSGT1C9E"
  },
  "teamleader": {
    "version": "2.0.0",
    "id": "intver_01JFAR3JKE5HAGV6TBCW7SV4QM"
  },
  "teams": {
    "version": "2.0.1",
    "id": "intver_01KBNJVJYD8KGWR6A02KP96G2D"
  },
  "teamviewer": {
    "version": "2.0.0",
    "id": "intver_01JFAR3PY3EBMYYBKQTZAHESXP"
  },
  "telegram": {
    "version": "1.0.2",
    "id": "intver_01KAXVQFVSXRQGZR0ZJG883V4X"
  },
  "thryv": {
    "version": "2.0.0",
    "id": "intver_01JFAR3VQXXNJTR85472MM0RDY"
  },
  "todoist": {
    "version": "1.0.2",
    "id": "intver_01K899ZQCGQ0W948PKD1D2BQNM"
  },
  "trello": {
    "version": "1.2.0",
    "id": "intver_01KEF51YE9E2WY0PWVJQ8K2QX6"
  },
  "twilio": {
    "version": "1.0.4",
    "id": "intver_01KBFTS3NF4YR5SGN4CSW3AX1F"
  },
  "vcita": {
    "version": "2.0.0",
    "id": "intver_01JFAR3ZXVBWKYYJ53W7C4E4VB"
  },
  "vercel": {
    "version": "2.0.0",
    "id": "intver_01JFAR44YN7JA1Z86S8CACVG5C"
  },
  "viber": {
    "version": "1.0.3",
    "id": "intver_01KBFTSB6JXYZBM3TA3T5R8MZQ"
  },
  "vonage": {
    "version": "1.0.2",
    "id": "intver_01KBFTSKW1GRVHFAHHG2EPBWD5"
  },
  "webchat": {
    "version": "0.3.0",
    "id": "intver_01JBVV0VQW8XN3Z5V9K8DB1M3B"
  },
  "webflow": {
    "version": "3.1.1",
    "id": "intver_01K89A06XPFFX0E3EEG6E77GBG"
  },
  "webhook": {
    "version": "1.1.2",
    "id": "intver_01KAXVRCX3CAGAS63Z4FBBZRYS"
  },
  "whatsapp": {
    "version": "4.5.20",
    "id": "intver_01KCPW32DHHQS3BPJN0HA5MPB2"
  },
  "workable": {
    "version": "0.1.1",
    "id": "intver_01K97QZ0EXNRMJHM8HW5GBGWKW"
  },
  "workday": {
    "version": "2.0.0",
    "id": "intver_01JFARBCCKWG9BS7DT2RBW9D7B"
  },
  "wrike": {
    "version": "2.0.0",
    "id": "intver_01JFAR4H5WXG78YBE7MEG967MW"
  },
  "zapier": {
    "version": "0.3.6",
    "id": "intver_01KAXVRQQG68J08SWT7JRW90FM"
  },
  "zendesk": {
    "version": "3.0.4",
    "id": "intver_01KF15TFJKHTV1HJ5B9Y6H5D9K"
  },
  "zendesk-sell": {
    "version": "2.0.0",
    "id": "intver_01JFAR4NP3JGG1BPV4MFJ2HBC3"
  },
  "zoho": {
    "version": "3.1.2",
    "id": "intver_01KA92S3WKT4FYD0QW54M0QWSH"
  }
};

{/* 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>
