$variable({u0022typeu0022:u0022contentu0022,u0022valueu0022:{u0022nameu0022:u0022post_titleu0022,u0022settingsu0022:{u0022beforeu0022:u0022u003ch1u003eu0022,u0022afteru0022:u0022u003cu005c/h1u003eu0022}}})$

u003cpu003eu003cspanu003eAre you wondering how to go about upgrading from Divi 4 to Divi 5? Are you thinking you are just going to u0022Go for itu0022 and see what happens? Well, this tool tries to help you assess how you might proceed with the Divi 5 migration.u003c/spanu003eu003c/pu003e

Use the Tool

u003c!u002du002d Required Libraries u002du002du003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.jsu0022u003eu003c/scriptu003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.jsu0022u003eu003c/scriptu003enu003cscript src=u0022https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.jsu0022u003eu003c/scriptu003enu003cstyleu003en :root {n u002du002dsitez-teal: #1A535C;n u002du002dsitez-red: #FF0000;n u002du002dsitez-blue: #2196F3;n u002du002dsitez-sage: #CCDAD1;n u002du002dsitez-gray: #6F6866;n }nn * {n margin: 0;n padding: 0;n box-sizing: border-box;n }nn body {n font-family: 'Outfit', sans-serif;n line-height: 1.6;n color: var(u002du002dsitez-gray);n background: #f5f5f5;n }nn .container {n max-width: 100%;n width: 100%;n margin: 0;n padding: 1rem;n }nn .header {n text-align: center;n margin-bottom: 3rem;n padding: 2rem;n background: white;n border-radius: 12px;n box-shadow: 0 2px 10px rgba(0,0,0,0.1);n }nn .logo {n font-size: 2rem;n font-weight: 700;n margin-bottom: 0.5rem;n }nn .logo-site {n color: var(u002du002dsitez-teal);n }nn .logo-z {n color: var(u002du002dsitez-red);n }nn .tagline {n color: var(u002du002dsitez-gray);n font-size: 0.9rem;n font-style: italic;n }nn h1 {n color: var(u002du002dsitez-teal);n font-size: 2rem;n font-weight: 600;n margin: 1rem 0;n }nn h2 {n color: var(u002du002dsitez-teal);n font-size: 1.5rem;n font-weight: 600;n margin: 2rem 0 1rem;n }nn h3 {n color: var(u002du002dsitez-teal);n font-size: 1.2rem;n font-weight: 600;n margin: 1.5rem 0 1rem;n }nn .section {n background: white;n padding: 2rem;n margin-bottom: 2rem;n border-radius: 12px;n box-shadow: 0 2px 10px rgba(0,0,0,0.1);n }nn .score-display {n background: linear-gradient(135deg, var(u002du002dsitez-teal), #0d3b44);n color: white;n padding: 2rem;n border-radius: 12px;n text-align: center;n margin: 2rem 0;n }nn .score-number {n font-size: 4rem;n font-weight: 700;n margin: 0.5rem 0;n }nn .score-label {n font-size: 1.5rem;n opacity: 0.9;n }nn .risk-level {n display: inline-block;n padding: 0.5rem 1.5rem;n border-radius: 50px;n font-weight: 600;n margin-top: 1rem;n }nn .risk-low {n background: #4CAF50;n }nn .risk-medium {n background: #FF9800;n }nn .risk-high {n background: #f44336;n }nn .checkbox-group {n margin: 1.5rem 0;n }nn .checkbox-item {n display: flex;n align-items: center;n padding: 1rem;n margin: 0.5rem 0;n background: #f9f9f9;n border-radius: 8px;n cursor: pointer;n transition: all 0.3s ease;n }nn .checkbox-item:hover {n background: var(u002du002dsitez-sage);n }nn .checkbox-item input[type=u0022checkboxu0022] {n width: 24px;n height: 24px;n margin-right: 1rem;n cursor: pointer;n }nn .checkbox-item label {n cursor: pointer;n flex: 1;n }nn .input-group {n margin: 1.5rem 0;n }nn .input-group label {n display: block;n font-weight: 600;n color: var(u002du002dsitez-teal);n margin-bottom: 0.5rem;n }nn .input-help {n background: #f0f8ff;n padding: 1rem;n border-radius: 8px;n margin: 0.5rem 0;n font-size: 0.9rem;n border-left: 4px solid var(u002du002dsitez-blue);n }nn .input-help strong {n display: block;n color: var(u002du002dsitez-teal);n margin-bottom: 0.5rem;n }nn .input-help ul {n margin-left: 1.5rem;n margin-top: 0.5rem;n }nn input[type=u0022numberu0022] {n width: 100%;n padding: 1rem;n border: 2px solid var(u002du002dsitez-sage);n border-radius: 8px;n font-size: 1rem;n font-family: 'Outfit', sans-serif;n }nn input[type=u0022numberu0022]:focus {n outline: none;n border-color: var(u002du002dsitez-teal);n }nn .cost-breakdown {n background: linear-gradient(135deg, #f0f8ff, #e3f2fd);n padding: 2rem;n border-radius: 12px;n margin: 2rem 0;n }nn .cost-row {n display: flex;n justify-content: space-between;n padding: 0.75rem 0;n border-bottom: 1px solid rgba(26, 83, 92, 0.1);n }nn .cost-row:last-child {n border-bottom: none;n font-weight: 700;n font-size: 1.2rem;n padding-top: 1rem;n margin-top: 0.5rem;n border-top: 2px solid var(u002du002dsitez-teal);n }nn .recommendation {n padding: 2rem;n border-radius: 12px;n margin: 2rem 0;n }nn .recommendation h3 {n margin-top: 0;n }nn .rec-low {n background: linear-gradient(135deg, #e8f5e9, #c8e6c9);n border-left: 6px solid #4CAF50;n }nn .rec-medium {n background: linear-gradient(135deg, #fff3e0, #ffe0b2);n border-left: 6px solid #FF9800;n }nn .rec-high {n background: linear-gradient(135deg, #ffebee, #ffcdd2);n border-left: 6px solid #f44336;n }nn .feature-list {n margin: 1.5rem 0;n list-style: none;n padding-left: 0; n list-style-type: none !important;n }nn .feature-list li {n padding: 0.5rem 0;n padding-left: 1.5rem;n position: relative;n }nn .feature-list li:before {n content: 'u005c2713';n position: absolute;n left: 0;n color: var(u002du002dsitez-teal);n font-weight: 700;n }nn .btn {n display: inline-block;n padding: 1rem 2rem;n background: var(u002du002dsitez-teal);n color: white;n border: none;n border-radius: 8px;n font-size: 1rem;n font-weight: 600;n cursor: pointer;n text-decoration: none;n transition: all 0.3s ease;n margin: 0.5rem 0.5rem 0.5rem 0;n }nn .btn:hover {n background: #0d3b44;n transform: translateY(-2px);n }nn .btn-primary {n background: var(u002du002dsitez-red);n }nn .btn-primary:hover {n background: #CC0000;n }nn .btn-secondary {n background: white;n color: var(u002du002dsitez-teal);n border: 2px solid var(u002du002dsitez-teal);n }nn .btn-secondary:hover {n background: var(u002du002dsitez-sage);n }nn .footer {n text-align: center;n padding: 2rem;n background: var(u002du002dsitez-teal);n color: white;n border-radius: 12px;n margin-top: 3rem;n }nn .footer h3 {n color: white;n margin-top: 0;n }nn .footer p {n color: rgba(255, 255, 255, 0.9);n margin: 0.5rem 0;n }nn .hidden {n display: none;n }nn @media print, (max-width: 768px) {n .container {n padding: 1rem;n }nn .section {n padding: 1.5rem;n }nn .score-number {n font-size: 3rem;n }nn h1 {n font-size: 1.5rem;n }nn h2 {n font-size: 1.3rem;n }n n table {n font-size: 0.85rem;n }n n table th, table td {n padding: 0.5rem !important;n }n }n u003c/styleu003en u003cdiv class=u0022containeru0022u003en u003cdiv class=u0022headeru0022u003en u003cdiv class=u0022logou0022u003en u003cspan class=u0022logo-siteu0022u003eSiteu003c/spanu003eu003cspan class=u0022logo-zu0022u003ezu003c/spanu003en u003c/divu003en u003cp class=u0022taglineu0022u003eHelping businesses with their online presenceu003c/pu003en u003ch1u003eDivi 5 Upgrade Risk Assessmentu003c/h1u003en u003cpu003eAnswer a few questions about your site and get a risk score.u003c/pu003en u003cpu003eFind out if you should DIY or hire professional helpu003c/pu003en u003c/divu003enn u003c!u002du002d Section 1: Risk Factors u002du002du003en u003cdiv class=u0022sectionu0022u003en u003ch2u003e1. Assess Your Site's Risk Factorsu003c/h2u003en u003cpu003eCheck all that apply to your website:u003c/pu003enn u003cdiv class=u0022checkbox-groupu0022 id=u0022riskFactorsu0022u003en u003cdiv class=u0022input-groupu0022u003en u003clabel style=u0022color: var(u002du002dsitez-teal); font-weight: 600; margin-bottom: 1rem; display: block;u0022u003ePublished Pages/Postsu003c/labelu003en u003cdiv style=u0022display: flex; gap: 1.5rem; flex-wrap: wrap;u0022u003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages1u0022 value=u00221u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages1u0022 style=u0022cursor: pointer; margin: 0;u0022u003eLess than 25u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages2u0022 value=u00222u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages2u0022 style=u0022cursor: pointer; margin: 0;u0022u003e26-50u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pagesu0022 id=u0022pages3u0022 value=u00223u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022pages3u0022 style=u0022cursor: pointer; margin: 0;u0022u003e51+u003c/labelu003en u003c/divu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022input-groupu0022 style=u0022margin-top: 1.5rem;u0022u003en u003clabel style=u0022color: var(u002du002dsitez-teal); font-weight: 600; margin-bottom: 1rem; display: block;u0022u003eActive Pluginsu003c/labelu003en u003cdiv style=u0022display: flex; gap: 1.5rem; flex-wrap: wrap;u0022u003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins1u0022 value=u00221u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins1u0022 style=u0022cursor: pointer; margin: 0;u0022u003eLess than 20u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins2u0022 value=u00222u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins2u0022 style=u0022cursor: pointer; margin: 0;u0022u003e21-30u003c/labelu003en u003c/divu003en u003cdiv style=u0022display: flex; align-items: center;u0022u003en u003cinput type=u0022radiou0022 name=u0022pluginsu0022 id=u0022plugins3u0022 value=u00223u0022 onchange=u0022calculateScore()u0022 style=u0022margin-right: 0.5rem;u0022u003en u003clabel for=u0022plugins3u0022 style=u0022cursor: pointer; margin: 0;u0022u003e31+u003c/labelu003en u003c/divu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022checkbox-itemu0022 style=u0022margin-top: 1.5rem;u0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk2u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk2u0022u003eE-commerce/WooCommerce functionalityu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk3u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk3u0022u003eMembership/subscription featuresu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk4u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk4u0022u003eCustom post typesu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk5u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk5u0022u003eMulti-site networku003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk6u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk6u0022u003eThird-party integrations (APIs, CRMs)u003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk7u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk7u0022u003eMore than 5 Divi plugins or extensionsu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk8u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk8u0022u003eProcesses paymentsu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk_childthemeu0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk_childthemeu0022u003eCustom Divi child theme with PHP/CSS codeu003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk_themebuilderu0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk_themebuilderu0022u003eCustom Divi Theme Builder templates (header, footer or page layouts)u003c/labelu003en u003c/divu003en u003cdiv class=u0022checkbox-itemu0022u003en u003cinput type=u0022checkboxu0022 id=u0022risk9u0022 value=u00221u0022 onchange=u0022calculateScore()u0022u003en u003clabel for=u0022risk9u0022u003eI do NOT have automated daily backupsu003c/labelu003en u003c/divu003en u003c/divu003enn u003cdiv class=u0022score-displayu0022u003en u003cdiv class=u0022score-labelu0022u003eYour Risk Scoreu003c/divu003en u003cdiv class=u0022score-numberu0022 id=u0022scoreNumberu0022u003e0u003c/divu003en u003cdiv class=u0022score-labelu0022u003eout of 16u003c/divu003en u003cdiv class=u0022risk-levelu0022 id=u0022riskLevelu0022u003eLow Risku003c/divu003en u003c/divu003en u003c/divu003enn u003c!u002du002d Section 2: Downtime Calculator u002du002du003en u003cdiv class=u0022sectionu0022u003en u003ch2u003e2. Calculate Your Potential Downtime Costu003c/h2u003en u003cpu003eHelp us estimate what a failed DIY migration could cost you:u003c/pu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022revenueu0022u003eMonthly Website Revenue ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eExamples by site type:u003c/strongu003en u003culu003en u003cliu003eBrochure/portfolio site: $0 (no direct revenue)u003c/liu003en u003cliu003eLead generation site: $2,000-$10,000 (estimated value of leads)u003c/liu003en u003cliu003eE-commerce site: $5,000-$50,000+ (actual sales)u003c/liu003en u003cliu003eMembership site: $1,000-$20,000 (subscriptions)u003c/liu003en u003cliu003eSaaS/service booking: $10,000-$100,000+u003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022revenueu0022 min=u00220u0022 value=u00220u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022costsu0022u003eMonthly Site Costs ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eTypical ranges:u003c/strongu003en u003culu003en u003cliu003eHosting: $10-$100/monthu003c/liu003en u003cliu003eMaintenance/monitoring: $0-$200/monthu003c/liu003en u003cliu003ePlugin licenses: $50-$200/monthu003c/liu003en u003cliu003eAverage total: $100-$500/monthu003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022costsu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022hourlyRateu0022u003eYour Hourly Rate ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eWhat's your time worth?u003c/strongu003en u003culu003en u003cliu003eBusiness owner: $50-$200/houru003c/liu003en u003cliu003eMarketing manager: $40-$100/houru003c/liu003en u003cliu003eFreelancer: $50-$150/houru003c/liu003en u003cliu003eAgency owner: $100-$300/houru003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022hourlyRateu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv class=u0022input-groupu0022u003en u003clabel for=u0022devRateu0022u003eDeveloper Emergency Rate ($)u003c/labelu003en u003cdiv class=u0022input-helpu0022u003en u003cstrongu003eIndustry averages (2026):u003c/strongu003en u003culu003en u003cliu003eJunior WordPress dev: $50-$75/houru003c/liu003en u003cliu003eMid-level WordPress dev: $75-$125/houru003c/liu003en u003cliu003eSenior/specialist: $125-$200/houru003c/liu003en u003cliu003eEmergency after-hours: Add 50-100%u003c/liu003en u003c/ulu003en u003c/divu003en u003cinput type=u0022numberu0022 id=u0022devRateu0022 min=u00220u0022 value=u0022100u0022 onchange=u0022calculateCosts()u0022u003en u003c/divu003enn u003cdiv id=u0022downtimeEstimateu0022 class=u0022input-helpu0022 style=u0022margin-top: 2rem; background: #fff3e0; border-color: #FF9800;u0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003enn u003cdiv class=u0022cost-breakdownu0022u003en u003ch3 style=u0022margin-top: 0;u0022u003eYour Potential DIY Costsu003c/h3u003en u003cdiv id=u0022costBreakdownu0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003en u003c/divu003en u003c/divu003enn u003c!u002du002d Section 3: Recommendation u002du002du003en u003cdiv id=u0022recommendationSectionu0022u003en u003c!u002du002d Populated by JavaScript u002du002du003en u003c/divu003enn u003c!u002du002d Section 4: Generate PDF u002du002du003en u003cdiv class=u0022sectionu0022 style=u0022text-align: center;u0022u003en u003ch2u003eGet Your Complete Assessment Reportu003c/h2u003en u003cpu003eDownload a PDF with your risk analysis, cost breakdown, and complete migration checklist.u003c/pu003en u003cbutton class=u0022btn btn-primaryu0022 onclick=u0022generatePDF()u0022 style=u0022font-size: 1.2rem; padding: 1.25rem 2.5rem;u0022u003en 📄 Generate PDF Reportn u003c/buttonu003en u003c/divu003enn u003c!u002du002d Footer u002du002du003en u003cdiv class=u0022footeru0022u003en u003ch3u003eSitez Incorporatedu003c/h3u003en u003cpu003eColorado Springs, Coloradou003c/pu003en u003cpu003eHelping businesses with their online presenceu003c/pu003en u003cp style=u0022margin-top: 1rem;u0022u003en u003cstrongu003e📧 Email:u003c/strongu003e tools@sitezinc.comu003cbru003en u003cstrongu003e🌐 Website:u003c/strongu003e u003ca href=u0022https://sitezinc.comu0022 style=u0022color: white;u0022u003esitezinc.comu003c/au003en u003c/pu003en u003c/divu003en u003c/divu003enn u003cscriptu003en let currentScore = 0;n let hasBackups = true;n let riskLevel = 'low';n let packageAddons = 0;n let addonsList = [];nn function calculateScore() {n // Get radio button valuesn const pagesRadio = document.querySelector('input[name=u0022pagesu0022]:checked');n const pluginsRadio = document.querySelector('input[name=u0022pluginsu0022]:checked');n n let pagesScore = pagesRadio ? parseInt(pagesRadio.value) : 0;n let pluginsScore = pluginsRadio ? parseInt(pluginsRadio.value) : 0;n n // Get checkbox valuesn const checkboxes = document.querySelectorAll('#riskFactors input[type=u0022checkboxu0022]:checked');n let checkboxScore = 0;n checkboxes.forEach(cb =u003e {n checkboxScore += parseInt(cb.value);n });n n currentScore = pagesScore + pluginsScore + checkboxScore;n n // Check if backup checkbox is checked (risk9 = no backups)n hasBackups = !document.getElementById('risk9').checked;n n // Calculate add-ons for professional packagen packageAddons = 0;n addonsList = [];n n // Custom child theme code: +$150n if (document.getElementById('risk_childtheme').checked) {n packageAddons += 150;n addonsList.push('Custom Child Theme Code Review: +$150');n }n n // Large site testing: +$100 if both pages=3 (51+) AND plugins=3 (31+)n if (pagesScore === 3 u0026u0026 pluginsScore === 3) {n packageAddons += 100;n addonsList.push('Large Site Testing (51+ pages and 31+ plugins): +$100');n }n n // Multisite handled elsewhere (not in this tool)n // After-hours handled elsewhere (not in this tool)n n // Determine risk level (out of 16 now)n if (currentScore u003c= 3) {n riskLevel = 'low';n } else if (currentScore u003c= 6) {n riskLevel = 'medium';n } else {n riskLevel = 'high';n }n n updateScoreDisplay();n calculateCosts();n }nn function updateScoreDisplay() {n document.getElementById('scoreNumber').textContent = currentScore;n n const levelEl = document.getElementById('riskLevel');n levelEl.className = 'risk-level';n n if (riskLevel === 'low') {n levelEl.textContent = 'Low Risk';n levelEl.classList.add('risk-low');n } else if (riskLevel === 'medium') {n levelEl.textContent = 'Medium Risk';n levelEl.classList.add('risk-medium');n } else {n levelEl.textContent = 'High Risk';n levelEl.classList.add('risk-high');n }n }nn function calculateCosts() {n const revenue = parseFloat(document.getElementById('revenue').value) || 0;n const costs = parseFloat(document.getElementById('costs').value) || 0;n const hourlyRate = parseFloat(document.getElementById('hourlyRate').value) || 0;n const devRate = parseFloat(document.getElementById('devRate').value) || 0;n n // Calculate downtime estimaten let baseHoursLow, baseHoursHigh;n n if (hasBackups) {n baseHoursLow = 1;n baseHoursHigh = 2;n } else {n baseHoursLow = 4;n baseHoursHigh = 8;n }n n // Add time based on complexityn if (riskLevel === 'medium') {n baseHoursHigh += 2;n } else if (riskLevel === 'high') {n baseHoursHigh += 4;n }n n // Display downtime estimaten const downtimeEl = document.getElementById('downtimeEstimate');n let backupNote = hasBackups n ? u0022✅ u003cstrongu003eYou have daily backupsu003c/strongu003e - Recovery time: 1-2 hours. You can quickly restore from yesterday's backup.u0022n : u0022⚠ u003cstrongu003eYou don't have daily backupsu003c/strongu003e - Recovery time: 4-8 hours. Without recent backups, you'll need to locate old backups, restore, test thoroughly, and potentially recreate recent content.u0022;n n if (riskLevel === 'medium') {n backupNote += u0022u003cbru003eu003cbru003e➕ u003cstrongu003eMedium complexity adds 2+ hoursu003c/strongu003e for debugging issues.u0022;n } else if (riskLevel === 'high') {n backupNote += u0022u003cbru003eu003cbru003e➕ u003cstrongu003eHigh complexity adds 4+ hoursu003c/strongu003e for serious debugging and testing.u0022;n }n n downtimeEl.innerHTML = `u003cstrongu003eEstimated Downtime:u003c/strongu003eu003cbru003e${backupNote}`;n n // Calculate costsn const revenuePerHour = revenue / 730;n n const lowRevenueLoss = revenuePerHour * baseHoursLow;n const highRevenueLoss = revenuePerHour * baseHoursHigh;n n const lowTimeCost = hourlyRate * baseHoursLow;n const highTimeCost = hourlyRate * baseHoursHigh;n n const lowDevCost = devRate * baseHoursLow;n const highDevCost = devRate * baseHoursHigh;n n const lowTotal = lowRevenueLoss + lowTimeCost + lowDevCost;n const highTotal = highRevenueLoss + highTimeCost + highDevCost;n n // Display breakdownn const breakdownEl = document.getElementById('costBreakdown');n breakdownEl.innerHTML = `n u003cdiv style=u0022display: grid; grid-template-columns: 1fr 1fr; gap: 2rem;u0022u003en u003cdivu003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-bottom: 1rem;u0022u003eOptimistic Estimate (${baseHoursLow} hours)u003c/h4u003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eLost Revenueu003c/spanu003en u003cspanu003e$${lowRevenueLoss.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eYour Timeu003c/spanu003en u003cspanu003e$${lowTimeCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eDeveloper Helpu003c/spanu003en u003cspanu003e$${lowDevCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eTotalu003c/spanu003en u003cspanu003e$${lowTotal.toFixed(0)}u003c/spanu003en u003c/divu003en u003c/divu003en u003cdivu003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-bottom: 1rem;u0022u003eRealistic Estimate (${baseHoursHigh} hours)u003c/h4u003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eLost Revenueu003c/spanu003en u003cspanu003e$${highRevenueLoss.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eYour Timeu003c/spanu003en u003cspanu003e$${highTimeCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eDeveloper Helpu003c/spanu003en u003cspanu003e$${highDevCost.toFixed(0)}u003c/spanu003en u003c/divu003en u003cdiv class=u0022cost-rowu0022u003en u003cspanu003eTotalu003c/spanu003en u003cspanu003e$${highTotal.toFixed(0)}u003c/spanu003en u003c/divu003en u003c/divu003en u003c/divu003en `;n n updateRecommendation(lowTotal, highTotal);n }nn function updateRecommendation(lowCost, highCost) {n const recSection = document.getElementById('recommendationSection');n const hourlyRate = parseFloat(document.getElementById('hourlyRate').value) || 100;n const diyTimeCost = hourlyRate * 5.5; // 5-6 hours averagen const totalPackagePrice = 495 + packageAddons;n n // Guided package also gets large site testing add-onn const guidedBasePrice = 245;n const guidedAddons = (addonsList.some(a =u003e a.includes('Large Site Testing'))) ? 100 : 0;n const totalGuidedPrice = guidedBasePrice + guidedAddons;n n let html = '';n n // PRIMARY RECOMMENDATIONn html += 'u003cdiv class=u0022sectionu0022 style=u0022background: linear-gradient(135deg, #e8f5e9, #c8e6c9); padding: 2rem; border-radius: 12px; border-left: 6px solid #4CAF50;u0022u003e';n html += 'u003ch2 style=u0022color: var(u002du002dsitez-teal); margin-top: 0;u0022u003e✅ Your Recommended Optionu003c/h2u003e';n n if (riskLevel === 'low') {n html += `n u003ch3 style=u0022color: var(u002du002dsitez-teal);u0022u003eDIY Migration with Professional Checklistu003c/h3u003en u003cpu003eu003cstrongu003eYour site complexity: LOW (Score: ${currentScore}/16)u003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003eEstimated DIY time: 5-6 hoursu003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003ePotential downtime cost: $${lowCost.toFixed(0)} - $${highCost.toFixed(0)}u003c/strongu003eu003c/pu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eYour site is straightforward enough that you can likely handle this yourself IF you:u003c/pu003en u003cul class=u0022feature-listu0022u003en u003cliu003eFollow our step-by-step migration checklistu003c/liu003en u003cliu003eHave a staging environment for testingu003c/liu003en u003cliu003eCan dedicate 5-6 hours of focused timeu003c/liu003en u003cliu003eFeel comfortable troubleshooting basic issuesu003c/liu003en u003c/ulu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eu003cstrongu003eYour complete migration checklist is included in the PDF report.u003c/strongu003eu003c/pu003en `;n } else {n // Medium or High - recommend professional packagen const savingsVsDIY = diyTimeCost - totalPackagePrice;n n html += `n u003ch3 style=u0022color: var(u002du002dsitez-teal);u0022u003eProfessional Migration Packageu003c/h3u003en u003cpu003eu003cstrongu003eYour site complexity: ${riskLevel.toUpperCase()} (Score: ${currentScore}/16)u003c/strongu003eu003c/pu003en u003cpu003eu003cstrongu003ePotential DIY downtime cost: $${lowCost.toFixed(0)} - $${highCost.toFixed(0)}u003c/strongu003eu003c/pu003en n u003cdiv style=u0022background: white; padding: 1.5rem; border-radius: 8px; margin: 1.5rem 0;u0022u003en u003ch4 style=u0022color: var(u002du002dsitez-teal); margin-top: 0;u0022u003ePackage Pricingu003c/h4u003en u003cdiv style=u0022font-size: 1.1rem; margin: 1rem 0;u0022u003en u003cstrongu003eBase Package:u003c/strongu003e $495u003cbru003en `;n n if (addonsList.length u003e 0) {n addonsList.forEach(addon =u003e {n html += `u003cspan style=u0022color: var(u002du002dsitez-gray); margin-left: 1rem;u0022u003e+ ${addon}u003c/spanu003eu003cbru003e`;n });n html += `u003chr style=u0022margin: 1rem 0; border: none; border-top: 2px solid var(u002du002dsitez-teal);u0022u003e`;n html += `u003cstrong style=u0022font-size: 1.3rem; color: var(u002du002dsitez-teal);u0022u003eTotal Package: $${totalPackagePrice}u003c/strongu003e`;n } else {n html += `u003cstrong style=u0022font-size: 1.3rem; color: var(u002du002dsitez-teal);u0022u003eTotal: $495u003c/strongu003e`;n }n n html += `n u003c/divu003en u003c/divu003en n u003cp style=u0022margin: 1.5rem 0;u0022u003eu003cstrongu003eWhat you get:u003c/strongu003eu003c/pu003en u003cul class=u0022feature-listu0022u003en u003cliu003ePre-upgrade compatibility auditu003c/liu003en u003cliu003eStaging environment testingu003c/liu003en u003cliu003eIssues found u0026 fixed BEFORE going liveu003c/liu003en u003cliu003eScheduled deployment during your chosen windowu003c/liu003en u003cliu003ePerformance benchmarkingu003c/liu003en u003cliu003e30-day post-launch monitoringu003c/liu003en u003c/ulu003en n u003cp style=u0022font-weight: 600; color: var(u002du002dsitez-teal); margin-top: 1.5rem;u0022u003en Professional testing costs less than doing it yourself ($${totalPackagePrice} vs ~$${diyTimeCost.toFixed(0)} in your time)n ${savingsVsDIY u003e 0 ? ` and saves you $${savingsVsDIY.toFixed(0)}` : ''}.n u003c/pu003en n u003cdiv style=u0022margin-top: 2rem;u0022u003en u003cbutton class=u0022btn btn-primaryu0022 onclick=u0022window.location.href='https://sitezinc.com'u0022 style=u0022font-size: 1.1rem;u0022u003eSchedule Professional Migrationu003c/buttonu003en u003c/divu003en `;n }n n html += 'u003c/divu003e'; // End recommended sectionn n // OTHER OPTIONS SECTIONn html += 'u003cdiv class=u0022sectionu0022u003e';n html += 'u003ch2 style=u0022color: var(u002du002dsitez-teal);u0022u003eOther Migration Optionsu003c/h2u003e';n html += 'u003cp style=u0022margin-bottom: 2rem;u0022u003eCompare all four approaches to migrating to Divi 5:u003c/pu003e';n n // Comparison tablen html += `n u003cdiv style=u0022overflow-x: auto;u0022u003en u003ctable style=u0022width: 100%; border-collapse: collapse; background: white;u0022u003en u003ctheadu003en u003ctr style=u0022background: var(u002du002dsitez-teal); color: white;u0022u003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eOptionu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eTime Investmentu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eYour Costu003c/thu003en u003cth style=u0022padding: 1rem; text-align: left; border: 1px solid #ddd;u0022u003eRisk Levelu003c/thu003en u003c/tru003en u003c/theadu003en u003ctbodyu003en u003ctru003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eu0022Go For Itu0022u003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eClick button in August, hope for bestu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e15 minutesu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$0 upfrontu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-red);u0022u003e$${lowCost.toFixed(0)}-$${highCost.toFixed(0)} if issuesu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: var(u002du002dsitez-red); font-weight: 600;u0022u003eHIGH RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eFind problems liveu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctr style=u0022background: #f9f9f9;u0022u003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eDIY with Checklistu003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eFollow our process yourselfu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e5-6 hoursu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$${diyTimeCost.toFixed(0)} in your timeu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e(${hourlyRate}/hr × 5.5 hours)u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #FF9800; font-weight: 600;u0022u003eMEDIUM RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eFind issues in stagingu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctru003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eGuided Migrationu003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eYou do work, we overseeu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e3-4 hoursu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e+ our 2 hours testingu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e$${totalGuidedPrice} + $${(hourlyRate * 3.5).toFixed(0)} in your timeu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eTotal: ~$${(totalGuidedPrice + hourlyRate * 3.5).toFixed(0)}u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #4CAF50; font-weight: 600;u0022u003eLOW RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eExpert oversightu003c/spanu003eu003c/tdu003en u003c/tru003en u003ctr style=u0022background: ${riskLevel === 'low' ? '#f9f9f9' : 'linear-gradient(135deg, #e8f5e9, #c8e6c9)'};u0022u003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003eProfessional Migrationu003c/strongu003e${riskLevel !== 'low' ? ' u003cspan style=u0022color: var(u002du002dsitez-teal);u0022u003e? RECOMMENDEDu003c/spanu003e' : ''}u003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eWe do everythingu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003e0 hoursu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003eWe handle it allu003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cstrongu003e$${totalPackagePrice}u003c/strongu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem; color: var(u002du002dsitez-gray);u0022u003e$495 base${packageAddons u003e 0 ? ` + $${packageAddons} add-ons` : ''}u003c/spanu003eu003c/tdu003en u003ctd style=u0022padding: 1rem; border: 1px solid #ddd;u0022u003eu003cspan style=u0022color: #4CAF50; font-weight: 600;u0022u003eLOWEST RISKu003c/spanu003eu003cbru003eu003cspan style=u0022font-size: 0.9rem;u0022u003eProfessional testingu003c/spanu003eu003c/tdu003en u003c/tru003en u003c/tbodyu003en u003c/tableu003en u003c/divu003en `;n n html += 'u003cp style=u0022margin-top: 2rem; font-style: italic; color: var(u002du002dsitez-gray);u0022u003eNeed help anyway? Contact Sitez: u003ca href=u0022https://sitezinc.comu0022 style=u0022color: var(u002du002dsitez-teal);u0022u003esitezinc.comu003c/au003eu003c/pu003e';n html += 'u003c/divu003e'; // End other options sectionn n recSection.innerHTML = html;n }nn async function generatePDF() {n const { jsPDF } = window.jspdf;n const pdf = new jsPDF('p', 'mm', 'a4');n n const pageWidth = pdf.internal.pageSize.getWidth();n const pageHeight = pdf.internal.pageSize.getHeight();n const margin = 10;n const usableWidth = pageWidth - (margin * 2);n let currentY = margin;n n // Helper function to capture an element and add to PDFn async function addElementToPDF(element, forceNewPage = false) {n if (!element || element.offsetHeight === 0) return;n n const canvas = await html2canvas(element, {n scale: 2,n useCORS: true,n logging: false,n backgroundColor: '#ffffff'n });n n const imgData = canvas.toDataURL('image/jpeg', 0.95);n const imgWidth = usableWidth;n const imgHeight = (canvas.height * imgWidth) / canvas.width;n n // Check if we need a new pagen if (forceNewPage || (currentY + imgHeight u003e pageHeight - margin u0026u0026 currentY u003e margin + 10)) {n pdf.addPage();n currentY = margin;n }n n pdf.addImage(imgData, 'JPEG', margin, currentY, imgWidth, imgHeight);n currentY += imgHeight + 5; // 5mm gap between sectionsn }n n // Add header manually (with red 'z')n pdf.setFillColor(26, 83, 92);n pdf.rect(0, 0, pageWidth, 40, 'F');n pdf.setFontSize(24);n pdf.setTextColor(255, 255, 255);n pdf.setFont('helvetica', 'bold');n pdf.text('Site', 20, 27);n n const siteWidth = pdf.getTextWidth('Site');n pdf.setTextColor(255, 0, 0);n pdf.text('z', 20 + siteWidth, 27);n n pdf.setFont('helvetica', 'normal');n pdf.setFontSize(10);n pdf.setTextColor(255, 255, 255);n pdf.text('Divi 5 Upgrade Risk Assessment Report', 20, 36);n n currentY = 45;n pdf.setTextColor(0, 0, 0);n n // Add datesn const today = new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });n const validUntil = new Date(Date.now() + 30*24*60*60*1000).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });n n pdf.setFontSize(10);n pdf.text(`Generated: ${today}`, 20, currentY);n currentY += 7;n pdf.text(`Valid Through: ${validUntil}`, 20, currentY);n currentY += 12;n n // Capture all sectionsn const allSections = document.querySelectorAll('.section');n n // Section 1: Risk factors + scoren await addElementToPDF(allSections[0]);n n // Section 2: Downtime calculator n await addElementToPDF(allSections[1], true); // New page for calculatorn n // Recommendation section (includes the comparison table)n const recSection = document.getElementById('recommendationSection');n if (recSection u0026u0026 recSection.children.length u003e 0) {n await addElementToPDF(recSection, true); // Force new page for recommendationsn }n n // Add footer on BOTTOM of last pagen const finalY = pageHeight - 50; // 50mm from bottomn pdf.setFillColor(26, 83, 92);n pdf.rect(0, finalY, pageWidth, 50, 'F');n pdf.setTextColor(255, 255, 255);n pdf.setFontSize(18);n pdf.setFont('helvetica', 'bold');n pdf.text('Sitez Incorporated', pageWidth/2, finalY + 15, { align: 'center' });n pdf.setFontSize(10);n pdf.setFont('helvetica', 'normal');n pdf.text('Helping businesses with their online presence', pageWidth/2, finalY + 23, { align: 'center' });n pdf.text('Colorado Springs, Colorado', pageWidth/2, finalY + 30, { align: 'center' });n pdf.text('tools@sitezinc.com | sitezinc.com', pageWidth/2, finalY + 37, { align: 'center' });n n // Saven pdf.save('Divi5-Assessment-Report.pdf');n }nn // Initialize on loadn window.addEventListener('load', () =u003e {n calculateScore();n });n u003c/scriptu003e

More Tools

u003cpu003eu003cspanu003eCheck out our other browser-based tools:u003c/spanu003eu003c/pu003e

u003cpu003eStill unclear on how you want to proceed. Want to discuss strategies with a Divi expert? Just reach out for a video or phone consult, or simply contact us with your questions.u003c/pu003e

When You'd Use This Tool

Anytime really, but prior to Divi 5 migration

u003cpu003eThis tool helps you assess the complexity of your site migration and the risk involved in doing so.u003c/pu003e

To determine which of the 4 migration methods to use

u003cpu003eIn our mind, it boils down to there being 4 methods to migrate: 'Go for It', DIY with Checklist, Guided Migration, and Professional Migration.u003c/pu003e

To justify to yourself (or others) that paying $495 is a sound approach

u003cpu003eOur base package, Professional Migration, is a 'soup to nuts' solution which will carefully stage, test, then migrate your most crucial assetu002du002dyour website.u003c/pu003e

How to Use This Tool

Step 1

u003cpu003eComplete the section u0022Assess Your Site's Risk Factors.u0022 You can guess what should be checked, but would be better off finding the information in the backend of your site to complete this section. Be honest about the backup item as it really is key to reduce risk during migration.u003c/pu003e

Step 2

Next, complete the section u0022Calculate Your Potential Downtime Cost.u0022 You really have two key pieces on information to fill inu002du002dsite revenue and site costs. You can likely accept the other default values unless you have better values for those.

Step 3

u003cpu003eNow that all the values are set, scroll down to see our recommendation and then the table with all migration options. If you scroll down further, you will notice that you can output this assessment as a PDF. Our Migration checklist is in the PDF and is our recommended approach for a safe and successful migration experience.u003c/pu003e