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
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.
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.
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.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
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
Scalability
Doxy.me's infrastructure scales automatically:
- Handle thousands of concurrent sessions
- No capacity planning needed
- Global CDN for low latency
- Automatic quality adaptation
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
