{"id":13052,"date":"2026-08-28T13:39:17","date_gmt":"2026-08-28T11:39:17","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/conversion-window-audience-duration-calculator\/"},"modified":"2026-08-28T13:39:17","modified_gmt":"2026-08-28T11:39:17","slug":"conversion-window-audience-duration-calculator","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/","title":{"rendered":"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Drei Einstellungen entscheiden \u00fcber Zahlen, die wie Ergebnisse aussehen. Ein Konversionsfenster entscheidet, wie viele der geschehenen Verk\u00e4ufe gez\u00e4hlt werden, nicht wie viele geschehen sind. Ein zweites, k\u00fcrzeres Fenster auf einer Ber\u00fchrungsart entfernt alles, was danach eintrifft. Und eine Mitgliedsdauer wird mit dem t\u00e4glichen Zulauf multipliziert &#8211; sie zu halbieren stutzt eine Liste also nicht, es halbiert sie. Alle drei sind Rechenwege, und alle drei lassen sich ausrechnen, bevor die Einstellung ge\u00e4ndert wird.<\/p>\n<div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 14px;\">\n<div>\n            <label for=\"kf-taeglich\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Konversionen je Tag, die am Ende zustande kommen<\/label><br \/>\n            <input id=\"kf-taeglich\" type=\"number\" min=\"0\" step=\"10\" value=\"500\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-median\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Median der Verz\u00f6gerung, Tage<\/label><br \/>\n            <input id=\"kf-median\" type=\"number\" min=\"0.1\" step=\"0.5\" value=\"7\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-fenstera\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Fenster A, Tage<\/label><br \/>\n            <input id=\"kf-fenstera\" type=\"number\" min=\"1\" max=\"540\" step=\"1\" value=\"30\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-fensterb\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Fenster B, Tage<\/label><br \/>\n            <input id=\"kf-fensterb\" type=\"number\" min=\"1\" max=\"540\" step=\"1\" value=\"90\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<\/p><\/div>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"kf-verteilung\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Gemessene Verz\u00f6gerung, je Zeile: Tag, Konversionen<\/label><br \/>\n        <textarea id=\"kf-verteilung\" rows=\"4\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace; font-size: 0.82rem;\"><\/textarea>\n    <\/div>\n<div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin-bottom: 14px;\">\n<div>\n            <label for=\"kf-anteilkurz\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Ber\u00fchrungen mit kurzem Fenster, %<\/label><br \/>\n            <input id=\"kf-anteilkurz\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"35\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-fensterkurz\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Kurzes Fenster, Tage<\/label><br \/>\n            <input id=\"kf-fensterkurz\" type=\"number\" min=\"1\" max=\"30\" step=\"1\" value=\"1\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-zulauf\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">T\u00e4glicher Zulauf in die Zielgruppe<\/label><br \/>\n            <input id=\"kf-zulauf\" type=\"number\" min=\"0\" step=\"100\" value=\"2000\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-dauera\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Mitgliedsdauer A, Tage<\/label><br \/>\n            <input id=\"kf-dauera\" type=\"number\" min=\"1\" max=\"10000\" step=\"1\" value=\"60\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<div>\n            <label for=\"kf-dauerb\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Mitgliedsdauer B, Tage<\/label><br \/>\n            <input id=\"kf-dauerb\" type=\"number\" min=\"1\" max=\"10000\" step=\"1\" value=\"540\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box;\">\n        <\/div>\n<\/p><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Bleibt das Feld f\u00fcr die Verz\u00f6gerung leer, rechnet das Werkzeug mit einem Exponentialmodell, in dem bis zum Median genau die H\u00e4lfte der Konversionen eingetroffen ist. Werden gemessene Daten eingef\u00fcgt, kommt das Modell gar nicht zum Einsatz &#8211; Tag 1 hei\u00dft: innerhalb des ersten Tages nach der Ber\u00fchrung, und ein Fenster von n Tagen erfasst jede Zeile bis einschlie\u00dflich Tag n.<\/p>\n<p>    <button id=\"kf-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Berechnen<\/button><\/p>\n<div id=\"kf-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Drei Einstellungen entscheiden \u00fcber Zahlen, die wie Ergebnisse aussehen. Ein Konversionsfenster entscheidet, wie viele der geschehenen Verk\u00e4ufe gez\u00e4hlt werden, nicht wie viele geschehen sind. Ein zweites, k\u00fcrzeres Fenster auf einer Ber\u00fchrungsart entfernt alles, was danach eintrifft. Und eine Mitgliedsdauer wird mit dem t\u00e4glichen Zulauf multipliziert - sie zu halbieren stutzt eine Liste also nicht, es halbiert sie. Alle drei sind Rechenwege, und alle drei lassen sich ausrechnen, bevor die Einstellung ge\u00e4ndert wird.\",\"label_taeglich\":\"Konversionen je Tag, die am Ende zustande kommen\",\"label_median\":\"Median der Verz\u00f6gerung, Tage\",\"label_verteilung\":\"Gemessene Verz\u00f6gerung, je Zeile: Tag, Konversionen\",\"label_fenstera\":\"Fenster A, Tage\",\"label_fensterb\":\"Fenster B, Tage\",\"label_anteilkurz\":\"Ber\u00fchrungen mit kurzem Fenster, %\",\"label_fensterkurz\":\"Kurzes Fenster, Tage\",\"label_zulauf\":\"T\u00e4glicher Zulauf in die Zielgruppe\",\"label_dauera\":\"Mitgliedsdauer A, Tage\",\"label_dauerb\":\"Mitgliedsdauer B, Tage\",\"modell_erklaerung\":\"Bleibt das Feld f\u00fcr die Verz\u00f6gerung leer, rechnet das Werkzeug mit einem Exponentialmodell, in dem bis zum Median genau die H\u00e4lfte der Konversionen eingetroffen ist. Werden gemessene Daten eingef\u00fcgt, kommt das Modell gar nicht zum Einsatz - Tag 1 hei\u00dft: innerhalb des ersten Tages nach der Ber\u00fchrung, und ein Fenster von n Tagen erfasst jede Zeile bis einschlie\u00dflich Tag n.\",\"knopf\":\"Berechnen\",\"h_fenster\":\"Was das Fenster \u00e4ndert\",\"zeile_quelle\":\"Grundlage der Rechnung\",\"quelle_verteilung\":\"die eingef\u00fcgten Verz\u00f6gerungsdaten\",\"quelle_modell\":\"das Exponentialmodell\",\"zeile_anteila\":\"Von Fenster A erfasst\",\"zeile_anteilb\":\"Von Fenster B erfasst\",\"zeile_gemeldeta\":\"Gemeldet je Tag, Fenster A\",\"zeile_gemeldetb\":\"Gemeldet je Tag, Fenster B\",\"zeile_unterschied\":\"Unterschied\",\"zeile_grenzertrag\":\"Was ein Tag mehr als A bringt\",\"h_tabelle\":\"\u00dcber die \u00fcblichen Fenster\",\"spalte_fenster\":\"Fenster\",\"spalte_anteil\":\"Erfasst\",\"spalte_gemeldet\":\"Gemeldet je Tag\",\"einheit_tage\":\"Tage\",\"h_geteilt\":\"Ein kurzes Fenster f\u00fcr einen Teil der Ber\u00fchrungen\",\"zeile_einheitlich\":\"Ein Fenster f\u00fcr alles\",\"zeile_gemischt\":\"Geteilte Fenster\",\"zeile_verlust\":\"F\u00e4llt weg\",\"h_bestand\":\"Zielgruppe im eingeschwungenen Zustand\",\"zeile_bestanda\":\"Listengr\u00f6\u00dfe bei Dauer A\",\"zeile_bestandb\":\"Listengr\u00f6\u00dfe bei Dauer B\",\"zeile_faktor\":\"Verh\u00e4ltnis\",\"h_hinweise\":\"Hinweise\",\"hinweis_keine_konversionen\":\"Ohne eine Tageszahl der Konversionen sind nur die Anteile aussagekr\u00e4ftig; die absoluten Spalten bleiben bei null.\",\"hinweis_verteilung_genutzt\":\"Die eingef\u00fcgten Verz\u00f6gerungsdaten werden verwendet. Das Medianfeld bleibt unber\u00fccksichtigt, solange diese Daten dastehen.\",\"hinweis_modell_genutzt\":\"Es wurden keine Verz\u00f6gerungsdaten eingef\u00fcgt, also rechnet das Exponentialmodell mit dem angegebenen Median.\",\"hinweis_kein_median\":\"Ohne einen Median \u00fcber null und ohne eingef\u00fcgte Daten gibt es nichts zu verteilen; jeder Anteil bleibt bei null.\",\"hinweis_zeilen_verworfen\":\"Diese Zeilen lie\u00dfen sich nicht als Tag und Anzahl lesen und blieben unber\u00fccksichtigt: {verworfen}\",\"hinweis_fenster_gleich\":\"Beide Fenster sind gleich lang, der Unterschied ist damit von vornherein null.\",\"hinweis_mehr_gezaehlt\":\"Der Unterschied besteht aus gemeldeten Konversionen, nicht aus zus\u00e4tzlichen Verk\u00e4ufen. Gekauft wurde in beiden F\u00e4llen dasselbe - das Fenster entscheidet nur, welche davon ein Bericht zeigen darf.\",\"hinweis_bruch\":\"Eine \u00c4nderung des Fensters teilt die Zeitreihe am Tag der \u00c4nderung. Zahlen davor und danach sind nicht vergleichbar, keine Neuberechnung stellt die \u00e4ltere Seite her, und ein Vorjahresvergleich \u00fcberspringt die Naht, ohne es zu sagen.\",\"hinweis_kurzfenster\":\"Das kurze Fenster gilt f\u00fcr einen Teil der Ber\u00fchrungen. Alles, was danach konvertiert, f\u00e4llt aus jeder Spalte heraus - nicht in eine eigene, und auch nicht in ein geringeres Attributionsgewicht.\",\"hinweis_bestand_faktor\":\"Im eingeschwungenen Zustand ist eine Liste ihr t\u00e4glicher Zulauf mal ihrer Dauer; das Verh\u00e4ltnis der Dauern ist damit das Verh\u00e4ltnis der Listengr\u00f6\u00dfen: Faktor {faktor} bei derselben Zielgruppe.\",\"hinweis_bestand_annahme\":\"Die Zahl f\u00fcr den eingeschwungenen Zustand setzt einen gleichbleibenden Zulauf voraus und Mitglieder, die genau am Ende der Dauer ausscheiden. Nach einer \u00c4nderung braucht die echte Liste eine volle Dauer, bis sie die neue Gr\u00f6\u00dfe erreicht.\",\"hinweis_schwanz\":\"Das Exponentialmodell legt die H\u00e4lfte der Konversionen innerhalb des Medians. Gemessene Verz\u00f6gerungen tragen meist einen schwereren Schwanz, lange Fenster gewinnen deshalb eher etwas mehr als hier gezeigt.\",\"dezimal\":\",\"};<\/p>\n<p>    var TABELLE = [1, 3, 7, 14, 30, 60, 90];<\/p>\n<p>    function zahl(wert, ersatz) {\n        var n = Number(wert);\n        return isFinite(n) ? n : ersatz;\n    }<\/p>\n<p>    \/**\n     * Liest eine eingefuegte Verzoegerungsverteilung: je Zeile ein Tag und die\n     * Zahl der Konversionen mit dieser Verzoegerung. Tag 1 heisst: innerhalb\n     * des ersten Tages nach der Beruehrung.\n     *\/\n    function verteilungLesen(text) {\n        var punkte = [];\n        var ungueltig = [];\n        var zeilen = String(text == null ? '' : text).split(\/\\r\\n|\\r|\\n\/);\n        zeilen.forEach(function (z) {\n            var roh = z.replace(\/^\\s+|\\s+$\/g, '');\n            if (!roh.length) { return; }\n            var t = roh.split(\/[,;\\t ]+\/);\n            if (t.length < 2) { ungueltig.push(roh); return; }\n            \/\/ Number('') ist 0, nicht NaN: eine Zeile aus lauter Trennzeichen\n            \/\/ waere sonst lautlos zum Datenpunkt (0,0) geworden. Deshalb wird\n            \/\/ die Schreibweise geprueft und nicht bloss das Ergebnis.\n            if (!\/^\\d+(\\.\\d+)?$\/.test(t[0]) || !\/^\\d+(\\.\\d+)?$\/.test(t[1])) { ungueltig.push(roh); return; }\n            var tag = Number(t[0]);\n            var anzahl = Number(t[1]);\n            if (!isFinite(tag) || !isFinite(anzahl) || tag < 0 || anzahl < 0) { ungueltig.push(roh); return; }\n            punkte.push({ tag: tag, anzahl: anzahl });\n        });\n        var gesamt = punkte.reduce(function (s, p) { return s + p.anzahl; }, 0);\n        return { punkte: punkte, gesamt: gesamt, ungueltig: ungueltig, brauchbar: punkte.length > 0 && gesamt > 0 };\n    }<\/p>\n<p>    \/** Anteil der Konversionen, die innerhalb von w Tagen eintreffen. *\/\n    function anteilAus(w, median, verteilung) {\n        var fenster = zahl(w, 0);\n        if (fenster <= 0) { return 0; }\n        if (verteilung &#038;&#038; verteilung.brauchbar) {\n            var drin = 0;\n            verteilung.punkte.forEach(function (p) { if (p.tag <= fenster) { drin += p.anzahl; } });\n            return drin \/ verteilung.gesamt;\n        }\n        var m = zahl(median, 0);\n        if (m <= 0) { return 0; }\n        \/\/ Exponentialmodell: bei w = Median ist genau die Haelfte eingetroffen.\n        return 1 - Math.pow(2, -fenster \/ m);\n    }\n\n    function rechnen(e) {\n        var ein = e || {};\n        var taeglich = Math.max(0, zahl(ein.taeglich, 0));\n        var median = Math.max(0, zahl(ein.median, 0));\n        var verteilung = verteilungLesen(ein.verteilung);\n        var fensterA = Math.max(0, Math.round(zahl(ein.fensterA, 0)));\n        var fensterB = Math.max(0, Math.round(zahl(ein.fensterB, 0)));\n        var fensterKurz = Math.max(0, Math.round(zahl(ein.fensterKurz, 0)));\n        var anteilKurz = Math.min(1, Math.max(0, zahl(ein.anteilKurz, 0) \/ 100));\n        var zulauf = Math.max(0, zahl(ein.zulauf, 0));\n        var dauerA = Math.max(0, Math.round(zahl(ein.dauerA, 0)));\n        var dauerB = Math.max(0, Math.round(zahl(ein.dauerB, 0)));\n\n        function anteil(w) { return anteilAus(w, median, verteilung); }\n\n        \/\/ --- Fenstervergleich ---\n        var aA = anteil(fensterA);\n        var aB = anteil(fensterB);\n        var gemeldetA = taeglich * aA;\n        var gemeldetB = taeglich * aB;\n        var unterschied = gemeldetB - gemeldetA;\n        var relativ = gemeldetA > 0 ? (gemeldetB \/ gemeldetA - 1) : null;<\/p>\n<p>        var tabelle = TABELLE.map(function (w) {\n            var a = anteil(w);\n            return { fenster: w, anteil: a, gemeldet: taeglich * a };\n        });\n        \/\/ Grenzertrag: was der jeweils naechste Tag ueber Fenster A hinaus bringt.\n        var grenzertrag = taeglich * (anteil(fensterA + 1) - aA);<\/p>\n<p>        \/\/ --- Geteilte Fenster: kurzes Fenster fuer einen Teil der Beruehrungen ---\n        var aKurz = anteil(fensterKurz);\n        var gemischt = anteilKurz * aKurz + (1 - anteilKurz) * aA;\n        var einheitlich = aA;\n        var verlustAnteil = einheitlich - gemischt;\n        var verlustAbsolut = taeglich * verlustAnteil;<\/p>\n<p>        \/\/ --- Zielgruppenbestand im eingeschwungenen Zustand ---\n        var bestandA = zulauf * dauerA;\n        var bestandB = zulauf * dauerB;\n        var faktor = dauerA > 0 ? dauerB \/ dauerA : null;<\/p>\n<p>        var hinweise = [];\n        if (taeglich <= 0) { hinweise.push('keine_konversionen'); }\n        if (verteilung.brauchbar) { hinweise.push('verteilung_genutzt'); }\n        else if (median > 0) { hinweise.push('modell_genutzt'); }\n        else { hinweise.push('kein_median'); }\n        if (verteilung.ungueltig.length) { hinweise.push('zeilen_verworfen'); }\n        if (fensterA === fensterB) { hinweise.push('fenster_gleich'); }\n        if (unterschied > 0) { hinweise.push('mehr_gezaehlt'); }\n        hinweise.push('bruch');\n        if (anteilKurz > 0 && fensterKurz < fensterA) { hinweise.push('kurzfenster'); }\n        if (faktor !== null &#038;&#038; faktor !== 1) { hinweise.push('bestand_faktor'); }\n        hinweise.push('bestand_annahme');\n        if (!verteilung.brauchbar &#038;&#038; median > 0) { hinweise.push('schwanz'); }<\/p>\n<p>        return {\n            anteilA: aA, anteilB: aB, anteilKurzFenster: aKurz,\n            gemeldetA: gemeldetA, gemeldetB: gemeldetB,\n            unterschied: unterschied, relativ: relativ,\n            grenzertrag: grenzertrag,\n            tabelle: tabelle,\n            gemischt: gemischt, einheitlich: einheitlich,\n            verlustAnteil: verlustAnteil, verlustAbsolut: verlustAbsolut,\n            bestandA: bestandA, bestandB: bestandB, faktor: faktor,\n            quelle: verteilung.brauchbar ? 'verteilung' : 'modell',\n            verworfen: verteilung.ungueltig,\n            hinweise: hinweise\n        };\n    }<\/p>\n<p>    \/\/ --- Pruefpunkt ----------------------------------------------------------\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.KF = {\n        rechnen: rechnen,\n        anteilAus: anteilAus,\n        verteilungLesen: verteilungLesen,\n        TABELLE: TABELLE,\n        T: T\n    };<\/p>\n<p>    \/\/ --- Oberflaeche ---------------------------------------------------------<\/p>\n<p>    var btn = document.getElementById('kf-btn');\n    var out = document.getElementById('kf-ausgabe');\n    if (!btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, text) {\n        var e = document.createElement(tag);\n        if (stil) { e.setAttribute('style', stil); }\n        if (text !== undefined) { e.textContent = text; }\n        return e;\n    }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    function komma(n, stellen) {\n        if (!isFinite(n)) { return '-'; }\n        return Number(n).toFixed(stellen === undefined ? 0 : stellen).replace('.', T.dezimal);\n    }\n    function prozent(a, stellen) {\n        if (a === null || !isFinite(a)) { return '-'; }\n        return komma(a * 100, stellen === undefined ? 1 : stellen) + ' %';\n    }<\/p>\n<p>    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.92rem; margin: 18px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace;';\n    var GUT = ' color: #7ee787;';\n    var WARN = ' color: #ffa94d;';<\/p>\n<p>    function gitter(spalten) {\n        return el('div', 'display: grid; grid-template-columns: ' + spalten + '; gap: 0 18px; align-items: baseline;');\n    }\n    function paar(g, name, w, stil) {\n        g.appendChild(el('div', ZELLE, name));\n        g.appendChild(el('div', ZELLE_WERT + (stil || ''), w));\n    }<\/p>\n<p>    btn.addEventListener('click', function () {\n        var erg = rechnen({\n            taeglich: wert('kf-taeglich'),\n            median: wert('kf-median'),\n            verteilung: wert('kf-verteilung'),\n            fensterA: wert('kf-fenstera'),\n            fensterB: wert('kf-fensterb'),\n            anteilKurz: wert('kf-anteilkurz'),\n            fensterKurz: wert('kf-fensterkurz'),\n            zulauf: wert('kf-zulauf'),\n            dauerA: wert('kf-dauera'),\n            dauerB: wert('kf-dauerb')\n        });\n        out.innerHTML = '';<\/p>\n<p>        \/\/ --- Fenstervergleich ---\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_fenster));\n        var g1 = gitter('auto auto');\n        paar(g1, T.zeile_quelle, erg.quelle === 'verteilung' ? T.quelle_verteilung : T.quelle_modell);\n        paar(g1, T.zeile_anteila, prozent(erg.anteilA));\n        paar(g1, T.zeile_anteilb, prozent(erg.anteilB));\n        paar(g1, T.zeile_gemeldeta, komma(erg.gemeldetA, 1));\n        paar(g1, T.zeile_gemeldetb, komma(erg.gemeldetB, 1));\n        paar(g1, T.zeile_unterschied, komma(erg.unterschied, 1)\n            + (erg.relativ === null ? '' : '  (' + prozent(erg.relativ) + ')'),\n            erg.unterschied > 0 ? WARN : '');\n        paar(g1, T.zeile_grenzertrag, komma(erg.grenzertrag, 2));\n        out.appendChild(g1);<\/p>\n<p>        \/\/ --- Tabelle ---\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_tabelle));\n        var tab = gitter('auto auto auto');\n        tab.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee);', T.spalte_fenster));\n        tab.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee);', T.spalte_anteil));\n        tab.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee);', T.spalte_gemeldet));\n        erg.tabelle.forEach(function (r) {\n            tab.appendChild(el('div', ZELLE_WERT, komma(r.fenster) + ' ' + T.einheit_tage));\n            tab.appendChild(el('div', ZELLE_WERT, prozent(r.anteil)));\n            tab.appendChild(el('div', ZELLE_WERT, komma(r.gemeldet, 1)));\n        });\n        out.appendChild(tab);<\/p>\n<p>        \/\/ --- Geteilte Fenster ---\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_geteilt));\n        var g2 = gitter('auto auto');\n        paar(g2, T.zeile_einheitlich, prozent(erg.einheitlich));\n        paar(g2, T.zeile_gemischt, prozent(erg.gemischt), erg.verlustAnteil > 0 ? WARN : '');\n        paar(g2, T.zeile_verlust, prozent(erg.verlustAnteil) + '  (' + komma(erg.verlustAbsolut, 1) + ')',\n            erg.verlustAnteil > 0 ? WARN : GUT);\n        out.appendChild(g2);<\/p>\n<p>        \/\/ --- Zielgruppenbestand ---\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_bestand));\n        var g3 = gitter('auto auto');\n        paar(g3, T.zeile_bestanda, komma(erg.bestandA));\n        paar(g3, T.zeile_bestandb, komma(erg.bestandB));\n        paar(g3, T.zeile_faktor, erg.faktor === null ? '-' : (komma(erg.faktor, 2) + ' x'),\n            erg.faktor !== null && erg.faktor !== 1 ? WARN : '');\n        out.appendChild(g3);<\/p>\n<p>        \/\/ --- Hinweise ---\n        out.appendChild(el('div', UEBERSCHRIFT, T.h_hinweise));\n        var liste = el('ul', 'margin: 0 0 0 18px; padding: 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem; line-height: 1.65;');\n        erg.hinweise.forEach(function (h) {\n            var text = T['hinweis_' + h];\n            if (!text) { return; }\n            text = text.replace('{faktor}', erg.faktor === null ? '-' : komma(erg.faktor, 2))\n                .replace('{verworfen}', erg.verworfen.join(', '));\n            liste.appendChild(el('li', '', text));\n        });\n        out.appendChild(liste);\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein weiteres Konversionsfenster hebt die gemeldete Zahl, ohne dass ein einziger Verkauf hinzukommt, ein kurzes Fenster auf einer Ber\u00fchrungsart l\u00e4sst den Rest lautlos wegfallen, und eine Zielgruppenliste ist ihr t\u00e4glicher Zulauf mal ihrer Dauer. Drei Einstellungen, drei Rechenfolgen.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92355,92023,92068],"class_list":["post-13052","page","type-page","status-publish","hentry","tag-attribution-de","tag-conversion-tracking-de","tag-google-ads-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog<\/title>\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\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Ein weiteres Konversionsfenster hebt die gemeldete Zahl, ohne dass ein einziger Verkauf hinzukommt, ein kurzes Fenster auf einer Ber\u00fchrungsart l\u00e4sst den Rest lautlos wegfallen, und eine Zielgruppenliste ist ihr t\u00e4glicher Zulauf mal ihrer Dauer. Drei Einstellungen, drei Rechenfolgen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/\" \/>\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=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/conversion-window-audience-duration-calculator\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/conversion-window-audience-duration-calculator\\\/\",\"name\":\"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-28T11:39:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/conversion-window-audience-duration-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/conversion-window-audience-duration-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/conversion-window-audience-duration-calculator\\\/#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-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer\"}]},{\"@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\":\"luky\",\"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\":\"luky\"},\"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":"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog","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\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog","og_description":"Ein weiteres Konversionsfenster hebt die gemeldete Zahl, ohne dass ein einziger Verkauf hinzukommt, ein kurzes Fenster auf einer Ber\u00fchrungsart l\u00e4sst den Rest lautlos wegfallen, und eine Zielgruppenliste ist ihr t\u00e4glicher Zulauf mal ihrer Dauer. Drei Einstellungen, drei Rechenfolgen.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/","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":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/","name":"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-28T11:39:17+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/conversion-window-audience-duration-calculator\/#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-2\/"},{"@type":"ListItem","position":3,"name":"Rechner f\u00fcr Konversionsfenster und Zielgruppendauer"}]},{"@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":"luky","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":"luky"},"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\/13052","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=13052"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/13052\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13052"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}