{"id":21454,"date":"2026-10-05T17:09:13","date_gmt":"2026-10-05T15:09:13","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?page_id=21454"},"modified":"2026-10-05T17:09:13","modified_gmt":"2026-10-05T15:09:13","slug":"saas-support-capacity-planner","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/","title":{"rendered":"Planer wydajno\u015bci wsparcia SaaS"},"content":{"rendered":"<style>\n.lw-saas{color:var(--text-primary);min-width:0}\n.lw-saas *{box-sizing:border-box}\n.lw-saas h2,.lw-saas h3,.profile-panel:has(.lw-saas) .profile-name{overflow-wrap:anywhere;hyphens:auto}\n.lw-saas .saas-note{padding:16px;border-left:3px solid var(--accent);background:var(--bg-panel);color:var(--text-secondary)}\n.lw-saas fieldset{border:1px solid var(--border);border-radius:10px;padding:18px;margin:20px 0;min-width:0;background:var(--bg-panel)}\n.lw-saas legend{padding:0 8px;font-weight:700;color:var(--text-primary)}\n.lw-saas .saas-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.lw-saas label{display:block;font-size:.9rem;color:var(--text-secondary)}\n.lw-saas input{display:block;width:100%;padding:11px;margin-top:6px;border:1px solid var(--border);border-radius:6px;background:var(--bg-body);color:var(--text-primary);font:inherit}\n.lw-saas input:focus-visible,.lw-saas button:focus-visible,.lw-saas a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}\n.lw-saas input[aria-invalid=true]{border:2px solid var(--accent)}\n.lw-saas .saas-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}\n.lw-saas button:disabled{opacity:.45;cursor:default;transform:none}\n.lw-saas [data-status]{color:var(--text-primary);font-weight:600}\n.lw-saas .saas-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\n.lw-saas .saas-metrics div{padding:16px;border:1px solid var(--border);border-radius:8px;background:var(--bg-panel)}\n.lw-saas dt{color:var(--text-secondary);font-size:.85rem}\n.lw-saas dd{margin:8px 0 0;font-size:1.35rem;font-weight:700;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}\n.lw-saas .saas-table-wrap{max-width:100%;overflow-x:auto;margin:20px 0;border:1px solid var(--border);border-radius:8px}\n.lw-saas table{border-collapse:collapse;width:100%;font-size:.86rem}\n.lw-saas table th,.lw-saas table td{width:auto!important;padding:12px;min-width:120px;word-break:normal;overflow-wrap:normal;text-align:right;border-bottom:1px solid var(--border);color:var(--text-primary);white-space:normal}\n.lw-saas table th{background:var(--bg-panel)}\n.lw-saas table th[scope=row],.lw-saas table thead th:first-child{position:sticky;left:0;z-index:1;border-right:1px solid var(--border)}\n.lw-saas caption{text-align:left;padding:12px;font-weight:700;color:var(--text-primary)}\n.lw-saas .saas-chart{margin:20px 0;color:var(--accent)}\n.lw-saas .saas-chart svg{display:block;width:100%;height:auto}\n.lw-saas figcaption{color:var(--text-secondary);font-size:.85rem}\n.lw-saas .saas-related{display:flex;gap:10px;flex-wrap:wrap;list-style:none;padding:0}\n.lw-saas .saas-related li{list-style:none;margin:0}\n.lw-saas .saas-related a{display:block;border:1px solid var(--border);border-radius:6px;padding:8px 12px}\n.site-container main:has(.lw-saas) .profile-panel{flex:1 1 0;max-width:none;min-width:0}\n.site-container main:has(.lw-saas) .info-panel{flex:0 0 220px;max-width:220px}\n@media(max-width:900px){.site-container main:has(.lw-saas) .profile-panel,.site-container main:has(.lw-saas) .info-panel{flex:auto;width:100%;max-width:100%}}\n@media(max-width:540px){.lw-saas .saas-fields,.lw-saas .saas-metrics{grid-template-columns:1fr}.lw-saas fieldset{padding:12px}}\n<\/style>\n<p><script>(function(scope){'use strict';\nconst number=raw=>{const s=String(raw??'').trim().replace(\/\\s\/g,'').replace(',','.');return \/^(?:\\d+(?:\\.\\d*)?|\\.\\d+)$\/.test(s)&&Number.isFinite(Number(s))?Number(s):NaN;};\nfunction acquisition(v){const leads=v.visits*v.signup\/100,activated=leads*v.activation\/100,payers=activated*v.paid\/100,cost=v.spend+v.hours*v.hour,margin=v.price-v.variable,rate=v.signup\/100*v.activation\/100*v.paid\/100,cac=payers>0?cost\/payers:null;\nreturn {summary:{leads,activated,payers,acquisitionCost:cost,cac,payback:cac!==null&&margin>0?cac\/margin:null,requiredVisits:v.target===0?0:rate>0?Math.ceil(v.target\/rate):null},columns:['paidRate','payers','cac','payback','contribution'],rows:[0.5,1,1.5].map(x=>{const pct=Math.min(100,v.paid*x),n=activated*pct\/100,c=n>0?cost\/n:null;return [pct,n,c,c!==null&&margin>0?c\/margin:null,n*margin];})};}\nfunction cashflow(v){let monthly=v.customers,cash=v.cash,first=null;const cohorts=[],rows=[],annualPrice=v.price*12*(1-v.discount\/100);let minimum=v.cash;\nfor(let month=1;month<=v.months;month++){monthly=monthly*(1-v.churn\/100)+v.newCustomers*(1-v.annualShare\/100);let renewed=0;\nfor(const cohort of cohorts){if((month-cohort.start)%12===0){cohort.n*=v.renewal\/100;renewed+=cohort.n;}}\nconst fresh=v.newCustomers*v.annualShare\/100;cohorts.push({start:month,n:fresh});const annual=cohorts.reduce((sum,c)=>sum+c.n,0),annualBills=renewed+fresh;\nconst receipts=monthly*v.price+annualBills*annualPrice,refunds=receipts*v.refunds\/100,fees=receipts*v.fee\/100+(monthly+annualBills)*v.flat;\nconst outflow=fees+(monthly+annual)*v.variable+v.fixed+(month===1?v.setup:0),net=receipts-refunds-outflow;cash+=net;minimum=Math.min(minimum,cash);if(cash<0&#038;&#038;first===null)first=month;\nrows.push([month,monthly,annual,receipts,refunds,outflow,net,cash,monthly*v.price+annual*annualPrice\/12]);}\nreturn {summary:{finalCash:cash,minimumCash:Math.min(...rows.map(r=>r[7])),firstShortfall:first===null?'none':first,finalMRR:rows.at(-1)[8]},columns:['month','monthlyCustomers','annualCustomers','receipts','refunds','outflow','netCash','closingCash','mrr'],rows};}\nfunction aibudget(v){const attempt=(v.inputTokens*((1-v.cached\/100)*v.inputRate+v.cached\/100*v.cacheRate)+v.outputTokens*v.outputRate)\/1e6+v.overhead,request=attempt*(1+v.retries\/100),usable=v.budget*(1-v.reserve\/100);\nreturn {summary:{attemptCost:attempt,requestCost:request,usableBudget:usable,safeRequests:request>0?Math.floor(usable\/request):'unbounded'},columns:['scenario','requests','attemptsTotal','perCustomer','totalCost','remaining'],rows:[1,2,v.spike].map(x=>{const n=v.requests*x,cost=n*request;return [x+'\u00d7',n,n*v.customers*(1+v.retries\/100),cost,cost*v.customers,usable-cost];})};}\nfunction support(v){const perPerson=v.hours*v.utilization\/100;\nconst calc=rate=>{const tickets=v.customers*v.tickets*(1-rate\/100),hours=tickets*v.minutes\/60*(1+v.reopen\/100),staff=Math.ceil(hours\/perPerson);return {tickets,hours,staff};};const main=calc(v.selfserve),capacity=v.staff*perPerson,cost=v.staff*v.hours*v.hour+v.fixed;\nreturn {summary:{tickets:main.tickets,requiredHours:main.hours,capacity,neededStaff:main.staff,spareHours:capacity-main.hours,teamCost:cost,perCustomerSupport:v.customers>0?cost\/v.customers:null},columns:['avoidRate','tickets','requiredHours','neededStaff','requiredStaffCost'],rows:[0,v.selfserve,Math.min(100,v.selfserve+20)].map(rate=>{const r=calc(rate);return [rate,r.tickets,r.hours,r.staff,r.staff*v.hours*v.hour+v.fixed];})};}\nconst api={number,acquisition,cashflow,aibudget,support};if(typeof module!=='undefined'&&module.exports)module.exports=api;else scope.LWSaasMath=api;\n})(typeof window!=='undefined'?window:globalThis);<\/script><\/p>\n<div class=\"lw-saas\" id=\"saas-support\">\n<p>Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.<\/p>\n<p class=\"saas-note\">Wszystkie kwoty w tej samej walucie, bez VAT. Przyk\u0142adowe warto\u015bci to za\u0142o\u017cenia, a nie cenniki dostawc\u00f3w. Dane i obliczenia pozostaj\u0105 w przegl\u0105darce.<\/p>\n<p><a href=\"\/blog\/pl\/narzedzia\/#saas\">Wszystkie narz\u0119dzia SaaS<\/a><\/p>\n<form novalidate>\n<fieldset>\n<legend>Wsp\u00f3lne za\u0142o\u017cenia<\/legend>\n<div class=\"saas-fields\">\n<label for=\"saas-support-customers\">Aktywni klienci<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-customers\" name=\"customers\" value=\"500\"><\/label><br \/>\n<label for=\"saas-support-tickets\">Zg\u0142oszenia na klienta \/ miesi\u0105c<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-tickets\" name=\"tickets\" value=\"0.4\"><\/label><br \/>\n<label for=\"saas-support-minutes\">Minuty obs\u0142ugi zg\u0142oszenia<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-minutes\" name=\"minutes\" value=\"15\"><\/label><br \/>\n<label for=\"saas-support-reopen\">Dodatkowy nak\u0142ad na kolejne pytania (%)<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-reopen\" name=\"reopen\" value=\"10\"><\/label><br \/>\n<label for=\"saas-support-selfserve\">Zg\u0142oszenia unikni\u0119te dzi\u0119ki samoobs\u0142udze (%)<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-selfserve\" name=\"selfserve\" value=\"20\"><\/label><br \/>\n<label for=\"saas-support-hours\">Dost\u0119pne godziny pracy na osob\u0119 \/ miesi\u0105c<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-hours\" name=\"hours\" value=\"80\"><\/label><br \/>\n<label for=\"saas-support-utilization\">Udzia\u0142 dost\u0119pny na obs\u0142ug\u0119 zg\u0142osze\u0144 (%)<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-utilization\" name=\"utilization\" value=\"70\"><\/label><br \/>\n<label for=\"saas-support-staff\">Zaplanowane osoby<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-staff\" name=\"staff\" value=\"1\"><\/label><br \/>\n<label for=\"saas-support-hour\">Koszt personelu na p\u0142atn\u0105 godzin\u0119 pracy<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-hour\" name=\"hour\" value=\"30\"><\/label><br \/>\n<label for=\"saas-support-fixed\">Miesi\u0119czny koszt oprogramowania wsparcia<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" data-rc-private data-mp-mask id=\"saas-support-fixed\" name=\"fixed\" value=\"50\"><\/label>\n<\/div>\n<\/fieldset>\n<div class=\"saas-actions\"><button type=\"submit\">Oblicz<\/button><button type=\"button\" data-reset>Warto\u015bci przyk\u0142adowe<\/button><\/div>\n<\/form>\n<p role=\"alert\" data-status id=\"saas-support-status\">\n<div data-result data-rc-private data-mp-mask aria-live=\"polite\" aria-atomic=\"false\"><\/div>\n<p><button type=\"button\" data-csv disabled>Pobierz CSV<\/button><\/p>\n<h2>Model oblicze\u0144 i za\u0142o\u017cenia<\/h2>\n<p>Zg\u0142oszenia = klienci \u00d7 zg\u0142oszenia na klienta \u00d7 (1 \u2212 udzia\u0142 samoobs\u0142ugi). Wymagane godziny obs\u0142ugi = zg\u0142oszenia \u00d7 minuty \/ 60 \u00d7 (1 + narzut kolejnych pyta\u0144). Produktywne godziny osoby = dost\u0119pne godziny pracy \u00d7 udzia\u0142 obs\u0142ugi. Zapotrzebowanie na personel jest zaokr\u0105glane w g\u00f3r\u0119 do pe\u0142nych os\u00f3b. Koszt obecnego zespo\u0142u = osoby \u00d7 dost\u0119pne p\u0142atne godziny \u00d7 koszt godziny + oprogramowanie. Tabela zmienia udzia\u0142 samoobs\u0142ugi przy sta\u0142ej liczbie klient\u00f3w. Wolne godziny nie gwarantuj\u0105 czasu odpowiedzi; model \u015brednich pomija szczyty nap\u0142ywu i kolejki.<\/p>\n<h2>Pozosta\u0142e narz\u0119dzia SaaS<\/h2>\n<ul class=\"saas-related\">\n<li><a href=\"\/blog\/pl\/narzedzia\/saas-profitability-calculator\/\">Kalkulator rentowno\u015bci SaaS<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/saas-pricing-model-simulator\/\">Symulator modeli cenowych SaaS<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/automation-cost-comparator\/\">Por\u00f3wnanie koszt\u00f3w automatyzacji<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/mrr-churn-simulator\/\">Kalkulator MRR i churn<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/digital-product-profit-calculator\/\">Kalkulator zysku produkt\u00f3w cyfrowych<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/saas-customer-acquisition-calculator\/\">Kalkulator pozyskiwania klient\u00f3w SaaS<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/saas-cashflow-runway-simulator\/\">Symulator p\u0142ynno\u015bci i runway SaaS<\/a><\/li>\n<li><a href=\"\/blog\/pl\/narzedzia\/ai-usage-budget-calculator\/\">Kalkulator bud\u017cetu zu\u017cycia AI<\/a><\/li>\n<\/ul>\n<h2>\u0179r\u00f3d\u0142a i definicje<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.stripe.com\/customer-management\" rel=\"noopener\">Stripe: customer portal<\/a><\/li>\n<li><a href=\"https:\/\/www.ycombinator.com\/blog\/balancing-b2b-sales\/\" rel=\"noopener\">Y Combinator: balancing B2B sales<\/a><\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>FAQ<\/h2>\n<h3>Czy dane wej\u015bciowe s\u0105 przesy\u0142ane?<\/h3>\n<p>Kalkulator przetwarza dane lokalnie w przegl\u0105darce. Pliki CSV r\u00f3wnie\u017c powstaj\u0105 lokalnie. Strona nie zapisuje danych scenariusza na serwerze.<\/p>\n<h3>Jakie ograniczenia ma model?<\/h3>\n<p>Samoobs\u0142uga oznacza za\u0142o\u017cony udzia\u0142 unikni\u0119tych zg\u0142osze\u0144, bez pomiaru skuteczno\u015bci. Koszty personelu obejmuj\u0105 r\u00f3wnie\u017c zaplanowany czas poza obs\u0142ug\u0105 zg\u0142osze\u0144. Wdro\u017cenie i utrzymanie dokumentacji s\u0105 dodatkowymi kosztami. SLA wymaga tak\u017ce planowania godzin dost\u0119pno\u015bci i szczytowego obci\u0105\u017cenia.<\/p>\n<\/div>\n<p><script type=\"application\/json\" data-config>{\"kind\": \"support\", \"slug\": \"saas-support-capacity-planner\", \"title\": \"Planer wydajno\u015bci wsparcia SaaS\", \"locale\": \"pl-PL\", \"fields\": [{\"key\": \"customers\", \"value\": 500, \"label\": \"Aktywni klienci\", \"min\": 0, \"max\": 1000000000.0, \"integer\": true, \"group\": \"common\"}, {\"key\": \"tickets\", \"value\": 0.4, \"label\": \"Zg\u0142oszenia na klienta \/ miesi\u0105c\", \"min\": 0, \"max\": 1000000000.0, \"integer\": false, \"group\": \"common\"}, {\"key\": \"minutes\", \"value\": 15, \"label\": \"Minuty obs\u0142ugi zg\u0142oszenia\", \"min\": 0, \"max\": 1000000000.0, \"integer\": false, \"group\": \"common\"}, {\"key\": \"reopen\", \"value\": 10, \"label\": \"Dodatkowy nak\u0142ad na kolejne pytania (%)\", \"min\": 0, \"max\": 1000, \"integer\": false, \"group\": \"common\"}, {\"key\": \"selfserve\", \"value\": 20, \"label\": \"Zg\u0142oszenia unikni\u0119te dzi\u0119ki samoobs\u0142udze (%)\", \"min\": 0, \"max\": 100, \"integer\": false, \"group\": \"common\"}, {\"key\": \"hours\", \"value\": 80, \"label\": \"Dost\u0119pne godziny pracy na osob\u0119 \/ miesi\u0105c\", \"min\": 0.01, \"max\": 1000000.0, \"integer\": false, \"group\": \"common\"}, {\"key\": \"utilization\", \"value\": 70, \"label\": \"Udzia\u0142 dost\u0119pny na obs\u0142ug\u0119 zg\u0142osze\u0144 (%)\", \"min\": 0.01, \"max\": 100, \"integer\": false, \"group\": \"common\"}, {\"key\": \"staff\", \"value\": 1, \"label\": \"Zaplanowane osoby\", \"min\": 0, \"max\": 10000, \"integer\": true, \"group\": \"common\"}, {\"key\": \"hour\", \"value\": 30, \"label\": \"Koszt personelu na p\u0142atn\u0105 godzin\u0119 pracy\", \"min\": 0, \"max\": 1000000000.0, \"integer\": false, \"group\": \"common\"}, {\"key\": \"fixed\", \"value\": 50, \"label\": \"Miesi\u0119czny koszt oprogramowania wsparcia\", \"min\": 0, \"max\": 1000000000.0, \"integer\": false, \"group\": \"common\"}], \"labels\": {\"revenue\": \"Przych\u00f3d miesi\u0119czny\", \"cost\": \"Koszt miesi\u0119czny\", \"profit\": \"Zysk miesi\u0119czny\", \"margin\": \"Mar\u017ca pokrycia na klienta \/ sprzeda\u017c\", \"breakEven\": \"Pr\u00f3g rentowno\u015bci: klienci \/ sprzeda\u017ce\", \"minimumPrice\": \"Cena netto pokrywaj\u0105ca koszty\", \"scenario\": \"Wolumen\", \"customers\": \"Klienci\", \"sales\": \"Sprzeda\u017ce\", \"attempts\": \"Pr\u00f3by miesi\u0119cznie\", \"outcomes\": \"Oczekiwane udane wyniki\", \"packs\": \"Pakiety kredyt\u00f3w miesi\u0119cznie\", \"model\": \"Model cenowy\", \"fees\": \"Op\u0142aty p\u0142atnicze\", \"operatingCost\": \"Koszty pr\u00f3b i koszty sta\u0142e\", \"subscription\": \"Abonament\", \"credits\": \"Pakiety kredyt\u00f3w\", \"outcome\": \"Op\u0142ata za wynik\", \"platform\": \"Platforma\", \"billableUnits\": \"Jednostki rozliczeniowe\", \"fixedPlanHosting\": \"Plan i hosting\", \"overage\": \"Koszt nadwy\u017cki\", \"maintenance\": \"Koszt utrzymania\", \"setupMonthly\": \"Wdro\u017cenie miesi\u0119cznie\", \"apiCost\": \"Koszt zewn\u0119trznego API\", \"total\": \"Koszt \u0142\u0105czny miesi\u0119cznie\", \"perRun\": \"Koszt pierwotnego uruchomienia\", \"n8n\": \"n8n\", \"make\": \"Make\", \"code\": \"W\u0142asny kod\", \"initialMRR\": \"Pocz\u0105tkowy MRR\", \"finalMRR\": \"Ko\u0144cowy MRR\", \"annualRunRate\": \"Ko\u0144cowy ARR (MRR \u00d7 12)\", \"finalCustomers\": \"Oczekiwana ko\u0144cowa liczba klient\u00f3w\", \"month\": \"Miesi\u0105c\", \"openingMRR\": \"MRR na pocz\u0105tku miesi\u0105ca\", \"lostMRR\": \"MRR utracony przez rezygnacje\", \"newMRR\": \"Nowy MRR\", \"expansionMRR\": \"Wzrost MRR\", \"contractionMRR\": \"Spadek MRR\", \"closingMRR\": \"MRR na koniec miesi\u0105ca\", \"customersExpected\": \"Oczekiwana liczba klient\u00f3w\", \"nrr\": \"NRR bez nowych klient\u00f3w\", \"grossRevenue\": \"Przych\u00f3d przed zwrotami\", \"refundValue\": \"Zwroty\", \"retainedRevenue\": \"Zachowany przych\u00f3d\", \"leads\": \"Rejestracje \/ pro\u015bby o demo\", \"activated\": \"Aktywowani potencjalni klienci\", \"payers\": \"Oczekiwani nowi p\u0142ac\u0105cy\", \"acquisitionCost\": \"Nak\u0142ad pozyskania\", \"cac\": \"Koszt nowego klienta (CAC)\", \"payback\": \"Zwrot w miesi\u0105cach\", \"requiredVisits\": \"Wizyty wymagane do celu\", \"paidRate\": \"Udzia\u0142 p\u0142atno\u015bci (%)\", \"contribution\": \"Miesi\u0119czna mar\u017ca pokrycia nowych klient\u00f3w\", \"finalCash\": \"Saldo ko\u0144cowe\", \"minimumCash\": \"Najni\u017csze saldo miesi\u0119czne\", \"firstShortfall\": \"Pierwszy miesi\u0105c z ujemnym saldem\", \"none\": \"Brak ujemnego salda miesi\u0119cznego\", \"monthlyCustomers\": \"Klienci miesi\u0119czni\", \"annualCustomers\": \"Klienci roczni\", \"receipts\": \"Wp\u0142ywy\", \"refunds\": \"Zwroty\", \"outflow\": \"Op\u0142aty i wydatki dzia\u0142alno\u015bci\", \"netCash\": \"Przep\u0142yw netto\", \"closingCash\": \"Saldo ko\u0144ca miesi\u0105ca\", \"mrr\": \"MRR aktywnych um\u00f3w\", \"attemptCost\": \"Koszt pr\u00f3by\", \"requestCost\": \"Koszt pierwotnego zapytania\", \"usableBudget\": \"Dost\u0119pny bud\u017cet na klienta\", \"safeRequests\": \"Limit kosztowy: pierwotne zapytania \/ klienta\", \"unbounded\": \"Brak sko\u0144czonego limitu kosztowego\", \"requests\": \"Zapytania na klienta\", \"attemptsTotal\": \"Pr\u00f3by \u0142\u0105cznie\", \"perCustomer\": \"Koszt AI na klienta\", \"totalCost\": \"\u0141\u0105czny koszt AI\", \"remaining\": \"Pozosta\u0142y dost\u0119pny bud\u017cet na klienta\", \"tickets\": \"Pozosta\u0142e zg\u0142oszenia\", \"requiredHours\": \"Wymagane godziny obs\u0142ugi\", \"capacity\": \"Dost\u0119pne godziny obs\u0142ugi\", \"neededStaff\": \"Wymagane osoby\", \"spareHours\": \"Wolne godziny \/ ujemny niedob\u00f3r\", \"teamCost\": \"Miesi\u0119czny koszt zaplanowanego zespo\u0142u\", \"perCustomerSupport\": \"Koszt zespo\u0142u na klienta\", \"avoidRate\": \"Udzia\u0142 samoobs\u0142ugi (%)\", \"requiredStaffCost\": \"Koszt wymaganego zespo\u0142u\"}, \"ui\": {\"calculate\": \"Oblicz\", \"reset\": \"Warto\u015bci przyk\u0142adowe\", \"csv\": \"Pobierz CSV\", \"results\": \"Wynik\", \"table\": \"Scenariusze i obliczenia\", \"unavailable\": \"Brak mo\u017cliwo\u015bci obliczenia\", \"invalid\": \"Nieprawid\u0142owa warto\u015b\u0107. Dozwolony zakres pola\", \"integer\": \"(liczba ca\u0142kowita)\", \"shares\": \"Trzy udzia\u0142y klient\u00f3w musz\u0105 sumowa\u0107 si\u0119 do 100%.\", \"overflow\": \"Dane prowadz\u0105 do zbyt du\u017cych warto\u015bci.\", \"changed\": \"Dane zmienione. Nowe obliczenie aktualizuje wynik.\", \"undefinedHelp\": \"Samoobs\u0142uga oznacza za\u0142o\u017cony udzia\u0142 unikni\u0119tych zg\u0142osze\u0144, bez pomiaru skuteczno\u015bci. Koszty personelu obejmuj\u0105 r\u00f3wnie\u017c zaplanowany czas poza obs\u0142ug\u0105 zg\u0142osze\u0144. Wdro\u017cenie i utrzymanie dokumentacji s\u0105 dodatkowymi kosztami. SLA wymaga tak\u017ce planowania godzin dost\u0119pno\u015bci i szczytowego obci\u0105\u017cenia.\", \"title\": \"Narz\u0119dzie\", \"assumptions\": \"Za\u0142o\u017cenia\", \"chart\": \"Zmiana MRR; dok\u0142adne warto\u015bci w tabeli\", \"pricingChart\": \"Zysk miesi\u0119czny wed\u0142ug modelu cenowego; dok\u0142adne warto\u015bci w tabeli\", \"method\": \"Model oblicze\u0144 i za\u0142o\u017cenia\", \"sources\": \"\u0179r\u00f3d\u0142a i definicje\", \"faq1\": \"Czy dane wej\u015bciowe s\u0105 przesy\u0142ane?\", \"faq1a\": \"Kalkulator przetwarza dane lokalnie w przegl\u0105darce. Pliki CSV r\u00f3wnie\u017c powstaj\u0105 lokalnie. Strona nie zapisuje danych scenariusza na serwerze.\", \"faq2\": \"Jakie ograniczenia ma model?\", \"related\": \"Pozosta\u0142e narz\u0119dzia SaaS\", \"all\": \"Wszystkie narz\u0119dzia SaaS\"}}<\/script><\/div>\n<p><script>(function(){\n'use strict';\nconst root=document.currentScript.previousElementSibling;\nconst c=JSON.parse(root.querySelector('[data-config]').textContent);\nif(root.dataset.ready)return;root.dataset.ready='1';\nconst form=root.querySelector('form'), result=root.querySelector('[data-result]'), status=root.querySelector('[data-status]'), download=root.querySelector('[data-csv]');\nlet exportRows=null;\nconst fmt=new Intl.NumberFormat(c.locale,{maximumFractionDigits:2});\nconst countFmt=new Intl.NumberFormat(c.locale,{maximumFractionDigits:2});\nconst preciseFmt=new Intl.NumberFormat(c.locale,{maximumFractionDigits:6});\nconst safeMinimum=value=>Math.ceil(value*100)\/100;\nconst e=(tag,text)=>{const n=document.createElement(tag);if(text!==undefined)n.textContent=text;return n;};\nconst label=k=>c.labels[k]||k;\nfunction display(value,key){\n if(value===null)return c.ui.unavailable;\n if(typeof value==='string')return label(value);\n if(key==='minimumPrice')value=safeMinimum(value);\n if(['attemptCost','requestCost','perRun','margin'].includes(key))return preciseFmt.format(value);\n return (['customers','sales','attempts','outcomes','packs','breakEven','finalCustomers','customersExpected','billableUnits','month'].includes(key)?countFmt:fmt).format(value)+(key==='nrr'?' %':'');\n}\nfunction calculate(){\n status.textContent='';result.replaceChildren();download.disabled=true;exportRows=null;\n root.querySelectorAll('[aria-invalid]').forEach(n=>{n.removeAttribute('aria-invalid');n.removeAttribute('aria-describedby');});\n const v={};let bad=null;\n for(const f of c.fields){\n  const input=form.elements.namedItem(f.key), n=LWSaasMath.number(input.value);\n  if(!Number.isFinite(n)||n<f.min||n>f.max||(f.integer&&!Number.isInteger(n))){\n   input.setAttribute('aria-invalid','true');input.setAttribute('aria-describedby',status.id);\n   if(!bad)bad={input,field:f};\n  }v[f.key]=n;\n }\n if(bad){\n  status.textContent=c.ui.invalid+' '+bad.field.label+': '+bad.field.min+'\u2013'+bad.field.max+(bad.field.integer?' '+c.ui.integer:'');\n  bad.input.focus();return;\n }\n let data;\n try{data=LWSaasMath[c.kind](v);}catch(error){status.textContent=c.ui.shares;return;}\n const values=[...Object.values(data.summary),...data.rows.flat()];\n if(values.some(n=>typeof n==='number'&&!Number.isFinite(n))){status.textContent=c.ui.overflow;return;}\n const h=e('h2',c.ui.results);result.append(h);\n const cards=e('dl');cards.className='saas-metrics';\n for(const [key,value]of Object.entries(data.summary)){\n  const box=e('div');box.append(e('dt',label(key)),e('dd',display(value,key)));cards.append(box);\n }result.append(cards);\n if(c.kind==='mrr'||c.kind==='pricing'){\n  const index=c.kind==='mrr'?6:4;\n  const points=data.rows.map(row=>row[index]);\n  const chart=e('figure');chart.className='saas-chart';\n  const svg=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','svg');\n  svg.setAttribute('viewBox','0 0 600 160');svg.setAttribute('role','img');svg.setAttribute('aria-label',c.ui.chart);\n  const max=Math.max(1,...points.map(Math.abs));\n  if(c.kind==='mrr'){\n   const path=document.createElementNS(svg.namespaceURI,'polyline');\n   path.setAttribute('points',points.map((n,i)=>(20+i*560\/Math.max(1,points.length-1))+','+(140-n\/max*120)).join(' '));\n   path.setAttribute('fill','none');path.setAttribute('stroke','currentColor');path.setAttribute('stroke-width','3');svg.append(path);\n  }else{\n   for(let i=0;i<points.length;i++){\n    const rect=document.createElementNS(svg.namespaceURI,'rect');\n    rect.setAttribute('x',30+i*195);rect.setAttribute('width','140');\n    rect.setAttribute('y',points[i]>=0?80-points[i]\/max*60:80);\n    rect.setAttribute('height',Math.abs(points[i])\/max*60);rect.setAttribute('fill','currentColor');\n    const title=document.createElementNS(svg.namespaceURI,'title');title.textContent=label(data.rows[i][0])+': '+display(points[i],'profit');rect.append(title);svg.append(rect);\n   }\n   const axis=document.createElementNS(svg.namespaceURI,'path');axis.setAttribute('d','M20 80H580');axis.setAttribute('stroke','currentColor');svg.append(axis);\n  }\n  chart.append(svg,e('figcaption',c.ui.chart));result.append(chart);\n }\n const scroll=e('div');scroll.className='saas-table-wrap';scroll.tabIndex=0;\n scroll.setAttribute('role','region');scroll.setAttribute('aria-label',c.ui.table);\n const table=e('table');table.append(e('caption',c.ui.table));\n const head=e('thead'), hr=e('tr');\n data.columns.forEach(k=>{const th=e('th',label(k));th.scope='col';hr.append(th);});head.append(hr);table.append(head);\n const body=e('tbody');\n data.rows.forEach(row=>{const tr=e('tr');row.forEach((value,i)=>{const cell=e(i===0?'th':'td',display(value,data.columns[i]));if(i===0)cell.scope='row';tr.append(cell);});body.append(tr);});\n table.append(body);scroll.append(table);result.append(scroll);\n if(Object.values(data.summary).includes(null)||data.rows.flat().includes(null))result.append(e('p',c.ui.undefinedHelp));\n exportRows=[[c.ui.title,c.title],[c.ui.assumptions]];\n for(const f of c.fields)exportRows.push([f.label,v[f.key]]);\n exportRows.push([],['',c.ui.results]);\n for(const [key,value]of Object.entries(data.summary))exportRows.push([label(key),value===null?c.ui.unavailable:key==='minimumPrice'?safeMinimum(value):value]);\n exportRows.push([],data.columns.map(label),...data.rows.map(row=>row.map(x=>typeof x==='string'?label(x):x===null?c.ui.unavailable:x)));\n download.disabled=false;\n root.dispatchEvent(new CustomEvent('saas-calculated',{detail:data}));\n}\nform.addEventListener('submit',event=>{event.preventDefault();calculate();});\nform.addEventListener('input',()=>{exportRows=null;download.disabled=true;status.textContent=c.ui.changed;result.replaceChildren();});\nroot.querySelector('[data-reset]').addEventListener('click',()=>{form.reset();calculate();});\ndownload.addEventListener('click',()=>{\n if(!exportRows)return;\n const csv='\\uFEFF'+exportRows.map(row=>row.map(x=>'\"'+String(x).replace(\/\"\/g,'\"\"')+'\"').join(';')).join('\\r\\n');\n const url=URL.createObjectURL(new Blob([csv],{type:'text\/csv;charset=utf-8'}));\n const a=e('a');a.href=url;a.download=c.slug+'.csv';root.append(a);a.click();a.remove();setTimeout(()=>URL.revokeObjectURL(url),1000);\n});\nroot._saasCalculate=calculate;\ncalculate();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":9,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[93056],"class_list":["post-21454","page","type-page","status-publish","hentry","tag-saas-tools-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/saas-support-capacity-planner\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/saas-support-capacity-planner\\\/\",\"name\":\"Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-05T15:09:13+00:00\",\"description\":\"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/saas-support-capacity-planner\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/saas-support-capacity-planner\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/saas-support-capacity-planner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Planer wydajno\u015bci wsparcia SaaS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik","description":"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/","og_locale":"en_US","og_type":"article","og_title":"Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik","og_description":"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/","name":"Planer wydajno\u015bci wsparcia SaaS | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-10-05T15:09:13+00:00","description":"Planowanie liczby zg\u0142osze\u0144, czasu obs\u0142ugi, dost\u0119pnej wydajno\u015bci i koszt\u00f3w wsparcia na klienta.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/saas-support-capacity-planner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-3\/"},{"@type":"ListItem","position":3,"name":"Planer wydajno\u015bci wsparcia SaaS"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=21454"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21454\/revisions"}],"predecessor-version":[{"id":21466,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/21454\/revisions\/21466"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=21454"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=21454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}