{"id":170064,"date":"2022-04-29T13:43:29","date_gmt":"2022-04-29T11:43:29","guid":{"rendered":"https:\/\/bikefinder.com\/ny-shop\/"},"modified":"2026-10-11T04:07:02","modified_gmt":"2026-10-11T02:07:02","slug":"buy","status":"publish","type":"page","link":"https:\/\/bikefinder.com\/de\/buy\/","title":{"rendered":"Fahrrad-Tracker kaufen"},"content":{"rendered":"\n<style>.bf-buy { --ink:#182b38; --muted:#60707c; --line:#dce3e8; --blue:#0075b9; --wash:#eff7fc; --paper:#f8f9fb; --radius:14px; background:var(--paper); color:var(--ink); font:14px\/1.6 'Open Sans',Arial,sans-serif; padding:52px max(24px,calc((100% - 1240px)\/2)) 64px; isolation:isolate; }\n .bf-buy [hidden] {display:none!important;}\n .bf-buy .bf-buy-app {display:none;max-width:1240px;margin:auto;}\n .bf-buy.is-ready .bf-buy-app {display:block;}\n .bf-buy.is-ready .bf-buy-fallback {display:none;}\n .bf-buy .bf-buy-fallback {max-width:1240px;margin:auto;}\n .bf-buy .bf-buy-native-plan {border:1px solid #dce3e8;border-radius:10px;background:#fff;padding:18px;margin:10px 0;}\n .bf-buy .bf-buy-alert,.bf-buy .bf-buy-initial-error {max-width:1240px;margin:0 auto 20px;font-size:13px;color:#a73232;}\n .bf-buy .bf-buy-cart-note {margin-top:16px;padding:12px 14px;border-radius:9px;background:#eaf1f5;font-size:11px;}\n .bf-buy .bf-buy-cart-note a {color:#0075b9;}\n .bf-buy .bf-buy-cart-note button {background:none;padding:0;color:#0075b9;text-decoration:underline;margin-top:5px;font-size:11px;}\n .bf-buy .billing-choices .billed * {font:inherit;color:inherit;}\n .bf-buy .billing-choices .billed p {display:inline;}\n .bf-buy .primary:disabled {opacity:.6;cursor:wait;}\n .bf-buy .primary[aria-disabled=\"true\"] {opacity:.6;cursor:not-allowed;}\n .bf-buy .bf-buy-busy {font-size:11px;color:#60707c;text-align:center;margin-top:10px;}\n @media(max-width:760px){.bf-buy{padding:30px 20px 120px;}.bf-buy .bf-buy-app{margin:0;}.bf-buy .mobile-checkout{font:14px\/1.6 'Open Sans',Arial,sans-serif;}}\n\n            .bf-buy {\n                --ink: #182b38;\n                --muted: #60707c;\n                --line: #dce3e8;\n                --blue: #0075b9;\n                --wash: #eff7fc;\n                --paper: #f8f9fb;\n                --radius: 14px;\n            }\n            .bf-buy * {\n                box-sizing: border-box;\n            }\n            .bf-buy h1,\n            .bf-buy h2,\n            .bf-buy h3,\n            .bf-buy strong,\n            .bf-buy button,\n            .bf-buy .price {\n                font-family: Montserrat, Arial, sans-serif;\n                font-weight: 600;\n            }\n            .bf-buy h1,\n            .bf-buy h2,\n            .bf-buy h3,\n            .bf-buy p {\n                margin: 0;\n            }\n            .bf-buy button,\n            .bf-buy input,\n            .bf-buy select {\n                font: inherit;\n                color: inherit;\n            }\n            .bf-buy button,\n            .bf-buy a,\n            .bf-buy label,\n            .bf-buy select {\n                -webkit-tap-highlight-color: transparent;\n            }\n            .bf-buy button,\n            .bf-buy select,\n            .bf-buy summary {\n                cursor: pointer;\n            }\n            .bf-buy a {\n                color: inherit;\n                text-underline-offset: 4px;\n            }\n            .bf-buy button {\n                border: 0;\n            }\n            .bf-buy :focus-visible {\n                outline: 3px solid #0075b9;\n                outline-offset: 4px;\n            }\n            .bf-buy [hidden] {\n                display: none !important;\n            }\n            .bf-buy svg {\n                display: block;\n                width: 22px;\n                height: 22px;\n                fill: none;\n                stroke: currentColor;\n                stroke-width: 1.6;\n                stroke-linecap: round;\n                stroke-linejoin: round;\n                flex-shrink: 0;\n            }\n            .bf-buy .svg-library,\n            .bf-buy .sr-only {\n                position: absolute;\n                width: 1px;\n                height: 1px;\n                padding: 0;\n                overflow: hidden;\n                clip-path: inset(50%);\n                white-space: nowrap;\n            }\n            .bf-buy .buy-layout {\n                display: grid;\n                grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr);\n                gap: clamp(40px, 6vw, 88px);\n                align-items: start;\n            }\n            .bf-buy .eyebrow {\n                text-transform: uppercase;\n                letter-spacing: 0.16em;\n                font-size: 10px;\n                color: var(--blue);\n                margin-bottom: 17px;\n                font-weight: 600;\n            }\n            .bf-buy h1 {\n                font-size: clamp(40px, 4.4vw, 61px);\n                letter-spacing: -2.6px;\n                line-height: 1.08;\n                margin-bottom: 20px;\n            }\n            .bf-buy .intro {\n                color: var(--muted);\n                max-width: 415px;\n                font-size: 15px;\n                line-height: 1.8;\n            }\n            .bf-buy .product-stage {\n                position: relative;\n                margin-top: 28px;\n                height: 460px;\n                overflow: hidden;\n                border-radius: 18px;\n                background: #f0f1f2;\n                isolation: isolate;\n            }\n            .bf-buy .stage-top {\n                position: absolute;\n                z-index: 2;\n                top: 22px;\n                left: 24px;\n                display: grid;\n                gap: 3px;\n            }\n            .bf-buy .stage-top strong {\n                font-size: 14px;\n            }\n            .bf-buy .stage-top small {\n                color: var(--muted);\n                font-size: 10px;\n            }\n            .bf-buy .product-stage::before {\n                content: '';\n                position: absolute;\n                width: 330px;\n                height: 330px;\n                border: 1px solid #d6dde2;\n                border-radius: 50%;\n                top: 52px;\n                left: calc(50% - 165px);\n            }\n            .bf-buy .product-stage::after {\n                content: '';\n                position: absolute;\n                width: 235px;\n                height: 235px;\n                border: 1px solid #dce2e6;\n                border-radius: 50%;\n                top: 100px;\n                left: calc(50% - 118px);\n                z-index: -1;\n            }\n            .bf-buy .product-photo {\n                width: 100%;\n                height: 100%;\n                object-fit: cover;\n                mix-blend-mode: multiply;\n                transition: opacity 0.2s;\n            }\n            .bf-buy .product-stage[data-model='g1'] .product-photo,\n            .bf-buy .product-stage[data-model='fahrradfinden'] .product-photo {\n                object-fit: contain;\n                padding: 55px 15px 45px;\n            }\n            .bf-buy .stage-caption {\n                position: absolute;\n                z-index: 2;\n                bottom: 20px;\n                left: 24px;\n                right: 24px;\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                gap: 12px;\n                font-size: 10px;\n                color: var(--muted);\n            }\n            .bf-buy .stage-tag {\n                border: 1px solid #ccd8df;\n                border-radius: 20px;\n                padding: 5px 10px;\n                display: inline-flex;\n                align-items: center;\n                gap: 6px;\n                color: var(--ink);\n                background: #f5f6f7;\n            }\n            .bf-buy .stage-tag svg {\n                width: 13px;\n                height: 13px;\n                color: var(--blue);\n            }\n            .bf-buy .feature-strip {\n                display: grid;\n                grid-template-columns: repeat(3, 1fr);\n                gap: 12px;\n                padding: 22px 0 0;\n            }\n            .bf-buy .feature {\n                display: flex;\n                align-items: center;\n                gap: 9px;\n                font-size: 11px;\n            }\n            .bf-buy .feature svg {\n                color: var(--blue);\n                width: 20px;\n                height: 20px;\n            }\n            .bf-buy .product-details {\n                margin-top: 25px;\n                border-top: 1px solid var(--line);\n                font-size: 12px;\n            }\n            .bf-buy details {\n                border-bottom: 1px solid var(--line);\n            }\n            .bf-buy summary {\n                padding: 15px 0;\n                list-style: none;\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                font-weight: 600;\n            }\n            .bf-buy summary::-webkit-details-marker {\n                display: none;\n            }\n            .bf-buy summary::after {\n                content: '+';\n                font-size: 19px;\n                font-weight: 400;\n            }\n            .bf-buy details[open] summary::after {\n                content: '\u2212';\n            }\n            .bf-buy details p {\n                padding: 0 0 18px;\n                color: var(--muted);\n            }\n            .bf-buy .configurator {\n                padding-top: 2px;\n            }\n            .bf-buy .config-title {\n                font-size: 27px;\n                letter-spacing: -0.7px;\n                margin-bottom: 5px;\n            }\n            .bf-buy .config-subtitle {\n                font-size: 12px;\n                color: var(--muted);\n            }\n            .bf-buy .hardware-row {\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                margin: 22px 0 10px;\n                padding-bottom: 16px;\n                border-bottom: 1px solid var(--line);\n                gap: 12px;\n            }\n            .bf-buy .hardware-info {\n                display: flex;\n                align-items: center;\n                gap: 11px;\n            }\n            .bf-buy .hardware-icon {\n                display: grid;\n                place-items: center;\n                width: 36px;\n                height: 36px;\n                background: #eaf1f5;\n                border-radius: 9px;\n                color: var(--blue);\n            }\n            .bf-buy .hardware-info strong {\n                font-size: 13px;\n            }\n            .bf-buy .hardware-info small {\n                display: block;\n                font-size: 10px;\n                color: var(--muted);\n            }\n            .bf-buy .hardware-price {\n                font-size: 15px;\n                white-space: nowrap;\n            }\n            .bf-buy .owner-toggle {\n                width: fit-content;\n                display: flex;\n                align-items: center;\n                gap: 7px;\n                color: var(--muted);\n                font-size: 11px;\n                cursor: pointer;\n            }\n            .bf-buy input[type='checkbox'] {\n                accent-color: var(--blue);\n                width: 15px;\n                height: 15px;\n                margin: 0;\n                flex-shrink: 0;\n            }\n            .bf-buy fieldset {\n                border: 0;\n                padding: 0;\n                margin: 24px 0 0;\n                min-width: 0;\n            }\n            .bf-buy legend {\n                width: 100%;\n                padding: 0;\n                font-family: Montserrat, sans-serif;\n                font-weight: 600;\n                font-size: 13px;\n                margin-bottom: 12px;\n                display: flex;\n                align-items: center;\n                gap: 9px;\n            }\n            .bf-buy .step {\n                color: var(--muted);\n                width: 19px;\n                height: 19px;\n                display: inline-grid;\n                place-items: center;\n                font-size: 10px;\n                border: 1px solid #c9d3da;\n                border-radius: 50%;\n            }\n            .bf-buy .choices {\n                display: grid;\n                grid-template-columns: 1fr 1fr;\n                gap: 10px;\n            }\n            .bf-buy .choice {\n                position: relative;\n                cursor: pointer;\n            }\n            .bf-buy .choice input {\n                position: absolute;\n                inset: 0;\n                width: 100%;\n                height: 100%;\n                margin: 0;\n                opacity: 0;\n                z-index: 1;\n                cursor: pointer;\n            }\n            .bf-buy .choice-face {\n                height: 100%;\n                border: 1px solid #cdd8e0;\n                border-radius: 10px;\n                padding: 15px 13px;\n                display: grid;\n                grid-template-columns: 1fr 15px;\n                align-items: start;\n                column-gap: 5px;\n                background: #fff;\n                transition:\n                    border-color 0.15s,\n                    background 0.15s;\n            }\n            .bf-buy .choice:hover .choice-face {\n                border-color: var(--blue);\n            }\n            .bf-buy .choice input:checked + .choice-face {\n                border: 2px solid var(--blue);\n                padding: 14px 12px;\n                background: var(--wash);\n            }\n            .bf-buy .choice input:focus-visible + .choice-face {\n                outline: 3px solid var(--blue);\n                outline-offset: 3px;\n            }\n            .bf-buy .choice input:disabled {\n                cursor: not-allowed;\n            }\n            .bf-buy .choice input:disabled + .choice-face {\n                opacity: 0.55;\n                background: #edf0f2;\n            }\n            .bf-buy .choice-face strong {\n                display: block;\n                font-size: 12px;\n            }\n            .bf-buy .choice-face small {\n                font-size: 10px;\n                color: var(--muted);\n                display: block;\n                margin-top: 5px;\n                line-height: 1.5;\n            }\n            .bf-buy .radio-mark {\n                border: 1px solid #b9c7d0;\n                border-radius: 50%;\n                width: 15px;\n                height: 15px;\n                margin-top: 2px;\n            }\n            .bf-buy input:checked + .choice-face .radio-mark {\n                border: 4px solid var(--blue);\n                background: #fff;\n            }\n            .bf-buy .insurance-box {\n                margin-top: 12px;\n                padding: 16px;\n                border: 1px solid #d5e4ed;\n                background: #f0f6fa;\n                border-radius: 10px;\n            }\n            .bf-buy .insurance-box > label {\n                display: block;\n                font-size: 11px;\n                margin-bottom: 7px;\n            }\n            .bf-buy .value-select {\n                width: 100%;\n                padding: 10px 12px;\n                border: 1px solid #bdced9;\n                border-radius: 7px;\n                background: #fff;\n                font-size: 12px;\n            }\n            .bf-buy .eligibility {\n                color: var(--muted);\n                font-size: 10px;\n                line-height: 1.7;\n                margin-top: 10px;\n            }\n            .bf-buy .policy-links {\n                display: flex;\n                flex-wrap: wrap;\n                gap: 14px;\n                margin-top: 7px;\n                font-size: 10px;\n                color: var(--blue);\n            }\n            .bf-buy .residence-check {\n                display: flex;\n                align-items: flex-start;\n                gap: 8px;\n                margin-top: 13px;\n                font-size: 11px;\n                cursor: pointer;\n            }\n            .bf-buy .residence-check input {\n                margin-top: 3px;\n            }\n            .bf-buy .market-note {\n                font-size: 10px;\n                line-height: 1.6;\n                color: var(--muted);\n                margin-top: 9px;\n            }\n            .bf-buy .billing-choices {\n                grid-template-columns: repeat(3, minmax(0, 1fr));\n            }\n            .bf-buy .billing-choices .choice-face {\n                display: block;\n                padding: 14px 10px;\n                position: relative;\n            }\n            .bf-buy .billing-choices input:checked + .choice-face {\n                padding: 13px 9px;\n            }\n            .bf-buy .billing-choices .choice-face strong {\n                font-size: 11px;\n                margin-bottom: 9px;\n            }\n            .bf-buy .monthly-price {\n                font-family: Montserrat, sans-serif;\n                font-weight: 600;\n                font-size: 20px;\n                white-space: nowrap;\n                letter-spacing: -0.6px;\n            }\n            .bf-buy .per-month {\n                color: var(--muted);\n                font-size: 10px;\n                margin-left: 2px;\n            }\n            .bf-buy .choice-face .billed {\n                font-size: 9px;\n                margin-top: 7px;\n            }\n            .bf-buy .saving {\n                display: inline-block;\n                margin-top: 9px;\n                padding: 2px 6px;\n                border-radius: 4px;\n                background: #e7eee9;\n                color: #315841;\n                font-size: 9px;\n            }\n            .bf-buy .billing-note {\n                color: var(--muted);\n                font-size: 10px;\n                margin-top: 10px;\n            }\n            .bf-buy .accessory {\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                gap: 12px;\n                border-top: 1px solid var(--line);\n                margin-top: 22px;\n                padding-top: 18px;\n                font-size: 11px;\n                cursor: pointer;\n            }\n            .bf-buy .accessory-copy {\n                display: flex;\n                align-items: center;\n                gap: 10px;\n            }\n            .bf-buy .accessory small {\n                display: block;\n                font-size: 10px;\n                color: var(--muted);\n            }\n            .bf-buy .accessory .price {\n                white-space: nowrap;\n                font-size: 11px;\n            }\n            .bf-buy .order-summary {\n                background: #fff;\n                border: 1px solid var(--line);\n                border-radius: var(--radius);\n                margin-top: 22px;\n                padding: 19px 20px;\n            }\n            .bf-buy .summary-line {\n                display: flex;\n                justify-content: space-between;\n                gap: 12px;\n                color: var(--muted);\n                font-size: 11px;\n            }\n            .bf-buy .summary-line + .summary-line {\n                margin-top: 6px;\n            }\n            .bf-buy .summary-line span:last-child {\n                white-space: nowrap;\n            }\n            .bf-buy .today-line {\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                gap: 12px;\n                padding-top: 13px;\n                margin-top: 13px;\n                border-top: 1px solid var(--line);\n            }\n            .bf-buy .today-line strong {\n                font-size: 12px;\n            }\n            .bf-buy .today-line .price {\n                font-size: 24px;\n                letter-spacing: -0.5px;\n            }\n            .bf-buy .renewal {\n                margin-top: 5px;\n                color: var(--muted);\n                font-size: 10px;\n                text-align: right;\n            }\n            .bf-buy .shipping-note {\n                color: var(--muted);\n                font-size: 9px;\n                margin-top: 9px;\n                text-align: right;\n            }\n            .bf-buy .primary {\n                width: 100%;\n                display: flex;\n                align-items: center;\n                justify-content: space-between;\n                gap: 12px;\n                background: var(--blue);\n                color: #fff;\n                border-radius: 9px;\n                padding: 16px 20px;\n                font-family: Montserrat, sans-serif;\n                font-weight: 600;\n                font-size: 13px;\n                transition: background 0.15s;\n            }\n            .bf-buy .primary:hover {\n                background: #005e95;\n            }\n            .bf-buy .primary svg {\n                width: 18px;\n                height: 18px;\n            }\n            .bf-buy .desktop-cta {\n                margin-top: 15px;\n            }\n            .bf-buy .cta-footnote {\n                text-align: center;\n                color: var(--muted);\n                font-size: 9px;\n                margin-top: 9px;\n            }\n            .bf-buy .inline-error {\n                color: #a73232;\n                font-size: 11px;\n                margin-top: 12px;\n            }\n            .bf-buy .mobile-checkout {\n                display: none;\n            }\n            .bf-buy .how-section {\n                border-top: 1px solid var(--line);\n                padding-top: 50px;\n                margin-top: 58px;\n            }\n            .bf-buy .section-intro {\n                display: flex;\n                align-items: baseline;\n                justify-content: space-between;\n                gap: 20px;\n                margin-bottom: 25px;\n            }\n            .bf-buy .section-intro h2 {\n                font-size: 25px;\n                letter-spacing: -0.6px;\n            }\n            .bf-buy .section-intro p {\n                color: var(--muted);\n                font-size: 12px;\n            }\n            .bf-buy .how-grid {\n                display: grid;\n                grid-template-columns: repeat(3, 1fr);\n                gap: 28px;\n            }\n            .bf-buy .how-card {\n                padding: 24px;\n                background: #fff;\n                border: 1px solid var(--line);\n                border-radius: var(--radius);\n            }\n            .bf-buy .how-number {\n                color: var(--blue);\n                font-size: 10px;\n                letter-spacing: 0.1em;\n            }\n            .bf-buy .how-card h3 {\n                font-size: 15px;\n                margin: 11px 0 9px;\n            }\n            .bf-buy .how-card p {\n                color: var(--muted);\n                font-size: 12px;\n            }\n            .bf-buy .faq-section {\n                margin: 50px auto 0;\n                max-width: 720px;\n            }\n            .bf-buy .faq-section h2 {\n                font-size: 25px;\n                letter-spacing: -0.6px;\n                margin-bottom: 18px;\n            }\n            .bf-buy .faq-section details {\n                font-size: 12px;\n            }\n            @media (min-width: 1021px) {\n                .bf-buy .product-column {\n                    position: sticky;\n                    top: 28px;\n                }\n            }\n            @media (max-width: 1150px) {\n                .bf-buy .buy-layout {\n                    gap: 38px;\n                }\n                .bf-buy .monthly-price {\n                    font-size: 18px;\n                }\n            }\n            @media (max-width: 1020px) {\n                .bf-buy .buy-layout {\n                    gap: 28px;\n                }\n                .bf-buy h1 {\n                    font-size: 44px;\n                }\n                .bf-buy .product-stage {\n                    height: 375px;\n                }\n                .bf-buy .feature-strip {\n                    grid-template-columns: 1fr;\n                    gap: 10px;\n                }\n                .bf-buy .config-title {\n                    font-size: 23px;\n                }\n                .bf-buy .choice-face strong {\n                    font-size: 11px;\n                }\n                .bf-buy .billing-choices .choice-face strong {\n                    font-size: 10px;\n                }\n                .bf-buy .monthly-price {\n                    font-size: 16px;\n                }\n                .bf-buy .billing-choices .choice-face {\n                    padding: 12px 7px;\n                }\n                .bf-buy .billing-choices input:checked + .choice-face {\n                    padding: 11px 6px;\n                }\n            }\n            @media (max-width: 760px) {\n                .bf-buy .buy-layout {\n                    grid-template-columns: 1fr;\n                    gap: 34px;\n                }\n                .bf-buy h1 {\n                    font-size: clamp(39px, 10vw, 56px);\n                    letter-spacing: -1.9px;\n                }\n                .bf-buy .eyebrow {\n                    margin-bottom: 13px;\n                    font-size: 9px;\n                }\n                .bf-buy .intro {\n                    font-size: 13px;\n                    max-width: 430px;\n                }\n                .bf-buy .product-stage {\n                    height: 290px;\n                    margin-top: 22px;\n                }\n                .bf-buy .product-stage::before {\n                    width: 235px;\n                    height: 235px;\n                    top: 28px;\n                    left: calc(50% - 118px);\n                }\n                .bf-buy .product-stage::after {\n                    width: 180px;\n                    height: 180px;\n                    top: 55px;\n                    left: calc(50% - 90px);\n                }\n                .bf-buy .stage-top {\n                    top: 16px;\n                    left: 18px;\n                }\n                .bf-buy .stage-top strong {\n                    font-size: 12px;\n                }\n                .bf-buy .stage-caption {\n                    left: 18px;\n                    right: 18px;\n                    bottom: 16px;\n                    font-size: 9px;\n                }\n                .bf-buy .feature-strip {\n                    grid-template-columns: repeat(3, 1fr);\n                    gap: 8px;\n                    padding-top: 18px;\n                }\n                .bf-buy .feature {\n                    gap: 7px;\n                    font-size: 9px;\n                }\n                .bf-buy .feature svg {\n                    width: 17px;\n                    height: 17px;\n                }\n                .bf-buy .product-details {\n                    display: none;\n                }\n                .bf-buy .config-title {\n                    font-size: 25px;\n                }\n                .bf-buy .choice-face strong {\n                    font-size: 12px;\n                }\n                .bf-buy .billing-choices .choice-face {\n                    padding: 14px 10px;\n                }\n                .bf-buy .billing-choices input:checked + .choice-face {\n                    padding: 13px 9px;\n                }\n                .bf-buy .billing-choices .choice-face strong {\n                    font-size: 11px;\n                }\n                .bf-buy .monthly-price {\n                    font-size: 19px;\n                }\n                .bf-buy .desktop-cta,\n                .bf-buy .cta-footnote {\n                    display: none;\n                }\n                .bf-buy .mobile-checkout {\n                    display: flex;\n                    align-items: center;\n                    justify-content: space-between;\n                    gap: 16px;\n                    padding: 12px 20px calc(12px + env(safe-area-inset-bottom)) 56px;\n                    position: fixed;\n                    bottom: 0;\n                    left: 0;\n                    right: 0;\n                    z-index: 4;\n                    background: #ffffffef;\n                    backdrop-filter: blur(12px);\n                    border-top: 1px solid var(--line);\n                }\n                .bf-buy .mobile-total {\n                    flex-shrink: 0;\n                }\n                .bf-buy .mobile-total small {\n                    color: var(--muted);\n                    font-size: 9px;\n                    display: block;\n                }\n                .bf-buy .mobile-total strong {\n                    font-size: 18px;\n                }\n                .bf-buy .mobile-checkout .primary {\n                    width: auto;\n                    flex: 1;\n                    max-width: 245px;\n                    padding: 14px 16px;\n                    font-size: 11px;\n                }\n                .bf-buy .how-section {\n                    margin-top: 38px;\n                    padding-top: 32px;\n                }\n                .bf-buy .section-intro {\n                    display: block;\n                }\n                .bf-buy .section-intro p {\n                    margin-top: 7px;\n                }\n                .bf-buy .how-grid {\n                    grid-template-columns: 1fr;\n                    gap: 12px;\n                }\n                .bf-buy .how-card {\n                    padding: 20px;\n                }\n                .bf-buy .how-card h3 {\n                    margin-top: 7px;\n                }\n                .bf-buy .faq-section {\n                    margin-top: 35px;\n                }\n            }\n            @media (max-width: 360px) {\n                .bf-buy .monthly-price {\n                    font-size: 17px;\n                }\n                .bf-buy .billing-choices .choice-face {\n                    padding: 12px 7px;\n                }\n                .bf-buy .billing-choices input:checked + .choice-face {\n                    padding: 11px 6px;\n                }\n                .bf-buy .feature {\n                    font-size: 8px;\n                }\n                .bf-buy .stage-caption {\n                    font-size: 8px;\n                    gap: 8px;\n                }\n            }\n            @media (prefers-reduced-motion: reduce) {\n                .bf-buy * {\n                    transition: none !important;\n                }\n            }\n<\/style>\n<main class=\"bf-buy\" data-language=\"de\"><div class=\"bf-buy-app\">\n    <svg class=\"svg-library\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n        <symbol id=\"bf-i-pin\" viewBox=\"0 0 24 24\">\n            <path d=\"M20 10c0 6-8 12-8 12S4 16 4 10a8 8 0 1 1 16 0Z\"><\/path>\n            <circle cx=\"12\" cy=\"10\" r=\"2.5\"><\/circle>\n        <\/symbol>\n        <symbol id=\"bf-i-shield\" viewBox=\"0 0 24 24\">\n            <path d=\"M12 3 3.5 6v6c0 5 8.5 9 8.5 9s8.5-4 8.5-9V6Z\"><\/path>\n            <path d=\"m8 12 2.5 2.5L16 9\"><\/path>\n        <\/symbol>\n        <symbol id=\"bf-i-tool\" viewBox=\"0 0 24 24\">\n            <path d=\"M14 5a6 6 0 0 0-7.5 7.5L3 16a3 3 0 0 0 4 4l3.5-3.5A6 6 0 0 0 18 9l-4 4-3-3Z\"><\/path>\n        <\/symbol>\n        <symbol id=\"bf-i-phone\" viewBox=\"0 0 24 24\">\n            <rect x=\"6\" y=\"2\" width=\"12\" height=\"20\" rx=\"2\"><\/rect>\n            <path d=\"M10 5h4m-3 14h2\"><\/path>\n        <\/symbol>\n        <symbol id=\"bf-i-arrow\" viewBox=\"0 0 24 24\"><path d=\"M4 12h16m-6-6 6 6-6 6\"><\/path><\/symbol>\n        <symbol id=\"bf-i-chevron\" viewBox=\"0 0 24 24\"><path d=\"m6 9 6 6 6-6\"><\/path><\/symbol>\n        <symbol id=\"bf-i-close\" viewBox=\"0 0 24 24\"><path d=\"m6 6 12 12M6 18 18 6\"><\/path><\/symbol>\n        <symbol id=\"bf-i-check\" viewBox=\"0 0 24 24\">\n            <circle cx=\"12\" cy=\"12\" r=\"9\"><\/circle>\n            <path d=\"m8 12 3 3 5-6\"><\/path>\n        <\/symbol>\n        <symbol id=\"bf-i-device\" viewBox=\"0 0 24 24\">\n            <rect x=\"8\" y=\"3\" width=\"8\" height=\"18\" rx=\"2\"><\/rect>\n            <path d=\"M6 7h12M9 16h6\"><\/path>\n        <\/symbol>\n    <\/svg>\n    <div class=\"buy-layout\">\n        <section class=\"product-column\" aria-labelledby=\"bf-hero-heading\">\n            <p class=\"eyebrow\" data-copy=\"eyebrow\">Ein kleiner Tracker. Ein gutes Gef\u00fchl.<\/p>\n            <h1 id=\"bf-hero-heading\">\n                <span data-copy=\"heroOne\">Mehr fahren.<\/span><br><span data-copy=\"heroTwo\">Weniger sorgen.<\/span>\n            <\/h1>\n            <p class=\"intro\" data-copy=\"intro\">Im Lenker versteckt. Mit deinem Smartphone verbunden. Nimm BikeFinder auf deine n\u00e4chste Fahrt mit.<\/p>\n            <div class=\"product-stage\" id=\"bf-product-stage\" data-model=\"g2\">\n                <div class=\"stage-top\">\n                    <strong class=\"model-name\">BikeFinder G2<\/strong><small data-copy=\"designed\">In Norwegen entwickelt<\/small>\n                <\/div>\n                <img class=\"product-photo\" id=\"bf-product-photo\" alt=\"BikeFinder G2 handlebar tracker\">\n                <div class=\"stage-caption\">\n                    <span class=\"stage-tag\"><svg aria-hidden=\"true\"><use href=\"#bf-i-pin\"><\/use><\/svg><span data-copy=\"hidden\">Im Fahrradlenker versteckt<\/span><\/span><span id=\"bf-technology\">Wi-Fi \u00b7 GPS \u00b7 LTE \u00b7 Bluetooth<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"feature-strip\">\n                <div class=\"feature\">\n                    <svg aria-hidden=\"true\"><use href=\"#bf-i-pin\"><\/use><\/svg><span data-copy=\"trackFeature\">Dein Fahrrad orten<\/span>\n                <\/div>\n                <div class=\"feature\">\n                    <svg aria-hidden=\"true\"><use href=\"#bf-i-tool\"><\/use><\/svg><span data-copy=\"installFeature\">Selbst montieren<\/span>\n                <\/div>\n                <div class=\"feature\">\n                    <svg aria-hidden=\"true\"><use href=\"#bf-i-phone\"><\/use><\/svg><span data-copy=\"appFeature\">Mit der App verbunden<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"product-details\">\n                <details>\n                    <summary data-copy=\"boxHeading\">Was ist im Lieferumfang?<\/summary>\n                    <p id=\"bf-box-copy\"><\/p>\n                <\/details>\n                <details>\n                    <summary data-copy=\"fitHeading\">Passt er zu meinem Fahrrad?<\/summary>\n                    <p data-copy=\"fitCopy\">Der Tracker passt in Lenker mit einem Innendurchmesser von 15\u201327 mm. Pr\u00fcfe den Lenker vor der Bestellung.<\/p>\n                <\/details>\n            <\/div>\n        <\/section>\n        <section class=\"configurator\" id=\"start\" aria-labelledby=\"bf-config-heading\">\n            <h2 class=\"config-title\" id=\"bf-config-heading\" data-copy=\"configTitle\">Stelle deinen BikeFinder zusammen.<\/h2>\n            <p class=\"config-subtitle\" id=\"bf-destination-copy\"><\/p>\n            <div class=\"hardware-row\">\n                <div class=\"hardware-info\">\n                    <span class=\"hardware-icon\"><svg aria-hidden=\"true\"><use href=\"#bf-i-device\"><\/use><\/svg><\/span>\n                    <div>\n                        <strong id=\"bf-hardware-name\">BikeFinder G2<\/strong><small id=\"bf-hardware-help\"><\/small>\n                    <\/div>\n                <\/div>\n                <span class=\"hardware-price price\" id=\"bf-hardware-price\"><\/span>\n            <\/div>\n            <label class=\"owner-toggle\"><input id=\"bf-existing-owner\" type=\"checkbox\"><span data-copy=\"alreadyOwn\">Du hast schon einen Tracker? W\u00e4hle nur das Abonnement.<\/span><\/label>\n            <fieldset>\n                <legend>\n                    <span class=\"step\">1<\/span><span data-copy=\"protectionTitle\">W\u00e4hle deinen Schutz<\/span>\n                <\/legend>\n                <div class=\"choices\">\n                    <label class=\"choice\"><input type=\"radio\" name=\"protection\" value=\"tracking\" checked=\"\"><span class=\"choice-face\"><span><strong data-copy=\"tracking\">Ortung<\/strong><small data-copy=\"trackingDesc\">Fahrradortung in der App. Ohne Versicherung.<\/small><\/span><span class=\"radio-mark\" aria-hidden=\"true\"><\/span><\/span><\/label>\n                    <label class=\"choice\"><input type=\"radio\" name=\"protection\" value=\"insurance\" id=\"bf-insurance-option\" aria-describedby=\"bf-insurance-unavailable\"><span class=\"choice-face\"><span><strong data-copy=\"insured\">Ortung + Versicherung<\/strong><small data-copy=\"insuredDesc\">Ortung mit optionaler Fahrradversicherung.<\/small><\/span><span class=\"radio-mark\" aria-hidden=\"true\"><\/span><\/span><\/label>\n                <\/div>\n                <p id=\"bf-insurance-unavailable\" class=\"market-note\" hidden=\"\"><\/p>\n                <div class=\"insurance-box\" id=\"bf-insurance-box\" hidden=\"\">\n                    <label for=\"bf-bike-value\" data-copy=\"valueLabel\">W\u00e4hle eine Fahrradwertgrenze<\/label>\n                    <select class=\"value-select\" id=\"bf-bike-value\"><\/select>\n                    <p class=\"eligibility\" id=\"bf-eligibility-copy\"><\/p>\n                    <div class=\"policy-links\">\n                        <a id=\"bf-policy-link\" href=\"https:\/\/bikefinder.com\/terms\/norway\/\" target=\"_blank\" rel=\"noopener\" data-copy=\"policy\">Versicherungsbedingungen \u2197<\/a><a id=\"bf-ipid-link\" href=\"https:\/\/bikefinder.com\/ipid\/norway\/\" target=\"_blank\" rel=\"noopener\" data-copy=\"ipid\">Produktinformation \u2197<\/a>\n                    <\/div>\n                    <label class=\"residence-check\" id=\"bf-residence-label\"><input id=\"bf-residence\" type=\"checkbox\"><span id=\"bf-residence-copy\"><\/span><\/label>\n                <\/div>\n            <\/fieldset>\n            <fieldset>\n                <legend>\n                    <span class=\"step\">2<\/span><span data-copy=\"billingTitle\">W\u00e4hle dein Zahlungsintervall<\/span>\n                <\/legend>\n                <div class=\"choices billing-choices\" id=\"bf-billing-choices\"><\/div>\n                <p class=\"billing-note\" id=\"bf-billing-note\"><\/p>\n            <\/fieldset>\n            <label class=\"accessory\" id=\"bf-accessory-row\"><span class=\"accessory-copy\"><input type=\"checkbox\" id=\"bf-accessory\"><span><strong data-copy=\"accessory\">Passenden DummyBarEnd hinzuf\u00fcgen<\/strong><small data-copy=\"accessoryHelp\">Ein passender Lenkerstopfen f\u00fcr die andere Seite.<\/small><\/span><\/span><span class=\"price\" id=\"bf-accessory-price\"><\/span><\/label>\n            <div class=\"order-summary\" aria-live=\"polite\" aria-atomic=\"true\">\n                <div class=\"summary-line\" id=\"bf-tracker-summary-row\">\n                    <span class=\"model-name\">BikeFinder G2<\/span><span id=\"bf-tracker-summary-price\"><\/span>\n                <\/div>\n                <div class=\"summary-line\">\n                    <span id=\"bf-plan-summary-label\"><\/span><span id=\"bf-plan-summary-price\"><\/span>\n                <\/div>\n                <div class=\"summary-line\" id=\"bf-accessory-summary-row\" hidden=\"\">\n                    <span>DummyBarEnd<\/span><span id=\"bf-accessory-summary-price\"><\/span>\n                <\/div>\n                <div class=\"today-line\">\n                    <strong data-copy=\"dueToday\">Heute zu zahlen<\/strong><span class=\"price today-price\"><\/span>\n                <\/div>\n                <p class=\"renewal\" id=\"bf-renewal-copy\"><\/p>\n                <p class=\"shipping-note\" data-copy=\"shippingNote\">Versand und endg\u00fcltige Steuern werden an der Kasse berechnet.<\/p>\n            <\/div><div class=\"bf-buy-cart-note\" hidden=\"\"><p>Dein Warenkorb enth\u00e4lt bereits Produkte. Pr\u00fcfe sie, um fortzufahren, oder entferne sie f\u00fcr eine neue Zusammenstellung.<\/p><button type=\"button\" data-review-cart=\"\">Warenkorb pr\u00fcfen<\/button><\/div>\n            <p class=\"inline-error\" id=\"bf-eligibility-error\" role=\"alert\" hidden=\"\"><\/p>\n            <p class=\"bf-buy-alert\" hidden=\"\" role=\"alert\"><\/p><p class=\"bf-buy-busy\" hidden=\"\" role=\"status\"><\/p><button class=\"primary desktop-cta\" type=\"button\" data-checkout=\"\">\n                <span data-copy=\"checkout\">Weiter zur Kasse<\/span><svg aria-hidden=\"true\"><use href=\"#bf-i-arrow\"><\/use><\/svg>\n            <\/button>\n            <p class=\"cta-footnote\" data-copy=\"reviewNote\">Pr\u00fcfe deine Auswahl vor der Zahlung.<\/p>\n        <\/section>\n    <\/div>\n    <section class=\"how-section\" id=\"bf-how-it-works\" aria-labelledby=\"bf-how-heading\">\n        <div class=\"section-intro\">\n            <h2 id=\"bf-how-heading\" data-copy=\"howHeading\">Kleiner Tracker. Einfacher Start.<\/h2>\n            <p data-copy=\"howIntro\">Auspacken und losfahren.<\/p>\n        <\/div>\n        <div class=\"how-grid\">\n            <article class=\"how-card\">\n                <span class=\"how-number\">01 \/<\/span>\n                <h3 data-copy=\"installTitle\">Im Lenker verstecken.<\/h3>\n                <p data-copy=\"installCopy\">Befestige den Tracker mit dem mitgelieferten Montagewerkzeug. Er bleibt unauff\u00e4llig, damit dein Fahrrad aussieht wie bisher.<\/p>\n            <\/article>\n            <article class=\"how-card\">\n                <span class=\"how-number\">02 \/<\/span>\n                <h3 data-copy=\"activateTitle\">Mit der App verbinden.<\/h3>\n                <p data-copy=\"activateCopy\">Lade die BikeFinder-App herunter, verbinde deinen Tracker und aktiviere dein Abonnement.<\/p>\n            <\/article>\n            <article class=\"how-card\">\n                <span class=\"how-number\">03 \/<\/span>\n                <h3 data-copy=\"rideTitle\">Genie\u00dfe deine Fahrt.<\/h3>\n                <p data-copy=\"rideCopy\">Verfolge die Position deines Fahrrads in der App und melde einen Diebstahl, wenn du Hilfe ben\u00f6tigst.<\/p>\n            <\/article>\n        <\/div>\n    <\/section>\n    <section class=\"faq-section\" id=\"bf-questions\" aria-labelledby=\"bf-faq-heading\">\n        <h2 id=\"bf-faq-heading\" data-copy=\"faqHeading\">Gut zu wissen.<\/h2>\n        <details>\n            <summary data-copy=\"subscriptionQuestion\">Warum brauche ich ein Abonnement?<\/summary>\n            <p data-copy=\"subscriptionAnswer\">Ein aktives Abonnement verbindet den Tracker mit dem BikeFinder-Dienst und aktiviert die Ortung in der App. Tracker und Abonnement sind getrennte Bestandteile deines Kaufs.<\/p>\n        <\/details>\n        <details>\n            <summary data-copy=\"paymentQuestion\">Wann bezahle ich mein Abonnement?<\/summary>\n            <p data-copy=\"paymentAnswer\">Die erste Abonnementzahlung ist im heutigen Betrag enthalten. Ein Monatsabo verl\u00e4ngert sich monatlich. Abonnements f\u00fcr 12 oder 24 Monate werden vollst\u00e4ndig bezahlt und verl\u00e4ngern sich im selben Intervall. Die Zusammenfassung zeigt den Verl\u00e4ngerungsbetrag getrennt vom Tracker.<\/p>\n        <\/details>\n        <details>\n            <summary data-copy=\"insuranceQuestion\">Ist eine Versicherung enthalten?<\/summary>\n            <p data-copy=\"insuranceAnswer\">Nur wenn du Ortung mit Versicherung w\u00e4hlst. Verf\u00fcgbarkeit, Fahrradwertgrenzen und Berechtigung richten sich nach Lieferland und Versicherungsbedingungen. Das Lieferland allein begr\u00fcndet keine Versicherungsberechtigung.<\/p>\n        <\/details>\n        <details>\n            <summary data-copy=\"destinationQuestion\">Warum ist das Lieferland wichtig?<\/summary>\n            <p data-copy=\"destinationAnswer\">Das Lieferland bestimmt die verf\u00fcgbaren Tracker, Preise und Versicherungen. Du kannst die Seite in einer anderen Sprache lesen, ohne diese Auswahl zu \u00e4ndern.<\/p>\n        <\/details>\n        <details>\n            <summary data-copy=\"fitHeading\">Passt er zu meinem Fahrrad?<\/summary>\n            <p data-copy=\"fitCopy\">Der Tracker passt in Lenker mit einem Innendurchmesser von 15\u201327 mm. Pr\u00fcfe den Lenker vor der Bestellung.<\/p>\n        <\/details>\n    <\/section>\n    <div class=\"mobile-checkout\">\n        <div class=\"mobile-total\">\n            <small data-copy=\"dueToday\">Heute zu zahlen<\/small><strong class=\"today-price\"><\/strong>\n        <\/div>\n        <button class=\"primary\" type=\"button\" data-checkout=\"\">\n            <span data-copy=\"checkout\">Weiter zur Kasse<\/span><svg aria-hidden=\"true\"><use href=\"#bf-i-arrow\"><\/use><\/svg>\n        <\/button>\n    <\/div>\n<span data-page-end=\"\" aria-hidden=\"true\" style=\"display: block; height: 1px;\"><\/span><\/div><p class=\"bf-buy-initial-error\" role=\"alert\" hidden><\/p><div class=\"bf-buy-fallback\"><h1>BikeFinder kaufen<\/h1><p data-country-name>Unknown<\/p><div class=\"bf-source-trackers\"><div class=\"woocommerce columns-3 \"><\/div><div class=\"woocommerce columns-3 \"><ul class=\"products columns-3\">\n<li class=\"desktop-align-left tablet-align-left mobile-align-left product type-product post-345377 status-publish first instock product_cat-bikefinder-tracker-de product_cat-tracker-de has-post-thumbnail taxable shipping-taxable purchasable product-type-simple\">\n\t<a href=\"https:\/\/bikefinder.com\/de\/produkt\/bikefinder-tracker-bfg2\/\" class=\"woocommerce-LoopProduct-link woocommerce-loop-product__link\"><img loading=\"lazy\" decoding=\"async\" width=\"75\" height=\"75\" src=\"https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/01\/BikeFinder_Tracker_Buy_DE_1-75x75.jpg\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"BikeFinder G2-Tracker und Verpackung neben einem Smartphone mit der Tracking-App\" srcset=\"https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/01\/BikeFinder_Tracker_Buy_DE_1-75x75.jpg 75w, https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/01\/BikeFinder_Tracker_Buy_DE_1-150x150.jpg 150w, https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/01\/BikeFinder_Tracker_Buy_DE_1-100x100.jpg 100w\" sizes=\"auto, (max-width: 75px) 100vw, 75px\" \/><h2 class=\"woocommerce-loop-product__title\">BikeFinder G2 Tracker<\/h2>\n\t<span class=\"price\"><span class=\"woocommerce-Price-amount amount\"><bdi>1.979,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\" translate=\"no\"><span class=\"woocommerce-Price-currencyCode\">NOK<\/span><\/span><\/bdi><\/span><\/span>\n<\/a><a href=\"\/de\/wp-json\/wp\/v2\/pages\/170064?add-to-cart=345377\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_345377\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"345377\" data-product_sku=\"BFG2\" aria-label=\"In den Warenkorb legen: \u201eBikeFinder G2 Tracker\u201c\" rel=\"nofollow\" data-success_message=\"\u201eBikeFinder G2 Tracker\u201c wurde deinem Warenkorb hinzugef\u00fcgt\" role=\"button\">In den Warenkorb<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_345377\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n<\/li>\n<\/ul>\n<\/div><\/div><div class=\"bf-source-accessory\"><p class=\"product woocommerce add_to_cart_inline bikefinder-native-accessory\" style=\"\"><span class=\"woocommerce-Price-amount amount\"><bdi>135,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\" translate=\"no\"><span class=\"woocommerce-Price-currencyCode\">NOK<\/span><\/span><\/bdi><\/span><a href=\"\/de\/wp-json\/wp\/v2\/pages\/170064?add-to-cart=317930\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_317930\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"317930\" data-product_sku=\"dummy-bar-end-2\" aria-label=\"In den Warenkorb legen: \u201eDummy Bar End\u201c\" rel=\"nofollow\" data-success_message=\"\u201eDummy Bar End\u201c wurde deinem Warenkorb hinzugef\u00fcgt\" role=\"button\">In den Warenkorb<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_317930\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n<\/p><\/div><h2>Ortungsabonnements<\/h2><div class=\"bf-buy-native-plan\" data-tier=\"0\" data-months=\"24\" data-product-id=\"170128\"><h3>24 Monate<\/h3><p class=\"product woocommerce add_to_cart_inline bikefinder-native-plan\" style=\"\"><span class=\"woocommerce-Price-amount amount\"><bdi>1.320,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\" translate=\"no\"><span class=\"woocommerce-Price-currencyCode\">NOK<\/span><\/span><\/bdi><\/span> <span class=\"subscription-details\"> alle 2 Jahre<\/span><a href=\"https:\/\/bikefinder.com\/de\/produkt\/abonnement\/?attribute_payment-period=24+Monate&#038;attribute_tier=Preisstufe+0&#038;variation_id=170128&#038;add-to-cart=170115\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_170128\" data-quantity=\"1\" class=\"button product_type_subscription_variation add_to_cart_button ajax_add_to_cart\" data-product_id=\"170128\" data-product_sku=\"subscription-24months-tier0-v2\" aria-label=\"In den Warenkorb legen: \u201eAbonnement\u201c\" rel=\"nofollow\" data-success_message=\"\u201eAbonnement\u201c wurde deinem Warenkorb hinzugef\u00fcgt\" role=\"button\">In den Warenkorb<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_170128\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n<\/p><\/div>\n<div class=\"bf-buy-native-plan\" data-tier=\"0\" data-months=\"12\" data-product-id=\"170127\"><h3>12 Monate<\/h3><p class=\"product woocommerce add_to_cart_inline bikefinder-native-plan\" style=\"\"><span class=\"woocommerce-Price-amount amount\"><bdi>708,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\" translate=\"no\"><span class=\"woocommerce-Price-currencyCode\">NOK<\/span><\/span><\/bdi><\/span> <span class=\"subscription-details\"> \/ Jahr<\/span><a href=\"https:\/\/bikefinder.com\/de\/produkt\/abonnement\/?attribute_payment-period=12+Monate&#038;attribute_tier=Preisstufe+0&#038;variation_id=170127&#038;add-to-cart=170115\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_170127\" data-quantity=\"1\" class=\"button product_type_subscription_variation add_to_cart_button ajax_add_to_cart\" data-product_id=\"170127\" data-product_sku=\"subscription-12months-tier0-v2\" aria-label=\"In den Warenkorb legen: \u201eAbonnement\u201c\" rel=\"nofollow\" data-success_message=\"\u201eAbonnement\u201c wurde deinem Warenkorb hinzugef\u00fcgt\" role=\"button\">In den Warenkorb<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_170127\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n<\/p><\/div>\n<div class=\"bf-buy-native-plan\" data-tier=\"0\" data-months=\"1\" data-product-id=\"170126\"><h3>1 Monat<\/h3><p class=\"product woocommerce add_to_cart_inline bikefinder-native-plan\" style=\"\"><span class=\"woocommerce-Price-amount amount\"><bdi>69,00&nbsp;<span class=\"woocommerce-Price-currencySymbol\" translate=\"no\"><span class=\"woocommerce-Price-currencyCode\">NOK<\/span><\/span><\/bdi><\/span> <span class=\"subscription-details\"> \/ Monat<\/span><a href=\"https:\/\/bikefinder.com\/de\/produkt\/abonnement\/?attribute_payment-period=1+Monat&#038;attribute_tier=Preisstufe+0&#038;variation_id=170126&#038;add-to-cart=170115\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_170126\" data-quantity=\"1\" class=\"button product_type_subscription_variation add_to_cart_button ajax_add_to_cart\" data-product_id=\"170126\" data-product_sku=\"subscription-1months-tier0-v2\" aria-label=\"In den Warenkorb legen: \u201eAbonnement\u201c\" rel=\"nofollow\" data-success_message=\"\u201eAbonnement\u201c wurde deinem Warenkorb hinzugef\u00fcgt\" role=\"button\">In den Warenkorb<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_170126\" class=\"screen-reader-text\">\n\t\t\t<\/span>\n<\/p><\/div>\n\n\n\n\n\n\n\n\n<\/div><script type=\"application\/json\" class=\"bf-buy-config\">{\"locale\":\"de-DE\",\"copy\":{\"eyebrow\":\"Ein kleiner Tracker. Ein gutes Gef\u00fchl.\",\"heroOne\":\"Mehr fahren.\",\"heroTwo\":\"Weniger sorgen.\",\"intro\":\"Im Lenker versteckt. Mit deinem Smartphone verbunden. Nimm BikeFinder auf deine n\u00e4chste Fahrt mit.\",\"designed\":\"In Norwegen entwickelt\",\"hidden\":\"Im Fahrradlenker versteckt\",\"trackFeature\":\"Dein Fahrrad orten\",\"installFeature\":\"Selbst montieren\",\"appFeature\":\"Mit der App verbunden\",\"boxHeading\":\"Was ist im Lieferumfang?\",\"fitHeading\":\"Passt er zu meinem Fahrrad?\",\"fitCopy\":\"Der Tracker passt in Lenker mit einem Innendurchmesser von 15\u201327 mm. Pr\u00fcfe den Lenker vor der Bestellung.\",\"configTitle\":\"Stelle deinen BikeFinder zusammen.\",\"alreadyOwn\":\"Du hast schon einen Tracker? W\u00e4hle nur das Abonnement.\",\"protectionTitle\":\"W\u00e4hle deinen Schutz\",\"tracking\":\"Ortung\",\"trackingDesc\":\"Fahrradortung in der App. Ohne Versicherung.\",\"insured\":\"Ortung + Versicherung\",\"insuredDesc\":\"Ortung mit optionaler Fahrradversicherung.\",\"valueLabel\":\"W\u00e4hle eine Fahrradwertgrenze\",\"policy\":\"Versicherungsbedingungen \u2197\",\"ipid\":\"Produktinformation \u2197\",\"billingTitle\":\"W\u00e4hle dein Zahlungsintervall\",\"accessory\":\"Passenden DummyBarEnd hinzuf\u00fcgen\",\"accessoryHelp\":\"Ein passender Lenkerstopfen f\u00fcr die andere Seite.\",\"dueToday\":\"Heute zu zahlen\",\"shippingNote\":\"Versand und endg\u00fcltige Steuern werden an der Kasse berechnet.\",\"checkout\":\"Weiter zur Kasse\",\"reviewNote\":\"Pr\u00fcfe deine Auswahl vor der Zahlung.\",\"howHeading\":\"Kleiner Tracker. Einfacher Start.\",\"howIntro\":\"Auspacken und losfahren.\",\"installTitle\":\"Im Lenker verstecken.\",\"installCopy\":\"Befestige den Tracker mit dem mitgelieferten Montagewerkzeug. Er bleibt unauff\u00e4llig, damit dein Fahrrad aussieht wie bisher.\",\"activateTitle\":\"Mit der App verbinden.\",\"activateCopy\":\"Lade die BikeFinder-App herunter, verbinde deinen Tracker und aktiviere dein Abonnement.\",\"rideTitle\":\"Genie\u00dfe deine Fahrt.\",\"rideCopy\":\"Verfolge die Position deines Fahrrads in der App und melde einen Diebstahl, wenn du Hilfe ben\u00f6tigst.\",\"faqHeading\":\"Gut zu wissen.\",\"subscriptionQuestion\":\"Warum brauche ich ein Abonnement?\",\"subscriptionAnswer\":\"Ein aktives Abonnement verbindet den Tracker mit dem BikeFinder-Dienst und aktiviert die Ortung in der App. Tracker und Abonnement sind getrennte Bestandteile deines Kaufs.\",\"paymentQuestion\":\"Wann bezahle ich mein Abonnement?\",\"paymentAnswer\":\"Die erste Abonnementzahlung ist im heutigen Betrag enthalten. Ein Monatsabo verl\u00e4ngert sich monatlich. Abonnements f\u00fcr 12 oder 24 Monate werden vollst\u00e4ndig bezahlt und verl\u00e4ngern sich im selben Intervall. Die Zusammenfassung zeigt den Verl\u00e4ngerungsbetrag getrennt vom Tracker.\",\"insuranceQuestion\":\"Ist eine Versicherung enthalten?\",\"insuranceAnswer\":\"Nur wenn du Ortung mit Versicherung w\u00e4hlst. Verf\u00fcgbarkeit, Fahrradwertgrenzen und Berechtigung richten sich nach Lieferland und Versicherungsbedingungen. Das Lieferland allein begr\u00fcndet keine Versicherungsberechtigung.\",\"destinationQuestion\":\"Warum ist das Lieferland wichtig?\",\"destinationAnswer\":\"Das Lieferland bestimmt die verf\u00fcgbaren Tracker, Preise und Versicherungen. Du kannst die Seite in einer anderen Sprache lesen, ohne diese Auswahl zu \u00e4ndern.\",\"month\":\"Monat\",\"months\":\"Monate\",\"monthly\":\"Monatlich\",\"billed\":\"zu zahlen\",\"save\":\"Spare\",\"perMonth\":\"\/Mon.\",\"destination\":\"Deine Auswahl f\u00fcr die Lieferung nach\",\"hardwareHelp\":\"Tracker + Montageset \u00b7 einmaliger Kauf\",\"ownerHelp\":\"Nur Abonnement \u00b7 ohne Tracker\",\"ownerLabel\":\"Dein vorhandener Tracker\",\"billingMonthly\":\"Monatliche Zahlung. Der erste Monat ist unten enthalten.\",\"billingLong\":\"Vollst\u00e4ndige Zahlung, keine monatlichen Raten. Verl\u00e4ngerung im selben Intervall.\",\"renewal\":\"Danach\",\"renewalMonth\":\"jeden Monat\",\"renewalLong\":\"alle\",\"planFirst\":\"erste\",\"valueUp\":\"Fahrradwert bis\",\"eligibility\":\"Die Versicherung ist optional. Schutz und Berechtigung richten sich nach den Bedingungen. Ein st\u00e4ndiger Wohnsitz ist erforderlich in\",\"eligibilityEnd\":\"Das Lieferland allein begr\u00fcndet keine Versicherungsberechtigung.\",\"germanEligibility\":\"Dies ist die deutsche Versicherungsoption. Pr\u00fcfe die Bedingungen f\u00fcr Versicherungsschutz und Berechtigung.\",\"residence\":\"Ich habe meinen st\u00e4ndigen Wohnsitz in\",\"error\":\"Best\u00e4tige deinen st\u00e4ndigen Wohnsitz im Lieferland f\u00fcr diese Versicherung. W\u00e4hle andernfalls Ortung ohne Versicherung.\",\"unavailable\":\"Eine Fahrradversicherung ist nicht verf\u00fcgbar f\u00fcr die Lieferung nach\",\"stillTracking\":\"Ortung ist verf\u00fcgbar.\",\"boxG2\":\"Tracker, Lenkeradapter, Ladekabel, Montagewerkzeug, Werkzeug zum Entfernen des Batteriemoduls und Benutzerhandbuch.\",\"boxG1\":\"Tracker, Lenkeradapter, USB-C-Ladekabel, Montagewerkzeug und Benutzerhandbuch.\",\"priceUnavailable\":\"Deine Auswahl konnte nicht geladen werden. Du kannst weiterhin die Produktoptionen unten nutzen.\",\"checkoutError\":\"Das Produkt konnte nicht hinzugef\u00fcgt werden. Pr\u00fcfe deinen Warenkorb oder versuche es erneut.\",\"partialError\":\"Einige Produkte k\u00f6nnten bereits im Warenkorb sein. Pr\u00fcfe sie vor \u00c4nderungen oder versuche dieselbe Auswahl erneut.\",\"existingCart\":\"Dein Warenkorb enth\u00e4lt bereits Produkte. Pr\u00fcfe sie, um fortzufahren, oder entferne sie f\u00fcr eine neue Zusammenstellung.\",\"reviewCart\":\"Warenkorb pr\u00fcfen\",\"retry\":\"Erneut versuchen\",\"adding\":\"Deine Auswahl wird hinzugef\u00fcgt\u2026\",\"deliveryChanged\":\"Dein Lieferland hat sich ge\u00e4ndert. Lade die Seite neu, um die passende Auswahl zu sehen.\",\"unavailableHardware\":\"Der Tracker ist derzeit nicht verf\u00fcgbar. Du kannst weiterhin ein Abonnement f\u00fcr einen vorhandenen Tracker w\u00e4hlen.\",\"fallbackTitle\":\"BikeFinder kaufen\",\"fallbackTracking\":\"Ortungsabonnements\",\"fallbackInsurance\":\"Ortung mit Versicherung\"},\"models\":{\"73448\":{\"role\":\"g1\",\"name\":\"BikeFinder G1\",\"image\":{\"id\":124416,\"src\":\"https:\/\/bikefinder.com\/wp-content\/uploads\/2020\/03\/IMG_0553-scaled.jpg\",\"alt\":\"BikeFinder-Tracker, Ladekabel und Werkzeug neben der Verpackung\"}},\"185644\":{\"role\":\"fahrradfinden\",\"name\":\"FahrradFinden G1\",\"image\":{\"id\":185825,\"src\":\"https:\/\/bikefinder.com\/wp-content\/uploads\/2022\/08\/50-FahradFinden-net-shop-photo-3893-e1664871102963.jpg\",\"alt\":\"FahrradFinden-Tracker, Ladekabel und Zubeh\u00f6r neben der Verpackung\"}},\"345377\":{\"role\":\"g2\",\"name\":\"BikeFinder G2\",\"image\":{\"id\":312862,\"src\":\"https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/01\/BikeFinder_Tracker_Buy_2.jpg\",\"alt\":\"Aufrecht stehender BikeFinder G2-Tracker\"}}}}<\/script><\/main>\n<script>\/** Buying-page presentation over native WooCommerce shortcodes and cart endpoints. *\/\n(function () {\n    'use strict';\n\n    async function initialise() {\n        const root = document.querySelector('.bf-buy');\n        if (!root || root.dataset.initialised) return;\n        root.dataset.initialised = 'true';\n        const config = JSON.parse(root.querySelector('.bf-buy-config').textContent);\n        const copy = config.copy;\n        const find = (id) => root.querySelector('#bf-' + id);\n        const note = root.querySelector('.bf-buy-cart-note');\n        const source = root.querySelector('.bf-buy-fallback');\n        const ajaxParams = window.wc_add_to_cart_params;\n        const currencyMeta = {};\n        const state = {\n            insurance: false,\n            tier: 1,\n            months: 12,\n            owner: false,\n            accessory: false,\n            busy: false,\n            job: null,\n            cart: null,\n        };\n        const market = source.querySelector('[data-offer-zone]');\n        const countryName = source.querySelector('[data-country-name]').textContent.trim();\n        const country = () =>\n            document.querySelector('select.wcpbc-country-switcher')?.value ||\n            state.cart?.shipping_address?.country;\n        const expectedCountry = country();\n        const plans = new Map();\n        let tracker;\n        let accessory;\n\n        function rememberSelection() {\n            try {\n                window.sessionStorage.setItem(\n                    'bikefinder-buying-selection',\n                    JSON.stringify({\n                        country: state.cart.shipping_address.country,\n                        insurance: state.insurance,\n                        tier: state.tier,\n                        months: state.months,\n                        owner: state.owner,\n                        accessory: state.accessory,\n                        residence: find('residence').checked,\n                    }),\n                );\n            } catch {\n                \/* Browser storage is optional; native products remain usable. *\/\n            }\n        }\n\n        function restoreSelection() {\n            try {\n                const saved = JSON.parse(\n                    window.sessionStorage.getItem('bikefinder-buying-selection'),\n                );\n                if (!saved) return;\n                if ([1, 12, 24].includes(saved.months)) state.months = saved.months;\n                state.owner = saved.owner === true;\n                state.accessory = saved.accessory === true;\n                if (saved.country === state.cart.shipping_address.country) {\n                    if (Number.isInteger(saved.tier) && plans.has(`${saved.tier}-${state.months}`))\n                        state.tier = saved.tier;\n                    state.insurance =\n                        saved.insurance === true &&\n                        Boolean(market.dataset.insuranceCountry) &&\n                        plans.has(`${state.tier}-${state.months}`);\n                    find('residence').checked = saved.residence === true;\n                }\n            } catch {\n                \/* Ignore a missing or outdated draft. *\/\n            }\n        }\n\n        function message(text) {\n            const alert = root.querySelector(\n                root.classList.contains('is-ready') ? '.bf-buy-alert' : '.bf-buy-initial-error',\n            );\n            alert.textContent = text;\n            alert.hidden = !text;\n        }\n\n        async function json(url, options = {}) {\n            const response = await fetch(url, {\n                credentials: 'same-origin',\n                cache: 'no-store',\n                signal: AbortSignal.timeout(20000),\n                ...options,\n            });\n            if (!response.ok) throw new Error(copy.checkoutError);\n            const result = await response.json();\n            return result;\n        }\n\n        const cart = () => json('\/wp-json\/wc\/store\/v1\/cart?bf_buy=' + Date.now());\n        const quantity = (data, id) =>\n            data.items\n                .filter((item) => Number(item.id) === Number(id))\n                .reduce((sum, item) => sum + item.quantity, 0);\n        const selectedPlan = () => plans.get(`${state.insurance ? state.tier : 0}-${state.months}`);\n\n        function parsePrice(element) {\n            const amount =\n                element?.querySelector('ins .woocommerce-Price-amount') ||\n                element?.querySelector('.woocommerce-Price-amount');\n            if (!amount) return null;\n            const text = amount.textContent;\n            const stripped = text\n                .replaceAll(currencyMeta.currency_thousand_separator, '')\n                .replace(\/[^\\d.,-]\/g, '')\n                .replace(currencyMeta.currency_decimal_separator, '.');\n            const number = Number(stripped);\n            return Number.isFinite(number) && number >= 0\n                ? Math.round(number * 10 ** currencyMeta.currency_minor_unit)\n                : null;\n        }\n\n        function money(minor) {\n            return new Intl.NumberFormat(config.locale, {\n                style: 'currency',\n                currency: currencyMeta.currency_code,\n                minimumFractionDigits:\n                    minor % 10 ** currencyMeta.currency_minor_unit\n                        ? currencyMeta.currency_minor_unit\n                        : 0,\n                maximumFractionDigits: currencyMeta.currency_minor_unit,\n            }).format(minor \/ 10 ** currencyMeta.currency_minor_unit);\n        }\n\n        function nativeProduct(element) {\n            const button = element?.querySelector('.add_to_cart_button[data-product_id]');\n            const price = parsePrice(element?.querySelector('.price') || element);\n            return button && price !== null\n                ? { id: Number(button.dataset.product_id), price, button }\n                : null;\n        }\n\n        function setPrice(selector, price) {\n            root.querySelectorAll(selector).forEach((el) => {\n                el.textContent = money(price);\n            });\n        }\n\n        function openCart() {\n            if (window.jQuery && window.fkcart_app_data) {\n                window.jQuery(document.body).trigger('fkcart_open');\n            } else if (ajaxParams?.cart_url) {\n                window.location.assign(ajaxParams.cart_url);\n            }\n        }\n\n        function setBusy(busy) {\n            state.busy = busy;\n            root.querySelector('.configurator').setAttribute('aria-busy', String(busy));\n            root.querySelectorAll(\n                '.bf-buy-app input, .bf-buy-app select, .bf-buy-app button',\n            ).forEach((el) => {\n                if (busy) {\n                    el.dataset.wasDisabled = el.disabled ? 'true' : 'false';\n                    el.disabled = true;\n                } else {\n                    el.disabled = el.dataset.wasDisabled === 'true';\n                    delete el.dataset.wasDisabled;\n                }\n            });\n            root.querySelector('.bf-buy-busy').hidden = !busy;\n        }\n\n        function renderBilling() {\n            const active = root.ownerDocument.activeElement;\n            const focused = active?.name === 'bf-billing' ? active.value : null;\n            const tier = state.insurance ? state.tier : 0;\n            const monthly = plans.get(`${tier}-1`);\n            const holder = find('billing-choices');\n            holder.replaceChildren();\n            [1, 12, 24].forEach((months) => {\n                const plan = plans.get(`${tier}-${months}`);\n                const label = document.createElement('label');\n                label.className = 'choice';\n                const input = document.createElement('input');\n                input.type = 'radio';\n                input.name = 'bf-billing';\n                input.value = months;\n                input.checked = state.months === months;\n                input.disabled = !plan;\n                const face = document.createElement('span');\n                face.className = 'choice-face';\n                const title = document.createElement('strong');\n                title.textContent = months === 1 ? copy.monthly : `${months} ${copy.months}`;\n                const equivalent = document.createElement('span');\n                equivalent.className = 'monthly-price';\n                equivalent.textContent = plan ? money(Math.round(plan.price \/ months)) : '\u2014';\n                const suffix = document.createElement('span');\n                suffix.className = 'per-month';\n                suffix.textContent = copy.perMonth;\n                const billed = document.createElement('small');\n                billed.className = 'billed';\n                \/\/ Retain Subscriptions' native billing\/trial\/signup text instead of reconstructing it.\n                if (plan) billed.append(plan.nativePrice.cloneNode(true));\n                const saving =\n                    plan && monthly\n                        ? Math.round((1 - plan.price \/ (monthly.price * months)) * 100)\n                        : 0;\n                const badge = document.createElement('span');\n                badge.className = 'saving';\n                badge.textContent = saving > 0 ? `${copy.save} ${saving}%` : '\u2014';\n                if (!(saving > 0)) {\n                    badge.style.visibility = 'hidden';\n                    badge.setAttribute('aria-hidden', 'true');\n                }\n                face.append(title, equivalent, suffix, billed, badge);\n                label.append(input, face);\n                holder.append(label);\n            });\n            if (focused) holder.querySelector(`input[value=\"${focused}\"]`).focus();\n        }\n\n        function render() {\n            const plan = selectedPlan();\n            const stock = Boolean(tracker);\n            const hasCart = state.cart?.items.length > 0 && !state.job;\n            const hardwarePrice = tracker ? money(tracker.price) : '\u2014';\n            find('hardware-price').textContent = state.owner ? '\u2014' : hardwarePrice;\n            find('hardware-name').textContent = state.owner\n                ? copy.ownerLabel\n                : config.models[config.trackerId]?.name || copy.fallbackTitle;\n            find('hardware-help').textContent = state.owner ? copy.ownerHelp : copy.hardwareHelp;\n            find('existing-owner').checked = state.owner;\n            find('accessory').checked = state.accessory;\n            find('bike-value').value = String(state.tier);\n            root.querySelectorAll('input[name=\"bf-protection\"]').forEach((input) => {\n                input.checked = (input.value === 'insurance') === state.insurance;\n            });\n            find('accessory-row').hidden = state.owner || !accessory;\n            find('insurance-box').hidden = !state.insurance;\n            find('insurance-option').disabled = !market?.dataset.insuranceCountry;\n            find('insurance-unavailable').hidden = Boolean(market?.dataset.insuranceCountry);\n            find('insurance-unavailable').textContent =\n                `${copy.unavailable} ${countryName}. ${copy.stillTracking}`;\n            find('billing-note').textContent =\n                state.months === 1 ? copy.billingMonthly : copy.billingLong;\n            renderBilling();\n            find('tracker-summary-row').hidden = state.owner;\n            if (tracker) find('tracker-summary-price').textContent = money(tracker.price);\n            find('plan-summary-label').textContent =\n                `${state.insurance ? copy.insured : copy.tracking} \u00b7 ${state.months} ${state.months === 1 ? copy.month : copy.months}`;\n            find('plan-summary-price').textContent = plan ? money(plan.price) : '\u2014';\n            find('accessory-summary-row').hidden = !accessory || !state.accessory || state.owner;\n            if (accessory) {\n                find('accessory-price').textContent = '+ ' + money(accessory.price);\n                find('accessory-summary-price').textContent = money(accessory.price);\n            }\n            const total =\n                (plan?.price || 0) +\n                (state.owner ? 0 : tracker?.price || 0) +\n                (state.accessory && !state.owner ? accessory?.price || 0 : 0);\n            setPrice('.today-price', total);\n            find('renewal-copy').textContent = plan\n                ? `${copy.renewal} ${money(plan.price)} ${state.months === 1 ? copy.renewalMonth : `${copy.renewalLong} ${state.months} ${copy.months}`}.`\n                : '';\n            note.hidden = !hasCart;\n            const purchaseLabel = state.job ? copy.retry : copy.checkout;\n            root.querySelectorAll('[data-checkout]').forEach((button) => {\n                button.querySelector('span').textContent = hasCart\n                    ? copy.reviewCart\n                    : purchaseLabel;\n                button.setAttribute(\n                    'aria-disabled',\n                    String(!hasCart && (!plan || (!stock && !state.owner))),\n                );\n            });\n            find('eligibility-error').hidden = true;\n            if (!stock && !state.owner) message(copy.unavailableHardware);\n            rememberSelection();\n        }\n\n        function checkoutUrl(fragments) {\n            const fragment = Object.values(fragments || {})\n                .filter((value) => typeof value === 'string')\n                .join('');\n            const document = new window.DOMParser().parseFromString(fragment, 'text\/html');\n            const anchor =\n                document.querySelector('#fkcart-checkout-button, a.checkout.wc-forward') ||\n                window.document.querySelector('#fkcart-checkout-button, a.checkout.wc-forward');\n            if (anchor) {\n                const url = new URL(anchor.href, window.location.href);\n                if (url.origin === window.location.origin) return url.href;\n            }\n            return ajaxParams.cart_url;\n        }\n\n        async function purchase() {\n            if (state.busy) return;\n            if (state.cart.items.length && !state.job) {\n                openCart();\n                return;\n            }\n            if (!selectedPlan() || (!state.owner && !tracker)) return;\n            if (\n                state.insurance &&\n                market.dataset.residence === 'required' &&\n                !find('residence').checked\n            ) {\n                find('eligibility-error').textContent = copy.error;\n                find('eligibility-error').hidden = false;\n                find('residence').focus();\n                return;\n            }\n            const products = [\n                ...(!state.owner ? [tracker.id] : []),\n                selectedPlan().id,\n                ...(state.accessory && !state.owner && accessory ? [accessory.id] : []),\n            ];\n            const fingerprint = products.join(',');\n            if (state.job && state.job.fingerprint !== fingerprint) {\n                message(copy.partialError);\n                openCart();\n                return;\n            }\n            setBusy(true);\n            message('');\n            try {\n                let current = await cart();\n                if (expectedCountry && current.shipping_address.country !== expectedCountry)\n                    throw new Error(copy.deliveryChanged);\n                if (!state.job && current.items.length) {\n                    state.cart = current;\n                    setBusy(false);\n                    render();\n                    openCart();\n                    return;\n                }\n                state.job ||= {\n                    fingerprint,\n                    index: 0,\n                    products,\n                    baseline: Object.fromEntries(products.map((id) => [id, quantity(current, id)])),\n                    fragments: null,\n                };\n                const job = state.job;\n                for (; job.index !== job.products.length; job.index++) {\n                    const id = job.products[job.index];\n                    current = await cart();\n                    const wanted = job.baseline[id] + 1;\n                    \/\/ A previous timed-out request may already have succeeded. Never add it twice.\n                    if (quantity(current, id) === wanted) continue;\n                    if (quantity(current, id) !== job.baseline[id])\n                        throw new Error(copy.partialError);\n                    let result;\n                    try {\n                        result = await json(\n                            ajaxParams.wc_ajax_url.replace('%%endpoint%%', 'add_to_cart'),\n                            {\n                                method: 'POST',\n                                headers: {\n                                    'Content-Type':\n                                        'application\/x-www-form-urlencoded; charset=UTF-8',\n                                },\n                                body: new URLSearchParams({ product_id: id, quantity: '1' }),\n                            },\n                        );\n                    } catch (error) {\n                        current = await cart();\n                        if (quantity(current, id) !== wanted) throw error;\n                    }\n                    if (result?.error) throw new Error(copy.checkoutError);\n                    if (result?.fragments) job.fragments = result.fragments;\n                    current = await cart();\n                    if (quantity(current, id) !== wanted) throw new Error(copy.partialError);\n                }\n                state.cart = await cart();\n                if (expectedCountry && state.cart.shipping_address.country !== expectedCountry)\n                    throw new Error(copy.deliveryChanged);\n                \/\/ FunnelKit supplies the translated checkout link and native live fragments.\n                if (window.jQuery && window.fkcart_app_data?.wc_endpoints?.fkcart_get_slide_cart) {\n                    const response = await json(\n                        window.fkcart_app_data.wc_endpoints.fkcart_get_slide_cart,\n                        { method: 'POST' },\n                    );\n                    if (response.fragments) job.fragments = response.fragments;\n                }\n                if (window.jQuery && job.fragments)\n                    window\n                        .jQuery(document.body)\n                        .trigger('added_to_cart', [\n                            job.fragments,\n                            '',\n                            window.jQuery(selectedPlan().button),\n                        ]);\n                window.location.assign(checkoutUrl(job.fragments));\n            } catch (error) {\n                message(error.message || copy.checkoutError);\n                try {\n                    state.cart = await cart();\n                } catch {\n                    \/* Preserve the attempt so a retry cannot duplicate it. *\/\n                }\n                if (state.job?.index === 0 && !state.cart.items.length) state.job = null;\n                setBusy(false);\n                render();\n            }\n        }\n\n        try {\n            if (!ajaxParams?.wc_ajax_url || !ajaxParams.cart_url)\n                throw new Error(copy.priceUnavailable);\n            if (!market || source.querySelectorAll('[data-offer-zone]').length !== 1)\n                throw new Error(copy.priceUnavailable);\n            const trackerCards = source.querySelectorAll('.bf-source-trackers li.product');\n            if (trackerCards.length > 1) throw new Error(copy.priceUnavailable);\n            state.cart = await cart();\n            Object.assign(currencyMeta, state.cart.totals);\n            if (expectedCountry && state.cart.shipping_address.country !== expectedCountry)\n                throw new Error(copy.deliveryChanged);\n            tracker = nativeProduct(trackerCards[0]);\n            const title = trackerCards[0]\n                ?.querySelector('.woocommerce-loop-product__title')\n                ?.textContent.trim();\n            config.trackerId =\n                tracker?.id || Number(trackerCards[0]?.className.match(\/\\bpost-(\\d+)\\b\/)?.[1]);\n            const model = config.models[config.trackerId];\n            source.querySelectorAll('.bf-buy-native-plan').forEach((el) => {\n                const product = nativeProduct(el);\n                if (product) {\n                    product.nativePrice = el.querySelector('p');\n                    product.nativePrice = product.nativePrice.cloneNode(true);\n                    product.nativePrice.querySelectorAll('a').forEach((a) => a.remove());\n                    plans.set(`${el.dataset.tier}-${el.dataset.months}`, product);\n                }\n            });\n            accessory = nativeProduct(source.querySelector('.bf-source-accessory'));\n            if (![1, 12, 24].every((months) => plans.has('0-' + months)))\n                throw new Error(copy.priceUnavailable);\n            root.querySelectorAll('.model-name').forEach((el) => {\n                el.textContent = title || model?.name || '';\n            });\n            find('destination-copy').textContent = `${copy.destination} ${countryName}.`;\n            find('product-stage').dataset.model = model?.role || 'g2';\n            find('technology').textContent =\n                model?.role === 'g2' ? 'Wi-Fi \u00b7 GPS \u00b7 LTE \u00b7 Bluetooth' : 'GPS \u00b7 GSM \u00b7 Bluetooth';\n            find('box-copy').textContent = model?.role === 'g2' ? copy.boxG2 : copy.boxG1;\n            const image = trackerCards[0]?.querySelector('img');\n            if (image) {\n                find('product-photo').src = model?.image?.src || image.src;\n                find('product-photo').alt = model?.image?.alt || image.alt || title;\n            }\n            const tiers = market ? JSON.parse(market.dataset.bands) : [];\n            find('bike-value').replaceChildren(\n                ...tiers.map(\n                    (value, index) =>\n                        new window.Option(\n                            `${copy.valueUp} ${money(value * 10 ** currencyMeta.currency_minor_unit)}`,\n                            index + 1,\n                        ),\n                ),\n            );\n            find('residence-label').hidden = market?.dataset.residence !== 'required';\n            find('residence-copy').textContent = `${copy.residence} ${countryName}.`;\n            find('eligibility-copy').textContent =\n                market?.dataset.residence === 'required'\n                    ? `${copy.eligibility} ${countryName}. ${copy.eligibilityEnd}`\n                    : copy.germanEligibility;\n            if (market?.dataset.insuranceCountry) {\n                find('policy-link').href = `\/terms\/${market.dataset.offerZone}\/`;\n                find('ipid-link').href = `\/ipid\/${market.dataset.offerZone}\/`;\n            }\n            root.querySelectorAll('input[name=\"protection\"]').forEach((input) => {\n                input.name = 'bf-protection';\n                input.addEventListener('change', (event) => {\n                    state.insurance = event.target.value === 'insurance';\n                    render();\n                });\n            });\n            find('billing-choices').addEventListener('change', (event) => {\n                state.months = Number(event.target.value);\n                render();\n            });\n            find('bike-value').addEventListener('change', (event) => {\n                state.tier = Number(event.target.value);\n                render();\n            });\n            find('existing-owner').addEventListener('change', (event) => {\n                state.owner = event.target.checked;\n                render();\n            });\n            find('accessory').addEventListener('change', (event) => {\n                state.accessory = event.target.checked;\n                render();\n            });\n            find('residence').addEventListener('change', () => {\n                find('eligibility-error').hidden = true;\n                rememberSelection();\n            });\n            root.querySelectorAll('[data-checkout]').forEach((button) => {\n                button.addEventListener('click', purchase);\n            });\n            root.querySelector('[data-review-cart]').addEventListener('click', openCart);\n            root.querySelector('.bf-buy-busy').textContent = copy.adding;\n            if (window.jQuery)\n                window\n                    .jQuery(document.body)\n                    .on('removed_from_cart.bfbuy wc_fragments_refreshed.bfbuy', async () => {\n                        if (state.busy) return;\n                        try {\n                            state.cart = await cart();\n                            if (!state.cart.items.length) state.job = null;\n                            render();\n                        } catch {\n                            \/* Keep the existing review-cart path. *\/\n                        }\n                    });\n            const end = root.querySelector('[data-page-end]');\n            if (window.IntersectionObserver)\n                new window.IntersectionObserver((entries) => {\n                    root.querySelector('.mobile-checkout').hidden = entries[0].isIntersecting;\n                }).observe(end);\n            restoreSelection();\n            render();\n            root.classList.add('is-ready');\n        } catch (error) {\n            message(error.message || copy.priceUnavailable);\n            \/\/ Native product\/plan buttons remain usable if the enhancement cannot initialise.\n        }\n    }\n    if (document.readyState === 'loading')\n        document.addEventListener('DOMContentLoaded', initialise);\n    else initialise();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Ein kleiner Tracker. Ein gutes Gef\u00fchl. Mehr fahren.Weniger sorgen. Im Lenker versteckt. Mit deinem Smartphone verbunden. Nimm BikeFinder auf deine n\u00e4chste Fahrt mit. BikeFinder G2In Norwegen entwickelt Im Fahrradlenker verstecktWi-Fi \u00b7 GPS \u00b7 LTE \u00b7 Bluetooth Dein Fahrrad orten Selbst montieren Mit der App verbunden Was ist im Lieferumfang? Passt er zu meinem Fahrrad? Der [&hellip;]<\/p>\n","protected":false},"author":7498,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"block-theme-template.php","meta":{"inline_featured_image":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-170064","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>FahrradFinden | Tracker und Fahrradversicherung<\/title>\n<meta name=\"description\" content=\"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bikefinder.com\/buy\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FahrradFinden | Tracker und Fahrradversicherung\" \/>\n<meta property=\"og:description\" content=\"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bikefinder.com\/buy\/\" \/>\n<meta property=\"og:site_name\" content=\"BikeFinder\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/teambikefinder\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-11T02:07:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/09\/Box-design-clean-no-logo-PNG_without-side-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1962\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@TeamBikeFinder\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"WebPage\",\"ItemPage\"],\"@id\":\"https:\\\/\\\/bikefinder.com\\\/buy\\\/\",\"url\":\"https:\\\/\\\/bikefinder.com\\\/buy\\\/\",\"name\":\"FahrradFinden | Tracker und Fahrradversicherung\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#website\"},\"datePublished\":\"2022-04-29T11:43:29+00:00\",\"dateModified\":\"2026-10-11T02:07:02+00:00\",\"description\":\"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bikefinder.com\\\/buy\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bikefinder.com\\\/buy\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bikefinder.com\\\/buy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bikefinder.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fahrrad-Tracker kaufen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#website\",\"url\":\"https:\\\/\\\/bikefinder.com\\\/\",\"name\":\"BikeFinder\",\"description\":\"GPS-sporing og forsikring til sykkel\",\"publisher\":{\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bikefinder.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#organization\",\"name\":\"BikeFinder\",\"url\":\"https:\\\/\\\/bikefinder.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bikefinder.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/logo_drop_big.png\",\"contentUrl\":\"https:\\\/\\\/bikefinder.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/logo_drop_big.png\",\"width\":200,\"height\":200,\"caption\":\"BikeFinder\"},\"image\":{\"@id\":\"https:\\\/\\\/bikefinder.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/teambikefinder\",\"https:\\\/\\\/x.com\\\/TeamBikeFinder\",\"https:\\\/\\\/www.instagram.com\\\/teambikefinder\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@teambikefinder\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/bikefinder\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"FahrradFinden | Tracker und Fahrradversicherung","description":"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.","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:\/\/bikefinder.com\/buy\/","og_locale":"de_DE","og_type":"article","og_title":"FahrradFinden | Tracker und Fahrradversicherung","og_description":"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.","og_url":"https:\/\/bikefinder.com\/buy\/","og_site_name":"BikeFinder","article_publisher":"https:\/\/www.facebook.com\/teambikefinder","article_modified_time":"2026-10-11T02:07:02+00:00","og_image":[{"width":2560,"height":1962,"url":"https:\/\/bikefinder.com\/wp-content\/uploads\/2025\/09\/Box-design-clean-no-logo-PNG_without-side-scaled.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@TeamBikeFinder","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["WebPage","ItemPage"],"@id":"https:\/\/bikefinder.com\/buy\/","url":"https:\/\/bikefinder.com\/buy\/","name":"FahrradFinden | Tracker und Fahrradversicherung","isPartOf":{"@id":"https:\/\/bikefinder.com\/#website"},"datePublished":"2022-04-29T11:43:29+00:00","dateModified":"2026-10-11T02:07:02+00:00","description":"Sch\u00fctze dein Fahrrad mit einem im Lenker verstecken Tracker und optionaler Versicherung f\u00fcr umfassenden Fahrradschutz.","breadcrumb":{"@id":"https:\/\/bikefinder.com\/buy\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bikefinder.com\/buy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bikefinder.com\/buy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bikefinder.com\/de\/"},{"@type":"ListItem","position":2,"name":"Fahrrad-Tracker kaufen"}]},{"@type":"WebSite","@id":"https:\/\/bikefinder.com\/#website","url":"https:\/\/bikefinder.com\/","name":"BikeFinder","description":"GPS-sporing og forsikring til sykkel","publisher":{"@id":"https:\/\/bikefinder.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bikefinder.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/bikefinder.com\/#organization","name":"BikeFinder","url":"https:\/\/bikefinder.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/bikefinder.com\/#\/schema\/logo\/image\/","url":"https:\/\/bikefinder.com\/wp-content\/uploads\/2020\/05\/logo_drop_big.png","contentUrl":"https:\/\/bikefinder.com\/wp-content\/uploads\/2020\/05\/logo_drop_big.png","width":200,"height":200,"caption":"BikeFinder"},"image":{"@id":"https:\/\/bikefinder.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/teambikefinder","https:\/\/x.com\/TeamBikeFinder","https:\/\/www.instagram.com\/teambikefinder\/","https:\/\/www.youtube.com\/@teambikefinder\/","https:\/\/www.linkedin.com\/company\/bikefinder"]}]}},"_links":{"self":[{"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/pages\/170064","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/users\/7498"}],"replies":[{"embeddable":true,"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/comments?post=170064"}],"version-history":[{"count":10,"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/pages\/170064\/revisions"}],"predecessor-version":[{"id":394944,"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/pages\/170064\/revisions\/394944"}],"wp:attachment":[{"href":"https:\/\/bikefinder.com\/de\/wp-json\/wp\/v2\/media?parent=170064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}