{"id":1838,"date":"2026-01-20T12:25:52","date_gmt":"2026-01-20T12:25:52","guid":{"rendered":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/?p=1838"},"modified":"2026-02-09T09:11:41","modified_gmt":"2026-02-09T09:11:41","slug":"how-zoom-integration-works","status":"publish","type":"post","link":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/kivicare-telemed-addon\/documentation\/core-concepts-telemed-addon\/how-zoom-integration-works\/","title":{"rendered":"How Zoom Integration Works"},"content":{"rendered":"<div class=\"nolwrap\">\n<p>Understanding the lifecycle of a virtual consultation is key to managing your clinic efficiently. This section explains the automation behind the scenes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc5 1. The Scheduling Trigger<\/h2>\n\n\n\n<p>When an appointment is saved in KiviCare, the plugin checks two things:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Is the <strong>Service<\/strong> telemed-enabled?<\/li>\n\n\n\n<li>Does the <strong>Doctor<\/strong> have an active Zoom connection?<\/li>\n<\/ol>\n\n\n\n<p>If both are true, the <code>KCTZoom-&gt;create_meeting()<\/code> method is called.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2601\ufe0f 2. API Provisioning<\/h2>\n\n\n\n<p>The plugin makes a <code>POST<\/code> request to Zoom\u2019s <code>\/users\/me\/meetings<\/code> endpoint. It sends:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Topic:<\/strong> Appointment title.<\/li>\n\n\n\n<li><strong>Start Time:<\/strong> Formatted in ISO 8601 (UTC).<\/li>\n\n\n\n<li><strong>Duration:<\/strong> Appointment length.<\/li>\n\n\n\n<li><strong>Settings:<\/strong> Host\/Participant video preferences, waiting room status, etc.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcbe 3. Secure Mapping<\/h2>\n\n\n\n<p>Zoom sends back a payload containing the <code>start_url<\/code> (for the doctor) and the <code>join_url<\/code> (for the patient).<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>These are saved in the <code>wp_kc_appointment_zoom_mappings<\/code> table.<\/li>\n\n\n\n<li>The <code>join_url<\/code> is automatically included in KiviCare email\/SMS templates via the <code>{telemed_join_url}<\/code> tag.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 4. Launching the Consultation<\/h2>\n\n\n\n<p>In the Dashboard, the generic &#8220;Appointment Details&#8221; view is replaced with a dynamic Telemed UI:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Doctor:<\/strong> Sees a &#8220;Start Session&#8221; button (launches the <code>start_url<\/code>).<\/li>\n\n\n\n<li><strong>Patient:<\/strong> Sees a &#8220;Join Room&#8221; button (launches the <code>join_url<\/code>).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udfc1 5. <strong>Completion &amp; Reporting<\/strong><\/h2>\n\n\n\n<p>When the meeting ends, the doctor returns to the KiviCare Dashboard to mark the appointment as &#8220;Completed&#8221; This ensures accurate billing, updates the patient history, and triggers any post-consultation reports.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Understanding the lifecycle of a virtual consultation is key to managing your clinic efficiently. This section explains the automation behind the scenes. \ud83d\udcc5 1. The Scheduling Trigger When an appointment is saved in KiviCare, the plugin checks two things: If both are true, the KCTZoom-&gt;create_meeting() method is called. \u2601\ufe0f 2. API Provisioning The plugin makes [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":0,"parent":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"class_list":["post-1838","post","type-post","status-publish","format-standard","hentry","category-core-concepts-telemed-addon"],"featured_image_src":null,"author_info":{"display_name":"wordpressadminiq","author_link":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/author\/wordpressadminiq\/"},"_links":{"self":[{"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/posts\/1838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/comments?post=1838"}],"version-history":[{"count":5,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/posts\/1838\/revisions"}],"predecessor-version":[{"id":2971,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/posts\/1838\/revisions\/2971"}],"wp:attachment":[{"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/media?parent=1838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/categories?post=1838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/documentation.iqonic.design\/kivicare-wordpress\/wp-json\/wp\/v2\/tags?post=1838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}