Zoom Phone Smart Embed does not auto-dial, and does not fill phone number into keypad

I’m integrating the Zoom Phone Smart Embed using the iframe approach as documented.

The iframe loads and the Zoom Phone UI appears correctly, but window.onZoomPhoneIframeApiReady is never called.

My parent page is on a different origin from application.zoom.us I suspect this is a cross-origin issue — the iframe cannot call window.parent.onZoomPhoneIframeApiReady() directly due to the browser’s Same Origin Policy.

My setup:

<iframe                                                                                                                                     
    src="https://applications.zoom.us/integration/phone/embeddablephone/home"
    id="zoom-embeddable-phone-iframe"                                                                                                         
    allow="clipboard-read; clipboard-write https://applications.zoom.us"                                                                      
  >
</iframe>                                                                                                                                  
                                                                                                                                              
  window.onZoomPhoneIframeApiReady = () => {                                                                                                  
    console.log('fired'); // never logged                                                                                                     
                                                                                                                                              
    const iframe = document.querySelector('iframe#zoom-embeddable-phone-iframe');                                                             
    if (!iframe?.contentWindow) return;                                                                                                       
                  
    iframe.contentWindow.postMessage({                                                                                                        
      type: 'zp-init-config',
      data: { enableSavingLog: false, enableAutoLog: false }                                                                                  
    }, 'https://applications.zoom.us');                                                                                                       
                                                                                                                                              
    setTimeout(() => {                                                                                                                        
      iframe.contentWindow.postMessage({
        type: 'zp-make-call',                                                                                                                 
        data: { number: phoneNumber, autoDial: false }                                                                                     
      }, 'https://applications.zoom.us');                                                                                                     
    }, 1500);                                                                                                                                 
  };

What I observe:

  • The Zoom iframe loads successfully
  • window.onZoomPhoneIframeApiReady is defined but never called
  • Listening to window.addEventListener('message', ...) I can see an undocumented zp-ready postMessage arriving from the iframe

Questions:

  1. Is onZoomPhoneIframeApiReady intended to work in cross-origin setups, or only when the parent page is on a zoom.us subdomain?
  2. Is zp-ready the intended mechanism for detecting iframe readiness in cross-origin setups? Is it stable and safe to rely on?
  3. Is the documented onZoomPhoneIframeApiReady pattern outdated?

Hi @AnubhavV
Thanks for reaching out to us and thanks for your patience.
The onZoomPhoneIframeApiReady has no cross-domain restrictions, but it must be used in the way that calls SDK.js on the parent page rather than using an iframe, and onZoomPhoneIframeApiReady must be defined before calling SDK.js.