Error: {error.title || 'An error occurred'}
)}${error.details}
`; errorDiv.style.display = 'block'; }; window.addEventListener('onEntriClose', (event) => { if (event.detail.error) { showError(event.detail.error); } }); ``` ### Check Domain Before Opening Use `checkDomain` to verify provider support before showing the modal: ```javascript theme={"system"} const openWithDomainCheck = async (domain) => { const config = { applicationId: 'YOUR_APPLICATION_ID', token: 'YOUR_JWT_TOKEN', dnsRecords: [ { type: 'CNAME', host: 'www', value: 'your-service.com', ttl: 300 } ], }; // Check if automatic setup is supported const check = await window.entri.checkDomain(domain, config); if (check.setupType === 'Automatic') { console.log('Automatic setup available with', check.provider); } else { console.log('Manual setup required'); } // Open Entri with prefilled domain config.prefilledDomain = domain; window.entri.showUnify(config); }; ``` ### Multiple DNS Records Configure multiple records for complex setups: ```javascript theme={"system"} window.entri.showUnify({ applicationId: 'YOUR_APPLICATION_ID', token: 'YOUR_JWT_TOKEN', dnsRecords: [ { type: 'CNAME', host: 'www', value: 'your-service.com', ttl: 300, }, { type: 'TXT', host: '@', value: 'v=spf1 include:your-service.com ~all', ttl: 300, }, { type: 'MX', host: '@', value: 'mail.your-service.com', ttl: 300, priority: 10, }, ], }); ``` ## Troubleshooting ### Event listeners not firing Make sure you're adding listeners **before** calling `showUnify()`: ```javascript theme={"system"} // Wrong - listener added after showUnify window.entri.showUnify(config); window.addEventListener('onEntriClose', handler); // Too late! // Correct - listener added before showUnify window.addEventListener('onEntriClose', handler); window.entri.showUnify(config); ``` ### SDK not loaded Check that the script has loaded before using it: ```javascript theme={"system"} if (typeof window.entri === 'undefined') { console.error('Entri SDK not loaded'); return; } window.entri.showUnify(config); ``` Or wait for the script to load: ```javascript theme={"system"} window.addEventListener('load', () => { // Safe to use window.entri here document.getElementById('connect-btn').addEventListener('click', () => { window.entri.showUnify(config); }); }); ``` ### Multiple event handlers firing If you're dynamically adding/removing elements, make sure to clean up event listeners: ```javascript theme={"system"} const handler = (event) => { console.log('Entri closed:', event.detail); }; // Add listener window.addEventListener('onEntriClose', handler); // Remove listener when no longer needed window.removeEventListener('onEntriClose', handler); ``` ## Next Steps * [Unify Configuration](/unify/configuration) - Full configuration options * [Webhooks](/webhooks-overview) - Server-side event handling * [Getting Started](/getting-started) - Dashboard setup and token generation # Blog Source: https://developers.entri.com/links/blog # Demo Source: https://developers.entri.com/links/demo # Monitor Configuration Source: https://developers.entri.com/monitor/configuration monitor: true config keys for the standalone connectDomain() and purchaseDomain() flows; showUnify() enrolls domains automatically.