Skip to main content

Doxy.me Embeddable SDK

Complete Guide for Healthcare Companies

Updated today

What is the Doxy.me Embeddable SDK?

The Doxy.me Embeddable SDK is a lightweight JavaScript package that enables healthcare companies to seamlessly integrate doxy.me's video consultation platform directly into their existing applications. Instead of redirecting users to doxy.me's website, you can embed video consultations, provider portals, and patient rooms directly within your own branded interface.

Key Benefits

-Zero Infrastructure: No need to build or maintain your own video infrastructure
- HIPAA Compliant: Built on doxy.me's secure, HIPAA-compliant platform
- Seamless Integration: Embed consultations without breaking your user experience
- Brand Consistency: Maintain your brand identity while using doxy.me's technology
- Quick Implementation: Get up and running in minutes, not months

Why Healthcare Companies Use This SDK

  1. Faster Time to Market

    Building a video consultation platform from scratch can take 6-12 months and requires significant engineering resources. The doxy.me SDK allows you to launch telehealth capabilities in days, not months.

    1. Example: A telehealth startup wanted to launch their provider portal with video consultations. Instead of building video infrastructure, they integrated the SDK in 2 days and launched their MVP a week later.

  2. Cost Efficiency
    Developing and maintaining video infrastructure is expensive:
    - Video infrastructure costs: $50K-$500K+ annually
    - Engineering time: 2-4 developers full-time
    - Ongoing maintenance and updates. The SDK eliminates these costs while providing enterprise-grade video capabilities.

  3. Better User Experience
    Your users never leave your platform. They can:
    - View their schedule in your portal
    - Click "Launch Session" and start consultations immediately
    - Complete entire workflows without redirects
    - Maintain a consistent, branded experience

  4. HIPAA Compliance
    Video consultations must be HIPAA-compliant. Doxy.me handles all compliance requirements, including:
    - End-to-end encryption
    - BAA (Business Associate Agreement) available
    - Audit logs and security controls
    - HIPAA-compliant infrastructure

  5. Scalability
    Doxy.me's infrastructure scales automatically:
    - Handle thousands of concurrent sessions
    - No capacity planning needed
    - Global CDN for low latency
    - Automatic quality adaptation

  6. Focus on Core Business
    Instead of building video infrastructure, focus on:
    - Patient care workflows
    - Provider tools and features
    - Business logic and integrations
    - User experience improvements


    Real-World Use Cases

    Provider Portals (Like Zealthy)

    Scenario: A telehealth company needs to give providers a dashboard where they can see their schedule and launch video consultations.

    Solution: Embed doxy.me provider sign-in directly in the portal. When a provider clicks "Launch Session" on an appointment, the video consultation opens inline.

javascript import { embedProviderSignIn } from 'doxy.me';  function launchProviderSession(appointmentId) {   const container = document.getElementById('session-container');      embedProviderSignIn(container, {     width: '100%',     height: '100%',     onLoad: () => {       // Track session start       analytics.track('provider_session_started', { appointmentId });     }   });      // Show session in your portal   document.getElementById('session-container').classList.remove('hidden'); }

Patient Portals (Like Teladoc)

Scenario: Patients need to join video consultations from their appointment dashboard.
Solution: Embed patient rooms directly in the patient portal. When patients click "Join Waiting Room," they're taken directly to their consultation without leaving your platform.

javascript import { embedPatientRoom } from 'doxy.me';  function joinPatientRoom(appointmentId) {   const container = document.getElementById('consultation-container');      embedPatientRoom(container, appointmentId, {     width: '100%',     height: '100%',     onLoad: () => {       updatePatientStatus('in_waiting_room');     }   }); }


White-Label Platforms (Like OpenLoop)
Scenario: A platform provides telehealth infrastructure to multiple healthcare organizations, each needing their own branded experience.
Solution: Use dynamic URL routing to embed different doxy.me configurations per client.

javascript import { embedDoxyMe } from 'doxy.me';  function loadClientPortal(clientId) {   const clientConfig = getClientConfiguration(clientId);   const container = document.getElementById('portal-container');      embedDoxyMe(container, {     url: clientConfig.doxyUrl, // Unique per client     width: '100%',     height: '100%',     className: `client-${clientId}-iframe`,     style: {       ...clientConfig.branding.styles     }   }); }



How to Get Started Step 1: Installation

bash npm install doxy.me

Step 2: Choose Your Integration Type

For Provider Portals

javascript import { embedProviderSignIn } from 'doxy.me';  const container = document.getElementById('provider-portal'); embedProviderSignIn(container, {   width: '100%',   height: '700px' });

For Patient Rooms

javascript import { embedPatientRoom } from 'doxy.me';  const container = document.getElementById('patient-room'); const roomSlug = 'patient-room-123'; embedPatientRoom(container, roomSlug, {   width: '100%',   height: '800px' });

For Custom URLs

javascript import { embedDoxyMe } from 'doxy.me';  const container = document.getElementById('custom-container'); embedDoxyMe(container, {   url: 'https://doxy.me/your-custom-url',   width: '100%',   height: '600px' });


Step 3: Integrate into Your Workflow
The most common pattern is to embed the SDK when users trigger an action (like clicking "Launch Session"):

javascript // In your appointment card component function AppointmentCard({ appointment }) {   const handleLaunchSession = () => {     // Show session container     const sessionContainer = document.getElementById('session-container');     sessionContainer.classList.remove('hidden');          // Embed doxy.me     embedProviderSignIn(sessionContainer, {       width: '100%',       height: '100%',       onLoad: () => {         // Update UI, track analytics, etc.         updateAppointmentStatus(appointment.id, 'active');       }     });   };      return (     <div className="appointment-card">       <h3>{appointment.patientName}</h3>       <p>{appointment.time}</p>       <button onClick={handleLaunchSession}>Launch Session</button>     </div>   ); }

Advanced Features

Custom Styling
Match doxy.me's appearance to your brand:

javascript embedDoxyMe(container, {   url: 'doxy.me/sign-in',   className: 'custom-branded-iframe',   style: {     borderRadius: '12px',     boxShadow: '0 4px 20px rgba(0,0,0,0.1)',     border: '2px solid #your-brand-color'   } });

Event Handling
Track user interactions and handle errors:

javascript embedPatientRoom(container, roomSlug, {   onLoad: () => {     console.log('Patient room loaded');     analytics.track('consultation_started');   },   onError: (error) => {     console.error('Connection error:', error);     showErrorNotification('Unable to connect. Please try again.');   } });

Cleanup
Properly clean up when sessions end:

javascript const { destroy } = embedProviderSignIn(container, options);  // When session ends function endSession() {   destroy(); // Removes iframe   container.innerHTML = '';   // Hide session container, return to schedule, etc. }

Common Integration Patterns
Pattern 1: Provider Dashboard with Schedule

javascript // Show schedule with appointments function renderSchedule() {   appointments.forEach(appointment => {     const card = createAppointmentCard(appointment);     card.querySelector('.launch-btn').addEventListener('click', () => {       launchSession(appointment.id);     });   }); }  function launchSession(appointmentId) {   // Hide schedule, show session   document.getElementById('schedule').classList.add('hidden');   const sessionContainer = document.getElementById('session');   sessionContainer.classList.remove('hidden');      // Embed provider view   embedProviderSignIn(sessionContainer, {     width: '100%',     height: '100%'   }); }

Pattern 2: Patient Waiting Room

javascript // Patient clicks "Join Appointment" function joinAppointment(appointmentId) {   const roomId = getRoomIdForAppointment(appointmentId);      // Show waiting room   document.getElementById('dashboard').classList.add('hidden');   const waitingRoom = document.getElementById('waiting-room');   waitingRoom.classList.remove('hidden');      // Embed patient room   embedPatientRoom(waitingRoom, roomId, {     width: '100%',     height: '100%',     onLoad: () => {       updatePatientStatus('waiting');     }   }); }

Pattern 3: Multi-Tenant White-Label

javascript // Different clients get different configurations const clientConfigs = {   'client-a': { url: 'doxy.me/client-a-portal' },   'client-b': { url: 'doxy.me/client-b-portal' },   'client-c': { url: 'doxy.me/client-c-portal' } };  function loadClientPortal(clientId) {   const config = clientConfigs[clientId];      embedDoxyMe(container, {     url: config.url,     width: '100%',     height: '100%',     className: `client-${clientId}-iframe`   }); }

Security Considerations

HIPAA Compliance
- All video streams are encrypted end-to-end
- BAA available upon request
- Audit logs maintained
- Access controls and authentication

Best Practices
1. Always use HTTPS for your application
2. Validate room IDs before embedding patient rooms
3. Implement proper authentication before allowing access
4. Handle errors gracefully with user-friendly messages
5. Clean up sessions when they end to prevent memory leaks

Troubleshooting

Iframe Not Loading
- Check that the URL is correct
- Ensure your container element exists
- Verify CORS settings if using custom domains
- Check browser console for errors

Session Not Starting
- Validate room IDs/appointment IDs
- Check network connectivity
- Verify user permissions
- Review error callbacks

Performance Issues
- Ensure iframe cleanup when sessions end
- Don't embed multiple instances simultaneously
- Use appropriate dimensions for your use case

Support and Resources-

Documentation: npmjs.com/package/doxy.me
- Demo Website: See live examples of integrations
- Support: Contact doxy.me support for implementation assistance


Conclusion

The Doxy.me Embeddable SDK enables healthcare companies to add video consultation capabilities to their platforms quickly, cost-effectively, and securely. Whether you're a startup launching your first telehealth feature or an established platform looking to enhance your provider or patient experience, the SDK provides a seamless way to integrate doxy.me's proven video infrastructure.

By embedding doxy.me directly into your application, you maintain brand consistency, improve user experience, and focus your engineering resources on what makes your platform unique—all while leveraging enterprise-grade, HIPAA-compliant video technology.

Ready to get started? Install the package and see how easy it is to integrate:

npm install doxy.me
Did this answer your question?