WTP Revenue Management Signup

Revenue Management Signup

Sign up and become a revenue management client now.

Answer the questions below and the page will send people to the right revenue management signup path. Pricing is set by how many listings you have, so this page is mainly about making sure you understand the service and the pricing before you sign up.

Quick steps
Keep it simple. Make sure you understand the service and pricing for how many listings you have, then sign the agreement, complete payment, and keep moving through onboarding.
Step 1Review service and pricing
Step 2Sign the agreement
Step 3Pay and onboard
Pricing noteWe adjust later by listing count
Answer these in order

Nothing below will show until both answers are selected. Revenue management uses set pricing based on how many listings you have.

Have you already looked through the revenue management service page?

It is recommended that you understand the service before you sign up, so this tells the page whether the page should send you there first.

Do you already understand the pricing for how many listings you have?

If yes, there is no need to go back through the pricing calculator first.

Answer question 1 first.
Your path

Answer the questions above first. Once the right path is clear, the signup steps will appear below.
'; doc.open(); doc.write(html); doc.close(); } function openClientZoom(){ if(CONFIG.clientZoomUrl){ openPage(CONFIG.clientZoomUrl, 'wtpClientZoom', 1120, 820); return; } var links = Array.prototype.slice.call(document.querySelectorAll('a[href]')); var matches = links.filter(function(link){ var href = String(link.getAttribute('href') || '').toLowerCase(); var text = String(link.textContent || '').toLowerCase(); return text.indexOf('mentoring') > -1 || (text.indexOf('client') > -1 && text.indexOf('zoom') > -1) || href.indexOf('zoom.us') > -1; }); if(matches.length){ openPage(matches[0].href, 'wtpClientZoom', 1120, 820); return; } showStatus('Add your client Zoom or mentoring link into the config so this final step becomes live.', true); } function scrollToEl(id){ var el = document.getElementById(id); if(el) el.scrollIntoView({ behavior:'smooth', block:'start' }); } function idForStep(stepKey){ return { calculator:'wtp-step-calculator', fees:'wtp-step-fees', confirmZoom:'wtp-step-confirm-zoom', sign:'wtp-step-sign', pay:'wtp-step-pay', whatsapp:'wtp-step-whatsapp', course:'wtp-step-course', onboarding:'wtp-step-onboarding', finalZoom:'wtp-step-final-zoom' }[stepKey]; } function labelForStep(stepKey){ return { calculator: CONFIG.servicePageButton, fees: CONFIG.feesButton, confirmZoom: 'Confirm with us', sign: 'Sign agreement', pay: 'Pay fees', whatsapp: 'Send WhatsApp', course: 'Start first free lesson', onboarding: 'Complete onboarding form', finalZoom: 'Book client Zoom' }[stepKey] || 'Next'; } function buildJump(actionKey, primary){ return ''; } function jumpButton(stepKey){ return ''; } function getVisibleSteps(stepList){ var signIndex = stepList.indexOf('sign'); var payIndex = stepList.indexOf('pay'); if(signIndex === -1 || payIndex === -1) return stepList.slice(); if(!state.signDone || !state.payDone) return stepList.slice(0, payIndex + 1); return stepList.slice(); } function getRoute(){ if(state.spoken === 'no' && state.tierKnown === 'yes'){ return { title: 'Review the service page first, then you can move straight into signup.', copy: 'It is recommended that you understand the revenue management service first. Once you have reviewed the service page, you can move straight into the agreement and payment. Pricing is set by how many listings you have.', steps: ['calculator','sign','pay','whatsapp','course','onboarding','finalZoom'], topActions: ['calculator','sign','pay'] }; } if(state.tierKnown === 'yes'){ return { title: 'You already understand the service and pricing, so you can move straight into signup.', copy: 'There is no need to go back through the service page or pricing calculator again. Sign the agreement, pay the fees, then complete the onboarding steps below.', steps: ['sign','pay','whatsapp','course','onboarding','finalZoom'], topActions: ['sign','pay'] }; } if(state.spoken === 'no' && state.tierKnown === 'no'){ return { title: 'Review the service first, then confirm the pricing for your listing count.', copy: 'If you have not already, please review the revenue management page first, then confirm you understand the pricing for how many listings you have by viewing the calculator before moving into the agreement and payment steps.', steps: ['calculator','fees','sign','pay','whatsapp','course','onboarding','finalZoom'], topActions: ['calculator','fees','sign'] }; } return { title: 'Confirm the pricing for your listing count first.', copy: 'If you have not already, please confirm you understand the pricing for how many listings you have by viewing the calculator before continuing into the agreement and payment steps.', steps: ['fees','sign','pay','whatsapp','course','onboarding','finalZoom'], topActions: ['fees','sign','pay'] }; } function buildAgreementAction(){ if(CONFIG.agreementUrl){ return ''; } return ''; } function stepConfig(stepKey, index, visibleSteps){ var nextStep = visibleSteps[index + 1] || null; return { calculator: { id: 'wtp-step-calculator', title: 'Review the revenue management service page.', copy: 'If you have not already, please review the revenue management service page first so you understand what is included before you move into signup.', actions: [ '', nextStep ? jumpButton(nextStep) : '' ] }, fees: { id: 'wtp-step-fees', title: 'Confirm the pricing for how many listings you have.', copy: 'If you have not already, please confirm you understand the pricing for how many listings you have by viewing the calculator. Once that is clear, you can move straight into the next service step.', actions: [ '', nextStep ? jumpButton(nextStep) : '' ] }, confirmZoom: { id: 'wtp-step-confirm-zoom', title: 'Speak with us before signing if you would like to.', copy: 'A call or Zoom is optional here. Revenue management uses set pricing based on how many listings they have, so most people can move straight through once they understand the service and the pricing.', actions: [ '', '' ], note: 'If they want to talk before signing, they can still use these booking options first.' }, sign: { id: 'wtp-step-sign', title: 'Sign the revenue management agreement.', copy: 'Once you are ready to proceed, complete the agreement here. This is where you enter your details, so there is no need to fill them in separately on this page.', actions: [ buildAgreementAction() ], note: (CONFIG.agreementUrl ? 'If the pricing path still needs a final adjustment, any required changes can be confirmed during the first Zoom and call.' : 'The agreement link will be added here shortly. Once it is live, complete it here before you move into payment.'), completeKey: 'sign', completeCopy: 'Once the agreement is finished, tick this so the page knows you are ready for the next part.' }, pay: { id: 'wtp-step-pay', title: 'Pay your fees.', copy: 'Open the payment window here and complete the subscription there. Once payment is done, come back to this page, tick the completion button underneath, and the rest of onboarding will appear below.', actions: [ '' ], note: 'Payment opens in a separate window so you can stay on this page. Please just select $300 and we will adjust it later based on how many listings you have.', completeKey: 'pay', completeCopy: 'Once payment is done, tick this to unlock the rest of the onboarding steps.' }, whatsapp: { id: 'wtp-step-whatsapp', title: 'Send us a WhatsApp message after payment.', copy: 'As soon as you have signed and paid, send us a WhatsApp message so we can continue onboarding and unlock the next stage properly.', actions: [ '', nextStep ? jumpButton(nextStep) : '' ], finalNote: 'WhatsApp number: ' + CONFIG.whatsappDisplay + '.' }, course: { id: 'wtp-step-course', title: 'Start the first free lesson only.', copy: 'Please do not pay for this course. We give it to you for free. Just start the first free lesson so we can capture the email address you want used for your channel manager or business account, then we can give full access.', actions: [ '', nextStep ? jumpButton(nextStep) : '' ], note: 'Once the email address is created, send it to us on WhatsApp so we can arrange free access to the course.' }, onboarding: { id: 'wtp-step-onboarding', title: 'Complete the onboarding form.', copy: 'You now have access to the onboarding form. Make your way through it as you can. You are not going to do everything at once, but this is what you need to actively onboard properly.', actions: [ '', nextStep ? jumpButton(nextStep) : '' ] }, finalZoom: { id: 'wtp-step-final-zoom', title: 'Book your client Zoom to get started.', copy: 'Once the agreement, payment, WhatsApp message, first free lesson, and onboarding form are underway, move into the client Zoom and start onboarding properly.', actions: [ '' ] } }[stepKey]; } function buildCompleteControl(conf){ if(!conf.completeKey) return ''; var done = conf.completeKey === 'sign' ? state.signDone : state.payDone; return '
' + conf.completeCopy + '
'; } function buildStepHtml(stepKey, index, visibleSteps, allSteps){ var conf = stepConfig(stepKey, index, visibleSteps); if(!conf) return ''; var html = ''; html += '
'; html += '
' + String(index + 1).padStart(2, '0') + '
'; html += '
'; html += '

' + conf.title + '

'; html += '

' + conf.copy + '

'; if(conf.actions && conf.actions.length) html += '
' + conf.actions.filter(Boolean).join('') + '
'; if(conf.note) html += '
' + conf.note + '
'; html += buildCompleteControl(conf); if(conf.finalNote) html += '
' + conf.finalNote + '
'; if(index === visibleSteps.length - 1 && visibleSteps.length < allSteps.length) html += '
Once the agreement and payment are finished, tick the completion buttons above and the rest of the onboarding steps will appear underneath.
'; html += '
'; return html; } function renderRoute(){ updateQuestionFlow(); if(!isComplete()){ routeCard.classList.remove('show'); routeGrid.classList.remove('show'); waiting.style.display = 'grid'; stepsWrap.innerHTML = ''; topJumps.innerHTML = ''; return; } waiting.style.display = 'none'; routeCard.classList.add('show'); routeGrid.classList.add('show'); var route = getRoute(); var visibleSteps = getVisibleSteps(route.steps); routeTitle.textContent = route.title; routeCopy.textContent = route.copy; topJumps.innerHTML = route.topActions.filter(function(actionKey){ return visibleSteps.indexOf(actionKey) > -1; }).map(function(actionKey, index){ return buildJump(actionKey, index === 0); }).join(''); stepsWrap.innerHTML = visibleSteps.map(function(stepKey, index){ return buildStepHtml(stepKey, index, visibleSteps, route.steps); }).join(''); } root.querySelectorAll('.wtp-segment').forEach(function(group){ group.addEventListener('click', function(e){ var btn = e.target.closest('button[data-value]'); if(!btn) return; var key = group.getAttribute('data-question'); if(key === 'tierKnown' && !state.spoken) return; state[key] = btn.getAttribute('data-value'); resetProgress(); setSegmentValue(group, state[key]); if(key === 'spoken'){ state.tierKnown = null; root.querySelectorAll('[data-question="tierKnown"] button').forEach(function(b){ b.classList.remove('active'); }); } renderRoute(); }); }); root.addEventListener('click', function(e){ var jump = e.target.closest('.js-jump'); if(jump){ e.preventDefault(); scrollToEl(jump.getAttribute('data-target')); return; } var pageBtn = e.target.closest('.js-open-page'); if(pageBtn){ e.preventDefault(); openPage(pageBtn.getAttribute('data-url'), pageBtn.getAttribute('data-title') || 'wtpPage', 1280, 920); return; } if(e.target.closest('.js-open-pre-call')){ e.preventDefault(); openPage(CONFIG.preClientCallUrl, 'wtpPreClientCall', 1120, 820); return; } if(e.target.closest('.js-open-pre-zoom')){ e.preventDefault(); openPage(CONFIG.preClientZoomUrl, 'wtpPreClientZoom', 1120, 820); return; } if(e.target.closest('.js-open-payment')){ e.preventDefault(); openStripePaymentPopup(); return; } if(e.target.closest('.js-open-client-zoom')){ e.preventDefault(); openClientZoom(); return; } if(e.target.closest('.js-missing-agreement')){ e.preventDefault(); showStatus('Add the revenue management agreement link and this step will go live.', true); return; } var completeBtn = e.target.closest('.js-complete-step'); if(completeBtn){ e.preventDefault(); var key = completeBtn.getAttribute('data-complete'); if(key === 'sign') state.signDone = true; if(key === 'pay') state.payDone = true; renderRoute(); if(key === 'sign' && !state.payDone) scrollToEl(idForStep('pay')); if(key === 'pay') scrollToEl(idForStep('whatsapp')); } }); renderRoute(); })();