1<!doctype html> 2<html lang="de"> 3<head> 4 <link rel="preconnect" href="https://consent.workcentrix.de" crossorigin> 5<link rel="dns-prefetch" href="https://consent.workcentrix.de"> 6 7 8 <!-- CCM19 -->
9<script src="https://consent.workcentrix.de/ccm19/public/app.js?apiKey=eeaa7be142edeb5b47b4ad7af612159ecb9b5c4911cdc987&domain=d35b205" referrerpolicy="origin"></script>
9 10 <meta charset="utf-8"> 11 <meta name="viewport" content="width=device-width, initial-scale=1"> 12 13 <!-- CSRF Token --> 14 <meta name="csrf-token" content="YK515TsWQBN9w3q5ctVMcmgFvjjnjtKTA4pgwjkJ"> 15 <meta name="description" content="workcentrix ist Ihr Partner für ECM, Dokumentenmanagement und digitale Prozessautomatisierung. Zertifizierter Amagno-Partner mit über 10 Jahren Erfahrung."> 16 17 <meta name="robots" content="index, follow"> 18 19 <meta name="keywords" content="Dokumentenmanagement, DMS, Amagno, Rechnungsverarbeitung, Vertragsmanagement, digitale Personalakte, GoBD, DSGVO, Workflow-Automatisierung, workcentrix"> 20 21 22 23<link rel="canonical" href="https://workcentrix.de/login"> 24 25 26<title>workcentrix</title> 27 28 29<link rel="icon" type="image/x-icon" href="https://workcentrix.de/images/favicon.ico" sizes="any"> 30<link rel="icon" type="image/png" sizes="192x192" href="https://workcentrix.de/images/icon-192.png"> 31<link rel="icon" type="image/png" sizes="96x96" href="https://workcentrix.de/images/icon-96.png"> 32<link rel="apple-touch-icon" sizes="180x180" href="https://workcentrix.de/images/apple-touch-icon.png"> 33 34<meta name="twitter:title" content="workcentrix" /> 35<meta name="twitter:description" content="workcentrix ist Ihr Partner für ECM, Dokumentenmanagement und digitale Prozessautomatisierung. Zertifizierter Amagno-Partner mit über 10 Jahren Erfahrung." /> 36 37 <meta name="twitter:card" content="summary_large_image" /> 38 <meta name="twitter:image" content="https://workcentrix.de/images/twitter-card.png" /> 39 <meta property="og:image" content="https://workcentrix.de/images/facebook-card.png" /> 40 41<meta property="og:title" content="workcentrix" /> 42<meta property="og:url" content="https://workcentrix.de/login" /> 43 44<meta property="og:description" content="workcentrix ist Ihr Partner für ECM, Dokumentenmanagement und digitale Prozessautomatisierung. Zertifizierter Amagno-Partner mit über 10 Jahren Erfahrung." /> 45 46<!-- Fonts (Inter, locally hosted â see resources/css/styles.css @font-face) --> 47<link rel="preload" href="https://workcentrix.de/fonts/inter/inter-latin-wght-normal-NRMW37G5.woff2" as="font" type="font/woff2" crossorigin> 48 49<!-- Scripts --> 50<link rel="preload" as="style" href="https://workcentrix.de/build/assets/app-BU2ZhHHY.css" /><link rel="stylesheet" href="https://workcentrix.de/build/assets/app-BU2ZhHHY.css" data-navigate-track="reload" /> 51 52<!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 53</head> 54<body class="text-primary-900"> 55 <div id="app"> 56 57 <div class="w-full"> 58 <div class="flex flex-col-reverse flex-wrap md:flex-nowrap md:flex-row"> 59 <div class="md:basis-3/5 flex flex-col"> 60 <div class="hidden md:block"> 61 <a href="https://workcentrix.de"> 62 <img src="https://workcentrix.de/images/logo_dark.svg" class="inline-block h-6 m-6" alt="Logo" /> 63 </a> 64 </div> 65 66 <div class="flex flex-col py-2 md:p-10 gap-4 justify-center h-full items-center"> 67 <div class="card w-full md:max-w-xl bg-base-100 shadow-xl p-4 md:p-8"> 68 69 <div wire:key="lw-1264556146-0" wire:snapsh
69ot="{"data":{"recaptcha":null,"displayingTwoFactorForm":false,"twoFactorCode":"","email":"","oneTimePassword":"","isFixedEmail":false,"redirectTo":"\/dashboard","displayingEmailForm":true},"memo":{"id":"nrbVOUF9L81kj9NZ24Ft","name":"auth.login.one-time-password-login","path":"login","method":"GET","release":"a-a-a","children":[],"scripts":[],"assets":[],"errors":[],"locale":"de","islands":[]},"checksum":"f0a199f3a1b53fa0e290de1c91566e17d72f8016f98938888cdc8446f0273b7d"}" wire:effects="{"partials":[]}" wire:id="nrbVOUF9L81kj9NZ24Ft" wire:name="auth.login.one-time-password-login"> 70 <p class="text-xs mt-2 text-end">Noch kein Konto? <a class="text-primary-500 font-bold" href="https://workcentrix.de/register">Registrieren</a></p> 71 72 <form wire:submit="submitEmail" class="mt-4 space-y-6"> 73 <div> 74 <fieldset class="fieldset w-full" wire:model="email"> 75 <!--[if BLOCK]><![endif]--> <legend class="fieldset-legend font-medium">E-Mail-Adresse</legend> 76 <!--[if ENDBLOCK]><![endif]--> <input type="email" class="input w-full" placeholder="" name="" required autofocus autocomplete="email" id="email" wire:model="email"/> 77</fieldset> 78 79 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 80 <p class="mt-2 text-sm text-gray-600"> 81 Geben Sie Ihre E-Mail-Adresse ein, um fortzufahren. 82 </p> 83 84 <!--[if BLOCK]><![endif]--> 85 86 <div wire:ignore 87 x-data="{ 88 setPayload(p) { $wire.set('recaptcha', p ?? null); }, 89 reset() { 90 const w = $el.querySelector('altcha-widget'); 91 if (w && typeof w.reset === 'function') w.reset(); 92 $wire.set('recaptcha', null); 93 } 94 }" 95 x-on:reset-recaptcha.window="reset()" 96 x-on:verified.capture="setPayload($event.detail?.payload)" 97 x-on:statechange.capture="if ($event.detail?.state === 'verified') setPayload($event.detail?.payload)" 98 class="my-4"> 99 100 <altcha-widget 101 challenge="https://workcentrix.de/altcha/challenge" 102 name="altcha" 103 language="de" 104 ></altcha-widget> 105 </div> 106 107 <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]--> 108<!--[if ENDBLOCK]><![endif]--> 109 </div> 110 111 <div> 112 <!--[if BLOCK]><![endif]--><button 113 class="inline-block drop-shadow-xl cursor-pointer leading-6 focus:ring-4 focus:outline-none focus:ring-secondary-300 rounded-full text-sm font-medium px-4 py-2 text-center transition hover:scale-103 text-primary-50 bg-primary-500 hover:bg-primary-600 focus:ring-primary-300 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800 inline-block w-full! my-2" type="submit" 114 class="text-primary-50 bg-primary-500 hover:bg-primary-600 focus:ring-primary-300 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800 inline-block w-full! my-2" type="submit" 115 116> 117 Weiter 118</button> 119<!--[if ENDBLOCK]><![endif]--> </div> 120 </form> 121</div> 122 123 </div> 124 </div> 125 </div> 126 <div class="md:basis-2/5 md:min-h-screen md:bg-linear-to-r md:from-primary-400 md:to-primary-700 flex flex-col md:text-white text-primary-900 text-center md:text-left left-shadow"> 127 <div class="flex justify-between md:justify-end"> 128 <div class="md:hidden"> 129 <a href="https://workcentrix.de"> 130 <img src="https://workcentrix.de/images/logo_dark.svg" class="inline-block h-6 m-6" alt="Logo" /> 131 </a> 132 </div> 133 134 <div class="self-end text-primary-200 m-4 text-xs"> 135 <a 136 class="leading-6 text-sm px-4 py-2 text-center hover:opacity-90 flex items-center text-primary-100" href="https://workcentrix.de" 137 href="https://workcentrix.de" class="flex items-center text-primary-100" 138> 139 < zurück zur Startseite 140</a> 141 </div> 142 </div> 143 144 <div class="py-4 md:px-12 md:pt-36 h-full"> 145 <h1 class="text-5xl md:text-6xl leading-xxs text-3xl! md:text-4xl! font-semibold!"> 146 Anmelden. 147</h1> 148 <p class="mt-4"> 149 Schön, Sie wieder zu sehen :) 150 </p> 151 </div> 152 </div> 153 </div> 154 </div> 155 156 <link rel="modulepreload" as="script" href="https://workcentrix.de/build/assets/app-YvzYIDTG.js" />
156<script type="module" src="https://workcentrix.de/build/assets/app-YvzYIDTG.js" data-navigate-track="reload"></script>
156 157 158
159<script> 160 !function(t,e){var o,n,p,r;e.__SV||(window.posthog && window.posthog.__loaded)||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="Mi Ri init Vi Gi Rr Wi Ji Bi capture calculateEventProperties tn register register_once register_for_session unregister unregister_for_session an getFeatureFlag getFeatureFlagPayload getFeatureFlagResult isFeatureEnabled reloadFeatureFlags updateFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey displaySurvey cancelPendingSurvey canRenderSurvey canRenderSurveyAsync un identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset setIdentity clearIdentity get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException addExceptionStep captureLog startExceptionAutocapture stopExceptionAutocapture loadToolbar get_property getSessionProperty nn Xi createPersonProfile setInternalOrTestUser sn Hi cn opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing get_explicit_consent_status is_capturing clear_opt_in_out_capturing Ki debug Lr rn getPageViewId captureTraceFeedback captureTraceMetric Di".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); 161 162 posthog.init("phc_vNKYFRtFPKwVvePMK9EVmshWQZPDUNGXJkQXVu4qmxfQ", { 163 api_host: "https:\/\/analytics.workcentrix.de", 164 defaults: '2026-01-30', 165 person_profiles: 'identified_only', 166 cookieless_mode: 'on_reject', // ohne Consent zählen, ohne zu speichern 167 opt_out_capturing_by_default: true, // Default = cookieless, bis CCM19 entscheidet 168 autocapture: false, 169 disable_session_recording: true, // nur nach Einwilligung, siehe Bridge 170 capture_pageview: false, // Pageview feuert die Bridge manuell â mit Content-Metadaten 171 }); 172 </script>
172 173 174 175
175<script> 176 (function () { 177 var EMBEDDING = String("phAnalytics").trim().toLowerCase(); 178 var RECORDING = true; 179 180 // Zuletzt angewandter Zustand ('in'/'out'). CCM19 feuert 181 // ccm19EmbeddingAccepted EINMAL PRO EMBEDDING und bei jedem 182 // Seitenaufruf erneut â ohne diese Sperre würde jedes fremde 183 // Embedding eine erneute Umschaltung (inkl. Reset) auslösen. 184 var applied = null; 185 186 // Ob der initiale $pageview schon drauÃen ist. Steuert, ob eine 187 // SPÃTE Einwilligung (über den CCM19-Dialog) den Pageview mit echter 188 // Identität nachzieht â beim synchronen opt-in vor dem ersten 189 // Pageview trägt der initiale Pageview die Identität bereits selbst. 190 var initialPageviewSent = false; 191 192 // Content-Metadaten (slug/type/category) aus dem [data-wcx-content]- 193 // Element; reisen so ohne Template-Verdrahtung am Pageview mit. 194 function wcxContentProps() { 195 var el = document.querySelector('[data-wcx-content]'); 196 var props = {}; 197 if (!el) { 198 return props; 199 } 200 Object.keys(el.dataset).forEach(function (key) { 201 if (key.indexOf('content') === 0) { 202 props[key.replace(/([A-Z])/g, '_$1').toLowerCase()] = el.dataset[key]; 203 } 204 }); 205 return props; 206 } 207 208 // Genau ein manueller $pageview (Auto-Pageview ist per 209 // capture_pageview:false aus). Funktioniert in beiden Zuständen â 210 // cookieless wie eingewilligt â und trägt die Content-Metadaten. 211 function capturePageview() { 212 posthog.capture('$pageview', Object.assign( 213 { locale: "de" }, 214 wcxContentProps() 215 )); 216 } 217 218 // Kampagnen-Cluster der Seite (Meta-Tag aus dem Head) als 219 // Super-Property registrieren, damit JEDES Event dieser Seite 220 // (Pageview, Scroll, Download-Klick) das Cluster trägt. 221 // register() gilt für alle FOLGENDEN Events der Session â auf einer 222 // Seite ohne Cluster muss die Property daher wieder weg, sonst 223 // klebt sie an Events fremder Seiten. 224 function registerCampaignCluster() { 225 var meta = document.querySelector('meta[name="wcx:campaign-cluster"]'); 226 var clusters = (meta ? meta.content.split(',') : []) 227 .map(function (value) { return value.trim(); }) 228 .filter(Boolean); 229 230 if (clusters.length) { 231 posthog.register({ wcx_campaign_cluster: clusters }); 232 } else { 233 posthog.unregister('wcx_campaign_cluster'); 234 } 235 } 236 237 function matches(value) { 238 return typeof value === 'string' && value.trim().toLowerCase() === EMBEDDING; 239 } 240 241 function isAccepted() { 242 var list = (window.CCM && Array.isArray(window.CCM.acceptedEmbeddings)) 243 ? window.CCM.acceptedEmbeddings 244 : []; 245 246 // CCM19 liefert [{id, name}, â¦]; ältere Stände auch Strings. 247 return list.some(function (e) { 248 if (!e) { 249 return false; 250 } 251 252 return typeof e === 'string' ? matches(e) : (matches(e.name) || matches(e.id)); 253 }); 254 } 255 256 function optIn() { 257 if (applied === 'in') { 258 return; 259 } 260 applied = 'in'; 261 262 // Wechselt intern von der Cookieless-Sentinel-ID auf eine echte 263 // Identität. captureEventName:null unterdrückt ein $opt_in-Event. 264 posthog.opt_in_capturing({ captureEventName: null }); 265 266 if (RECORDING) { 267 posthog.startSessionRecording(); 268 } 269 270 // Späte Einwilligung: Pageview mit echter Identität nachziehen. 271 // Vorher das Cluster erneut registrieren â der Wechsel der 272 // Identität kann die Super-Properties abgeräumt haben. 273 if (initialPageviewSent) { 274 registerCampaignCluster(); 275 capturePageview(); 276 } 277 } 278 279 function applyConsent() { 280 // CCM.ucid ist die Consent-ID und bleibt null, solange der 281 // Besucher nicht entschieden hat. ACHTUNG: Die CCM19-API kennt 282 // KEINE Property `consent`+`Id` â eine Prüfung darauf ist immer 283 // falsy, die Bridge läuft dann jedes Mal in den Early-Return und 284 // alles bleibt cookieless. 285 // Ohne Entscheidung bewusst NICHTS tun: der Default ist bereits 286 // cookieless, und jeder Aufruf hier würde eine Präferenz 287 // persistieren. 288 if (!window.CCM || !window.CCM.ucid) { 289 return; 290 } 291 292 if (isAccepted()) { 293 optIn(); 294 return; 295 } 296 297 if (applied === 'out') { 298 return; 299 } 300 applied = 'out'; 301 302 // Zurück auf cookieless (bzw. Rücknahme einer früheren Zustimmung). 303 posthog.opt_out_capturing(); 304 posthog.stopSessionRecording(); 305 } 306 307 // Beim Einzel-Event nur zustimmen, nie ablehnen: die Events kommen 308 // pro Embedding, ein fremdes Embedding sagt nichts über PostHog aus. 309 window.addEventListener('ccm19EmbeddingAccepted', function (event) { 310 if (event && event.detail && matches(event.detail.name)) { 311 optIn(); 312 } else { 313 applyConsent(); 314 } 315 }); 316 317 // Vollständige Auswertung nur bei stabilem Gesamtzustand â inkl.
318 // Widerruf, wenn der Besucher im Dialog abwählt und speichert. 319 window.addEventListener('ccm19WidgetLoaded', applyConsent); 320 window.addEventListener('ccm19WidgetClosed', applyConsent); 321 322 // Wichtigster Pfad: CCM19 steht im <head> und ist hier bereits 323 // initialisiert. Erst den Consent-Zustand festlegen (setzt ggf. die 324 // echte Identität), dann GENAU EINEN initialen $pageview feuern â mit 325 // Metadaten und passender Identität (cookieless oder eingewilligt). 326 // Reihenfolge: erst Consent (opt_out_capturing() räumt die 327 // Persistenz und damit registrierte Properties ab), dann das 328 // Cluster registrieren, dann der Pageview â der trägt es so bereits. 329 applyConsent(); 330 registerCampaignCluster(); 331 capturePageview(); 332 initialPageviewSent = true; 333 })(); 334 335 </script>
335 336 337
338<script> 339(function () { 340 var KEYS = ["gclid","li_fat_id","utm_source","utm_medium","utm_campaign","utm_content"]; 341 var PREFIX = "attr_"; 342 var STORAGE_PREFIX = 'wcx_attr_'; 343 var TTL = 90 * 24 * 60 * 60 * 1000; // 90 Tage 344 345 function store() { 346 try { 347 return window.localStorage; 348 } catch (e) { 349 return null; // Privat-Modus o. ä. â dann eben ohne Persistenz. 350 } 351 } 352 353 function remember() { 354 var storage = store(); 355 356 if (!storage) { 357 return; 358 } 359 360 var params = new URLSearchParams(window.location.search); 361 362 KEYS.forEach(function (key) { 363 var value = params.get(key); 364 365 if (value) { 366 storage.setItem(STORAGE_PREFIX + key, JSON.stringify({ v: value.slice(0, 255), t: Date.now() })); 367 } 368 }); 369 } 370 371 function read(key) { 372 var storage = store(); 373 374 if (!storage) { 375 return null; 376 } 377 378 var raw = storage.getItem(STORAGE_PREFIX + key); 379 380 if (!raw) { 381 return null; 382 } 383 384 try { 385 var entry = JSON.parse(raw); 386 387 if (!entry || typeof entry.v !== 'string' || Date.now() - entry.t > TTL) { 388 storage.removeItem(STORAGE_PREFIX + key); 389 390 return null; 391 } 392 393 return entry.v; 394 } catch (e) { 395 storage.removeItem(STORAGE_PREFIX + key); 396 397 return null; 398 } 399 } 400 401 function fill() { 402 KEYS.forEach(function (key) { 403 var value = read(key); 404 405 if (value === null) { 406 return; 407 } 408 409 document.querySelectorAll('input[name="' + PREFIX + key + '"]').forEach(function (input) { 410 if (input.value === value) { 411 return; 412 } 413 414 input.value = value; 415 416 // Livewire bindet die Felder per wire:model und übernimmt den 417 // Wert erst, wenn ein input-Event kommt. 418 input.dispatchEvent(new Event('input', { bubbles: true })); 419 }); 420 }); 421 } 422 423 remember(); 424 425 if (document.readyState === 'loading') { 426 document.addEventListener('DOMContentLoaded', fill); 427 } else { 428 fill(); 429 } 430 431 // Livewire-Komponenten (und SPA-Navigation) rendern ihre Felder später neu. 432 document.addEventListener('livewire:initialized', fill); 433 document.addEventListener('livewire:navigated', function () { 434 remember(); 435 fill(); 436 }); 437})(); 438</script>
438 439 440
441<script> 442 (function () { 443 var sources = [ 444 'https://crm.workcentrix.de/im_livechat/loader/1', 445 'https://crm.workcentrix.de/im_livechat/assets_embed.js', 446 ]; 447 448 function loadLivechat() { 449 sources.forEach(function (src) { 450 var script = document.createElement('script'); 451 script.src = src; 452 script.async = false; // preserve execution order 453 document.body.appendChild(script); 454 }); 455 } 456 457 window.setTimeout(loadLivechat, 20000); 458 })(); 459</script>
459 460 461 462
463<script src="https://workcentrix.de/livewire-ea5a3bd0/livewire.min.js?id=ab6b028c" data-csrf="YK515TsWQBN9w3q5ctVMcmgFvjjnjtKTA4pgwjkJ" data-module-url="https://workcentrix.de/livewire-ea5a3bd0" data-update-uri="https://workcentrix.de/livewire-ea5a3bd0/update" data-navigate-once="true"></script>
463 464 </div> 465</body> 466</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.