{"id":8,"date":"2025-03-12T13:32:17","date_gmt":"2025-03-12T12:32:17","guid":{"rendered":"https:\/\/imker.pl\/kalkulatory\/?p=8"},"modified":"2025-03-14T14:19:47","modified_gmt":"2025-03-14T13:19:47","slug":"zasiegi-kanaly-sprzedaz","status":"publish","type":"post","link":"https:\/\/imker.pl\/kalkulatory\/zasiegi-kanaly-sprzedaz\/","title":{"rendered":"Zasi\u0119gi w kana\u0142ach marketingowych vs Twoja sprzeda\u017c"},"content":{"rendered":"\n<p>Sprawd\u017a, na jakim poziomie musisz mie\u0107 rozwini\u0119te poszczeg\u00f3lne kana\u0142y dotarcia do odbiorc\u00f3w, by efektywnie sprzedawa\u0107. Mo\u017cesz dowolnie ustala\u0107 te\u017c poziom konwersji z ka\u017cdego \u017ar\u00f3d\u0142a. Dobre rozwini\u0119cie do kalkulatora 1.<\/p>\n\n\n\n<p><strong>Skorzystaj z kalkulatora poni\u017cej:<\/strong><\/p>\n\n\n\n<style>\n        :root {\n            --base-color: #da2343;\n            --base-color-light: rgba(218, 35, 67, 0.1);\n            --success-color: #008000;\n            --success-color-light: rgba(0, 128, 0, 0.1);\n        }\n        \n        .check-button {\n            background-color: var(--base-color);\n            color: white;\n            border: none;\n            padding: 12px 24px;\n            font-size: 16px;\n            font-weight: bold;\n            border-radius: 4px;\n            cursor: pointer;\n            transition: background-color 0.3s;\n        }\n        \n        .check-button:hover {\n            background-color: #b51d36;\n        }\n        \n        .text-center {\n            text-align: center;\n        }\n         \n         \n        \n        .form-group {\n            margin-bottom: 15px;\n        }\n        \n        label {\n            display: block;\n            font-weight: 500;\n            margin-bottom: 5px;\n            font-size: 14px;\n        }\n        \n        input {\n            width: 100%;\n            padding: 8px 10px;\n            border: 1px solid #ccc;\n            border-radius: 4px;\n            font-size: 16px;\n            box-sizing: border-box;\n        }\n        \n        input:focus {\n            outline: none;\n            border-color: var(--base-color);\n        }\n        \n        .row {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 0 24px;\n        }\n        \n        .col {\n            flex: 1; \n        }\n        \n        .summary-box {\n            background-color: var(--base-color-light);\n            border-radius: 8px;\n            padding: 15px;\n            margin-bottom: 20px;\n            box-sizing: border-box;\n        }\n        \n        .summary-box.success {\n            background-color: var(--success-color-light);\n        }\n        \n        .summary-box h3 {\n            margin-top: 0;\n            margin-bottom: 10px;\n        }\n        \n        .summary-box.success h3 {\n            color: var(--success-color);\n        }\n        \n        .summary-item {\n            margin-bottom: 8px;\n        }\n        \n        .summary-item span {\n            font-weight: bold;\n            color: var(--base-color);\n        }\n        \n        .summary-box.success .summary-item span {\n            color: var(--success-color);\n        }\n        \n        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-bottom: 20px;\n            font-size: 14px;\n        }\n        \n        th, td {\n            padding: 10px;\n            text-align: left;\n            border: 1px solid #ddd;\n        }\n        \n        th {\n            background-color: #f8f8f8;\n            font-weight: 600;\n        }\n        \n        tfoot td {\n            font-weight: bold;\n            background-color: #f8f8f8;\n        }\n        \n        .text-right {\n            text-align: right;\n        }\n        \n        .alert {\n            color: var(--base-color);\n            font-weight: bold;\n        }\n        \n        .recommendation {\n            background-color: #fff;\n            border: 1px solid #ddd;\n            border-radius: 4px;\n            padding: 15px;\n            margin-top: 10px;\n        }\n        \n        .note {\n            font-size: 12px;\n            color: #666;\n            margin-top: 10px;\n        }\n        \n        @media (max-width: 768px) {\n            .col {\n                flex: 100%;\n                margin-bottom: 15px;\n            }\n            \n            table {\n                font-size: 13px;\n            }\n            \n            th, td {\n                padding: 8px 5px;\n            }\n            \n            .container {\n                padding: 15px;\n            }\n        }\n    <\/style>  \n\n        \n        <div class=\"row\">\n            <div class=\"col\">\n                <div class=\"form-group\">\n                    <label for=\"target-income\">Ile chcesz mie\u0107 przychodu miesi\u0119cznie (z\u0142)?<\/label>\n                    <input type=\"number\" id=\"target-income\" min=\"1000\" value=\"5000\">\n                <\/div>\n            <\/div>\n            <div class=\"col\">\n                <div class=\"form-group\">\n                    <label for=\"product-price\">Cena Twojego produktu (z\u0142):<\/label>\n                    <input type=\"number\" id=\"product-price\" min=\"1\" value=\"100\">\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"summary-box\">\n            <h3>Potrzebna sprzeda\u017c:<\/h3>\n            <p id=\"required-sales\" style=\"font-size: 18px; font-weight: bold;\"><\/p>\n            <p id=\"sales-note\" style=\"font-size: 13px; color: #666;\"><\/p>\n        <\/div>\n        \n        <h2>Twoje kana\u0142y:<\/h2>\n        <div style=\"overflow-x: auto;\">\n            <table id=\"channels-table\">\n                <thead>\n                    <tr>\n                        <th>Platforma<\/th>\n                        <th>Liczba odbiorc\u00f3w<\/th>\n                        <th>Konwersja (%)<\/th>\n                        <th>Szacowani klienci<\/th>\n                        <th>Szacowany przych\u00f3d<\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody id=\"channels-body\">\n                    <!-- Channels will be generated by JS -->\n                <\/tbody>\n                <tfoot>\n                    <tr>\n                        <td>SUMA<\/td>\n                        <td id=\"total-followers\" class=\"text-right\">0<\/td>\n                        <td id=\"avg-conversion\" class=\"text-right\">0%*<\/td>\n                        <td id=\"total-clients\" class=\"text-right\">0<\/td>\n                        <td id=\"total-revenue\" class=\"text-right\">0 z\u0142<\/td>\n                    <\/tr>\n                <\/tfoot>\n            <\/table>\n            <p class=\"note\">* \u015arednia wa\u017cona konwersja<\/p>\n        <\/div>\n        \n        <div class=\"text-center\" style=\"margin: 20px 0;\">\n            <button id=\"check-button\" class=\"check-button\">Sprawd\u017a, czy ta liczba fan\u00f3w wystarczy<\/button>\n        <\/div>\n\n        <div id=\"results-section\" style=\"display: none;\">\n            <div class=\"summary-box\">\n                <h3>Podsumowanie aktualne:<\/h3>\n                <div class=\"summary-item\">\n                    <label>\u0141\u0105czna liczba odbiorc\u00f3w:<\/label> \n                    <span id=\"summary-followers\">0<\/span>\n                <\/div>\n                <div class=\"summary-item\">\n                    <label>\u015arednia konwersja:<\/label> \n                    <span id=\"summary-conversion\">0%<\/span>\n                <\/div>\n                <div class=\"summary-item\">\n                    <label>Szacowani miesi\u0119czni klienci:<\/label> \n                    <span id=\"summary-clients\">0<\/span>\n                <\/div>\n                <div class=\"summary-item\">\n                    <label>Szacowane miesi\u0119czne zarobki:<\/label> \n                    <span id=\"summary-revenue\">0 z\u0142<\/span>\n                <\/div>\n                <div class=\"summary-item\">\n                    <label>Szacowana sprzeda\u017c:<\/label> \n                    <span id=\"summary-sales\">0 produkt\u00f3w miesi\u0119cznie (0 dziennie)<\/span>\n                <\/div>\n            <\/div>\n            \n            <div id=\"goal-box\" class=\"summary-box\">\n                <h3>Do osi\u0105gni\u0119cia celu:<\/h3>\n                <div id=\"status-container\" class=\"summary-item\">\n                    <label>Status:<\/label> \n                    <span id=\"status\" class=\"alert\">Brakuje 0 do 0 odbiorc\u00f3w (w zale\u017cno\u015bci od kana\u0142u)<\/span>\n                <\/div>\n                <div class=\"summary-item\">\n                    <label style=\"color: black;\">Wymagana sprzeda\u017c:<\/label> \n                    <span id=\"required-monthly-sales\" style=\"color: black;\">0 produkt\u00f3w miesi\u0119cznie (0 dziennie)<\/span>\n                <\/div>\n                \n                <div id=\"growth-container\">\n                    <h4>Potrzebny wzrost w kana\u0142ach (niezale\u017cnie):<\/h4>\n                    <div class=\"recommendation\">\n                        <table id=\"growth-table\">\n                            <thead>\n                                <tr>\n                                    <th>Kana\u0142<\/th>\n                                    <th class=\"text-right\">Obecna liczba<\/th>\n                                    <th class=\"text-right\">Potrzebna liczba<\/th>\n                                    <th class=\"text-right\">Potrzebny wzrost<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody id=\"growth-body\">\n                                <!-- Growth data will be generated by JS -->\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <div class=\"summary-box\">\n                <h3>Rekomendacja:<\/h3>\n                <div id=\"recommendation\" class=\"recommendation\">\n                    <!-- Recommendation will be generated by JS -->\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <p class=\"note\">* Kalkulator zak\u0142ada, \u017ce ka\u017cda platforma ma inny wska\u017anik konwersji. \n            Warto\u015bci s\u0105 u\u015brednione na podstawie liczby odbiorc\u00f3w na ka\u017cdej platformie.<\/p>\n    <\/div>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function() {\n            \/\/ Default channel data\n            const defaultChannels = [\n                { id: 'newsletter', name: 'Newsletter', followers: 500, conversionRate: 3.0 },\n                { id: 'instagram', name: 'Instagram', followers: 500, conversionRate: 0.8 },\n                { id: 'facebook', name: 'Facebook', followers: 500, conversionRate: 0.6 },\n                { id: 'youtube', name: 'YouTube', followers: 500, conversionRate: 1.0 },\n                { id: 'linkedin', name: 'LinkedIn', followers: 500, conversionRate: 1.5 },\n                { id: 'tiktok', name: 'TikTok', followers: 500, conversionRate: 0.7 },\n                { id: 'x', name: 'X (Twitter)', followers: 500, conversionRate: 0.5 }\n            ];\n            \n            let channels = [...defaultChannels];\n            \n            \/\/ Format number with space as thousands separator\n            function formatNumber(num) {\n                return num.toLocaleString('pl-PL');\n            }\n            \n            \/\/ Generate channels table\n            function generateChannelsTable() {\n                const tbody = document.getElementById('channels-body');\n                tbody.innerHTML = '';\n                \n                channels.forEach(channel => {\n                    const tr = document.createElement('tr');\n                    \n                    const estimatedClients = (channel.followers * channel.conversionRate \/ 100) || 0;\n                    const estimatedRevenue = estimatedClients * getProductPrice();\n                    \n                    tr.innerHTML = `\n                        <td>${channel.name}<\/td>\n                        <td>\n                            <input type=\"number\" min=\"0\" value=\"${channel.followers}\" \n                                   data-channel=\"${channel.id}\" data-type=\"followers\" \n                                   class=\"channel-input\" style=\"width: 90%;\">\n                        <\/td>\n                        <td>\n                            <input type=\"number\" min=\"0.01\" max=\"100\" step=\"0.01\" value=\"${channel.conversionRate}\" \n                                   data-channel=\"${channel.id}\" data-type=\"conversion\" \n                                   class=\"channel-input\" style=\"width: 90%;\">\n                        <\/td>\n                        <td class=\"text-right\">${formatNumber(Math.round(estimatedClients))}<\/td>\n                        <td class=\"text-right\">${formatNumber(Math.round(estimatedRevenue))} z\u0142<\/td>\n                    `;\n                    \n                    tbody.appendChild(tr);\n                });\n                \n                \/\/ Add event listeners to inputs\n                document.querySelectorAll('.channel-input').forEach(input => {\n                    input.addEventListener('input', function() {\n                        const channelId = this.dataset.channel;\n                        const type = this.dataset.type;\n                        const value = parseFloat(this.value) || 0;\n                        \n                        const channelIndex = channels.findIndex(c => c.id === channelId);\n                        if (channelIndex !== -1) {\n                            if (type === 'followers') {\n                                channels[channelIndex].followers = value;\n                            } else if (type === 'conversion') {\n                                channels[channelIndex].conversionRate = value;\n                            }\n                            \n                            calculateAll();\n                        }\n                    });\n                });\n            }\n            \n            \/\/ Get target income\n            function getTargetIncome() {\n                return parseFloat(document.getElementById('target-income').value) || 5000;\n            }\n            \n            \/\/ Get product price\n            function getProductPrice() {\n                return parseFloat(document.getElementById('product-price').value) || 100;\n            }\n            \n            \/\/ Calculate weighted conversion rate\n            function calculateWeightedConversionRate() {\n                const totalFollowers = channels.reduce((sum, channel) => sum + channel.followers, 0);\n                \n                if (totalFollowers === 0) return 0;\n                \n                const weightedRate = channels.reduce((sum, channel) => {\n                    return sum + (channel.followers * channel.conversionRate);\n                }, 0) \/ totalFollowers;\n                \n                return weightedRate;\n            }\n            \n            \/\/ Calculate total followers\n            function calculateTotalFollowers() {\n                return channels.reduce((sum, channel) => sum + channel.followers, 0);\n            }\n            \n            \/\/ Calculate estimated income\n            function calculateEstimatedIncome() {\n                const productPrice = getProductPrice();\n                \n                return channels.reduce((sum, channel) => {\n                    const estimatedClients = (channel.followers * channel.conversionRate \/ 100) || 0;\n                    return sum + (estimatedClients * productPrice);\n                }, 0);\n            }\n            \n            \/\/ Calculate followers needed to reach target\n            function calculateFollowersNeeded() {\n                const targetIncome = getTargetIncome();\n                const productPrice = getProductPrice();\n                const weightedRate = calculateWeightedConversionRate();\n                \n                if (weightedRate === 0 || productPrice === 0) return 0;\n                \n                const clientsNeeded = targetIncome \/ productPrice;\n                return Math.ceil(clientsNeeded * 100 \/ weightedRate);\n            }\n            \n            \/\/ Update summary and calculations\n            function calculateAll() {\n                const targetIncome = getTargetIncome();\n                const productPrice = getProductPrice();\n                const totalFollowers = calculateTotalFollowers();\n                const weightedRate = calculateWeightedConversionRate();\n                const estimatedIncome = calculateEstimatedIncome();\n                const followersNeeded = calculateFollowersNeeded();\n                \n                \/\/ Update required sales info\n                const requiredSalesMonthly = Math.ceil(targetIncome \/ productPrice);\n                const requiredSalesDaily = Math.ceil(requiredSalesMonthly \/ 30);\n                \n                document.getElementById('required-sales').textContent = \n                    `${formatNumber(requiredSalesMonthly)} produkt\u00f3w miesi\u0119cznie (${formatNumber(requiredSalesDaily)} dziennie)`;\n                document.getElementById('sales-note').textContent = \n                    `Aby osi\u0105gn\u0105\u0107 doch\u00f3d ${formatNumber(targetIncome)} z\u0142 przy cenie produktu ${productPrice} z\u0142`;\n                \n                \/\/ Update totals in table footer\n                document.getElementById('total-followers').textContent = formatNumber(totalFollowers);\n                document.getElementById('avg-conversion').textContent = weightedRate.toFixed(2) + '%*';\n                \n                const totalClients = Math.round(totalFollowers * weightedRate \/ 100);\n                document.getElementById('total-clients').textContent = formatNumber(totalClients);\n                document.getElementById('total-revenue').textContent = formatNumber(Math.round(estimatedIncome)) + ' z\u0142';\n                \n                \/\/ Update summary box\n                document.getElementById('summary-followers').textContent = formatNumber(totalFollowers);\n                document.getElementById('summary-conversion').textContent = weightedRate.toFixed(2) + '%';\n                document.getElementById('summary-clients').textContent = formatNumber(totalClients);\n                document.getElementById('summary-revenue').textContent = formatNumber(Math.round(estimatedIncome)) + ' z\u0142';\n                \n                const monthlySales = Math.round(estimatedIncome \/ productPrice);\n                const dailySales = Math.round(monthlySales \/ 30);\n                document.getElementById('summary-sales').textContent = \n                    `${formatNumber(monthlySales)} produkt\u00f3w miesi\u0119cznie (${formatNumber(dailySales)} dziennie)`;\n                \n                \/\/ Update goal box\n                const goalBox = document.getElementById('goal-box');\n                if (estimatedIncome >= targetIncome) {\n                    goalBox.classList.add('success');\n                    document.getElementById('status').textContent = 'Cel osi\u0105gni\u0119ty!';\n                    document.getElementById('status').style.color = 'var(--success-color)';\n                } else {\n                    goalBox.classList.remove('success');\n                    \n                    \/\/ Calculate missing followers range\n                    const missingFollowers = channels.map(channel => {\n                        const neededClientsForTarget = targetIncome \/ productPrice;\n                        const currentContribution = (channel.followers * channel.conversionRate \/ 100) * productPrice;\n                        const remainingIncome = Math.max(0, targetIncome - (estimatedIncome - currentContribution));\n                        const remainingClients = remainingIncome \/ productPrice;\n                        const additionalFollowersNeeded = Math.ceil(remainingClients * 100 \/ channel.conversionRate);\n                        return additionalFollowersNeeded - channel.followers;\n                    });\n                    \n                    const minMissing = Math.min(...missingFollowers);\n                    const maxMissing = Math.max(...missingFollowers);\n                    \n                    document.getElementById('status').textContent = \n                        `Brakuje od ${formatNumber(minMissing)} do ${formatNumber(maxMissing)} odbiorc\u00f3w (w zale\u017cno\u015bci od kana\u0142u)`;\n                    document.getElementById('status').style.color = 'var(--base-color)';\n                }\n                \n                document.getElementById('required-monthly-sales').textContent = \n                    `${formatNumber(requiredSalesMonthly)} produkt\u00f3w miesi\u0119cznie (${formatNumber(requiredSalesDaily)} dziennie)`;\n                \n                \/\/ Update growth table\n                updateGrowthTable(targetIncome, productPrice, estimatedIncome);\n                \n                \/\/ Update recommendation\n                updateRecommendation(targetIncome, productPrice, estimatedIncome);\n            }\n            \n            \/\/ Update growth table\n            function updateGrowthTable(targetIncome, productPrice, estimatedIncome) {\n                const growthBody = document.getElementById('growth-body');\n                growthBody.innerHTML = '';\n                \n                channels.forEach(channel => {\n                    const neededClientsForTarget = targetIncome \/ productPrice;\n                    const currentContribution = (channel.followers * channel.conversionRate \/ 100) * productPrice;\n                    const remainingIncome = Math.max(0, targetIncome - (estimatedIncome - currentContribution));\n                    const remainingClients = remainingIncome \/ productPrice;\n                    const additionalFollowersNeeded = Math.ceil(remainingClients * 100 \/ channel.conversionRate);\n                    const growthRequired = Math.max(0, additionalFollowersNeeded - channel.followers);\n                    \n                    const tr = document.createElement('tr');\n                    tr.innerHTML = `\n                        <td>${channel.name}<\/td>\n                        <td class=\"text-right\">${formatNumber(channel.followers)}<\/td>\n                        <td class=\"text-right\">${formatNumber(additionalFollowersNeeded)}<\/td>\n                        <td class=\"text-right\" style=\"color: var(--base-color); font-weight: 500;\">\n                            ${currentContribution >= targetIncome \n                                ? '\u2713' \n                                : `+${formatNumber(growthRequired)} (${channel.followers > 0 ? Math.round(growthRequired \/ channel.followers * 100) : 0}%)`}\n                        <\/td>\n                    `;\n                    \n                    growthBody.appendChild(tr);\n                });\n            }\n            \n            \/\/ Update recommendation\n            function updateRecommendation(targetIncome, productPrice, estimatedIncome) {\n                const recommendationDiv = document.getElementById('recommendation');\n                \n                \/\/ Find channel with highest conversion rate\n                const bestChannel = [...channels].sort((a, b) => b.conversionRate - a.conversionRate)[0];\n                \n                \/\/ Find channel with lowest required growth to reach target\n                const channelsWithGrowth = channels.map(channel => {\n                    const currentContribution = (channel.followers * channel.conversionRate \/ 100) * productPrice;\n                    const remainingIncome = Math.max(0, targetIncome - (estimatedIncome - currentContribution));\n                    const remainingClients = remainingIncome \/ productPrice;\n                    const additionalFollowersNeeded = Math.ceil(remainingClients * 100 \/ channel.conversionRate);\n                    const growthRequired = Math.max(0, additionalFollowersNeeded - channel.followers);\n                    \n                    return { ...channel, growthRequired };\n                });\n                \n                const easiestChannel = [...channelsWithGrowth]\n                    .filter(c => c.growthRequired > 0)\n                    .sort((a, b) => a.growthRequired - b.growthRequired)[0] || bestChannel;\n                \n                let html = `\n                    <p><strong>Najwy\u017csza konwersja:<\/strong> Kana\u0142 <span style=\"font-weight: bold; color: var(--base-color);\">${bestChannel.name}<\/span> ma \n                    najwy\u017cszy wsp\u00f3\u0142czynnik konwersji (${bestChannel.conversionRate}%). Rozbudowa tego \n                    kana\u0142u da Ci najlepsze rezultaty w d\u0142ugim terminie.<\/p>\n                `;\n                \n                if (easiestChannel.id !== bestChannel.id) {\n                    html += `\n                        <p><strong>Naj\u0142atwiejszy do osi\u0105gni\u0119cia celu:<\/strong> Kana\u0142 <span style=\"font-weight: bold; color: var(--base-color);\">${easiestChannel.name}<\/span> wymaga \n                        najmniejszego wzrostu (+${formatNumber(easiestChannel.growthRequired)} odbiorc\u00f3w) do osi\u0105gni\u0119cia Twojego celu finansowego.<\/p>\n                    `;\n                }\n                \n                recommendationDiv.innerHTML = html;\n            }\n            \n            \/\/ Initial setup\n            generateChannelsTable();\n            \n            \/\/ Add event listeners to main inputs (only update required sales on input)\n            document.getElementById('target-income').addEventListener('input', function() {\n                const targetIncome = getTargetIncome();\n                const productPrice = getProductPrice();\n                const requiredSalesMonthly = Math.ceil(targetIncome \/ productPrice);\n                const requiredSalesDaily = Math.ceil(requiredSalesMonthly \/ 30);\n                \n                document.getElementById('required-sales').textContent = \n                    `${formatNumber(requiredSalesMonthly)} produkt\u00f3w miesi\u0119cznie (${formatNumber(requiredSalesDaily)} dziennie)`;\n                document.getElementById('sales-note').textContent = \n                    `Aby osi\u0105gn\u0105\u0107 doch\u00f3d ${formatNumber(targetIncome)} z\u0142 przy cenie produktu ${productPrice} z\u0142`;\n            });\n            \n            document.getElementById('product-price').addEventListener('input', function() {\n                const targetIncome = getTargetIncome();\n                const productPrice = getProductPrice();\n                const requiredSalesMonthly = Math.ceil(targetIncome \/ productPrice);\n                const requiredSalesDaily = Math.ceil(requiredSalesMonthly \/ 30);\n                \n                document.getElementById('required-sales').textContent = \n                    `${formatNumber(requiredSalesMonthly)} produkt\u00f3w miesi\u0119cznie (${formatNumber(requiredSalesDaily)} dziennie)`;\n                document.getElementById('sales-note').textContent = \n                    `Aby osi\u0105gn\u0105\u0107 doch\u00f3d ${formatNumber(targetIncome)} z\u0142 przy cenie produktu ${productPrice} z\u0142`;\n            });\n            \n            \/\/ Add event listener for check button\n            document.getElementById('check-button').addEventListener('click', function() {\n                \/\/ Update calculations\n                calculateAll();\n                \n                \/\/ Show results section\n                document.getElementById('results-section').style.display = 'block';\n                \n                \/\/ Scroll to results\n                document.getElementById('results-section').scrollIntoView({ \n                    behavior: 'smooth', \n                    block: 'start' \n                });\n            });\n            \n            \/\/ Initial calculation for required sales only\n            const targetIncome = getTargetIncome();\n            const productPrice = getProductPrice();\n            const requiredSalesMonthly = Math.ceil(targetIncome \/ productPrice);\n            const requiredSalesDaily = Math.ceil(requiredSalesMonthly \/ 30);\n            \n            document.getElementById('required-sales').textContent = \n                `${formatNumber(requiredSalesMonthly)} produkt\u00f3w miesi\u0119cznie (${formatNumber(requiredSalesDaily)} dziennie)`;\n            document.getElementById('sales-note').textContent = \n                `Aby osi\u0105gn\u0105\u0107 doch\u00f3d ${formatNumber(targetIncome)} z\u0142 przy cenie produktu ${productPrice} z\u0142`;\n        });\n    <\/script>\n","protected":false},"excerpt":{"rendered":"<p>Sprawd\u017a, na jakim poziomie musisz mie\u0107 rozwini\u0119te poszczeg\u00f3lne kana\u0142y dotarcia do odbiorc\u00f3w, by efektywnie sprzedawa\u0107. Mo\u017cesz dowolnie ustala\u0107 te\u017c poziom konwersji z ka\u017cdego \u017ar\u00f3d\u0142a. Dobre rozwini\u0119cie do kalkulatora 1.<\/p>\n","protected":false},"author":1,"featured_media":22,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-8","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-lista"],"acf":[],"_links":{"self":[{"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/posts\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":8,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":30,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/posts\/8\/revisions\/30"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/media\/22"}],"wp:attachment":[{"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/media?parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/categories?post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imker.pl\/kalkulatory\/wp-json\/wp\/v2\/tags?post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}