{"id":108787,"date":"2024-07-19T02:00:05","date_gmt":"2024-07-19T02:00:05","guid":{"rendered":"https:\/\/www.hostfully.com\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/"},"modified":"2024-07-19T02:00:05","modified_gmt":"2024-07-19T02:00:05","slug":"hvad-skal-din-korttidslejekontrakt-indeholde","status":"publish","type":"blog","link":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/","title":{"rendered":"Hvad skal din korttidslejekontrakt indeholde?"},"content":{"rendered":"<p>At have en korttidslejekontrakt p\u00e5 plads har mange fordele. M\u00e5ske vigtigst af alt hj\u00e6lper den ejendomsadministratorer med at undg\u00e5 un\u00f8dvendige hovedpiner og forebygge skader. Hvor afg\u00f8rende denne korttidsleje er, kan <a href=\"https:\/\/www.hostfully.com\/blog\/the-5-steps-to-vacation-rental-listing-site-independence\/\">afh\u00e6nge af de platforme, du bruger<\/a> til at udleje dine ejendomme.  <\/p>\n<p>I denne artikel gennemg\u00e5r vi, hvorfor aftaler er vigtige, hvem der har brug for dem, og hvad de b\u00f8r indeholde. Som en bonus har vi udarbejdet en skabelon til en korttidslejekontrakt, som du kan downloade og tilpasse, s\u00e5 den passer til din virksomheds behov. <\/p>\n    <form\n        id=\"hf-form-1\"\n        action=\"#\"\n        method=\"post\"\n        accept-charset=\"UTF-8\"\n        class=\"hf-form-1 hf-ebook-theme default\"\n        style=\"width:100%;\"    >\n                    <p class=\"hf-pre-title\">Download it now for free:<\/p>\n        \n                    <h2 style=\"text-align: left;\">Gratis skabelon til ferieboligkontrakt<\/h2>\n        \n                    <p class=\"hf-description\">Protecting yourself and your property is essential when running a vacation rental. Customize our template to fit your needs.<\/p>\n        \n        <div class=\"hf-loading\" style=\"display: none; margin-bottom: 1em;\">\n            <svg class=\"hf-spinner\" width=\"48\" height=\"48\" viewBox=\"0 0 50 50\">\n                <circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"#0073aa\" stroke-width=\"5\" fill=\"none\" stroke-linecap=\"round\" stroke-dasharray=\"100\" stroke-dashoffset=\"75\">\n                    <animateTransform attributeName=\"transform\" type=\"rotate\" dur=\"1s\" repeatCount=\"indefinite\" from=\"0 25 25\" to=\"360 25 25\" \/>\n                <\/circle>\n            <\/svg>\n        <\/div>\n\n                <div class=\"hf-fields\">\n            <fieldset>\n                                <div class=\"hf-field\">\n                    <label for=\"hf-form-1-first_name\">First Name <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"text\" name=\"first_name\" id=\"hf-form-1-first_name\" placeholder=\"First Name *\" required>\n                <\/div>\n                <div class=\"hf-field\">\n                    <label for=\"hf-form-1-last_name\">Last Name <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"text\" name=\"last_name\" id=\"hf-form-1-last_name\" placeholder=\"Last Name *\" required>\n                <\/div>\n                                <div class=\"hf-field\">\n                    <label for=\"hf-form-1-email\">Email <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"email\" name=\"email\" id=\"hf-form-1-email\" placeholder=\"Email *\" required>\n                <\/div>\n                                            <\/fieldset>\n        <\/div>\n        \n        <input type=\"hidden\" name=\"utm_source\"   value=\"website\">\n        <input type=\"hidden\" name=\"utm_medium\"   value=\"\">\n        <input type=\"hidden\" name=\"utm_campaign\" value=\"\">\n        <input type=\"hidden\" name=\"utm_content\"  value=\"\">\n        <input type=\"hidden\" name=\"utm_keyword\"  value=\"\">\n        <input type=\"hidden\" name=\"utm_term\"     value=\"\">\n        <input type=\"hidden\" name=\"lead_source\"  value=\"\">\n        <input type=\"hidden\" name=\"website_language\" value=\"da\">\n        <input type=\"hidden\" name=\"website_interested_in\" value=\"\">\n        <input type=\"hidden\" name=\"hf_captcha_provider\" value=\"recaptcha\">\n        <input type=\"hidden\" name=\"hf_captcha_mode\" value=\"checkbox\">\n        <input type=\"hidden\" name=\"form_key\"   value=\"conversion_ai\">\n        <input type=\"hidden\" name=\"form_token\" value=\"eyJrIjoiY29udmVyc2lvbl9haSIsInRzIjoxNzc2NTQyODMwLCJpZCI6ImhmLWZvcm0tMSIsImV4cCI6MTc3NzQwNjgzMH0.930a0654eeb2fb7609ae698b5ba237a520846946ad34a6fa322faadee0c413a1\">\n                    <input type=\"hidden\" name=\"hf_submission_target\" value=\"conversion_ai\">\n        \n\n                    <label class=\"hf-privacy-policy\">\n                <input type=\"checkbox\" name=\"privacy_policy\" required>\n                <span>I consent to receive marketing communications from Hostfully and agree to the <a href=\"\/privacy-policy\/\">Privacy Policy<\/a>.<\/span>\n            <\/label>\n        \n                            <div class=\"hf-field hf-recaptcha\">\n                                                            <div class=\"g-recaptcha\"\n                             data-sitekey=\"6Lf5iyYUAAAAAGoSPPx3go6y7pgsMvBHyiBQnx2o\"><\/div>\n                                                <\/div>\n        \n\n        <button type=\"submit\" class=\"submit-button hf-submit\">Submit<\/button>\n\n            <\/form>\n\n    <script>\n        (function () {\n            \/\/ --- Register this form id for your own form JS\n            window.hfFormIds = window.hfFormIds || [];\n            window.hfFormIds.push(\"hf-form-1\");\n\n            \/\/ --- Store per-form captcha config\n            window.hfCaptchaConfig = window.hfCaptchaConfig || {};\n            window.hfCaptchaConfig[\"hf-form-1\"] = {\n                provider: \"recaptcha\", \/\/ 'hcaptcha' | 'recaptcha' | 'off'\n                mode: \"checkbox\"          \/\/ 'checkbox' | 'invisible'\n            };\n\n            \/\/ --- Widget map (one per element)\n            window.__hfWidgets = window.__hfWidgets || new WeakMap();\n\n            \/\/ --- Utility: load external script once\n            function loadScriptOnce(src) {\n                var key = '__hfLoad__' + src;\n                if (window[key]) return;\n                window[key] = true;\n                var s = document.createElement('script');\n                s.src = src;\n                s.async = true;\n                s.defer = true;\n                document.head.appendChild(s);\n            }\n\n                        \/\/ Load Conversion.ai Forms SDK\n            loadScriptOnce('https:\/\/forms.conversion.ai\/script.js');\n            \n            \/\/ --- Detect user interests from hf_analytics cookie (set by behavior tracking)\n            window.hfDetectInterests = window.hfDetectInterests || function () {\n                try {\n                    var match = document.cookie.match(\/(?:^|;\\s*)hf_analytics=([^;]*)\/);\n                    if (!match) return '';\n                    var data = JSON.parse(decodeURIComponent(match[1]));\n                    if (!data.pages || !Array.isArray(data.pages)) return '';\n\n                    var patterns = {\n                        'Guidebooks': \/guidebook|guia|guias|guide-numerique|livrets\/i,\n                        'Devices': \/device|dispositivo|aparelho|appareil\/i,\n                        'PMS': \/property-management-software|pms|software-de-gestao|logiciel-de-gestion\/i,\n                        'Integrations': \/integration|integracion|integracao|integrations\/i,\n                        'Book a Demo': \/book.*demo|agendar.*demo|reservar.*demo|demander.*demo|solicitar.*demo|marcar.*demonstracao\/i,\n                        'Solutions': \/solution|solucao|solucion\/i,\n                        'Pricing': \/pricing|precios|preco|tarif\/i,\n                        'Resources': \/resource|recurso\/i,\n                        'Blog': \/blog\/i,\n                        'Influencers': \/influencer\/i,\n                        'Success Stories': \/success.*stor|caso.*exito|historia.*exito|caso.*sucesso|historia.*sucesso|reussite\/i,\n                        'Webinars': \/webinar\/i,\n                        'Support': \/support|soporte|suporte|apoio\/i,\n                        'Growth Tools': \/growth.*tool|ferramenta.*crescimento|herramienta.*crecimiento|outil.*croissance\/i,\n                        'Events': \/event|evento|evenement\/i,\n                        'Features': \/feature|caracteristica|funcionalidade|fonctionnalite\/i\n                    };\n\n                    var found = {};\n                    var interests = [];\n                    for (var i = 0; i < data.pages.length; i++) {\n                        var url = data.pages[i].url || '';\n                        for (var interest in patterns) {\n                            if (!found[interest] && patterns[interest].test(url)) {\n                                found[interest] = true;\n                                interests.push(interest);\n                            }\n                        }\n                    }\n                    return interests.join(', ');\n                } catch (e) {\n                    return '';\n                }\n            }\n\n            \/\/ --- hCaptcha render callback\n            window.hfHcaptchaInit = function () {\n                document.querySelectorAll('.h-captcha[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el) && window.hcaptcha && hcaptcha.render) {\n                        var id = hcaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            theme:   el.getAttribute('data-theme') || 'light',\n                            size:    el.getAttribute('data-size')  || 'normal'\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n            };\n\n            \/\/ --- reCAPTCHA render callback\n            window.hfRecaptchaInit = function () {\n                if (!window.grecaptcha || !grecaptcha.render) return;\n\n                \/\/ Explicit render for v2 CHECKBOX widgets\n                document.querySelectorAll('.g-recaptcha[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el)) {\n                        var id = grecaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            theme:   el.getAttribute('data-theme') || 'light',   \/\/ optional\n                            size:    el.getAttribute('data-size')  || 'normal'   \/\/ 'normal' | 'compact'\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n\n                \/\/ Explicit render for v2 INVISIBLE widgets\n                document.querySelectorAll('.g-recaptcha-invisible[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el)) {\n                        var id = grecaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            size: 'invisible',\n                            badge: el.getAttribute('data-badge') || 'bottomleft',\n                            callback: function () {\n                                \/\/ token will be auto-set in hidden textarea\n                            }\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n            };\n\n            \/\/ --- Ensure needed scripts load (based on DOM, supports multiple forms)\n            function ensureProviderScripts() {\n                var needsH = !!document.querySelector('.h-captcha[data-sitekey]');\n                var needsG = !!document.querySelector('.g-recaptcha[data-sitekey], .g-recaptcha-invisible[data-sitekey]');\n                if (needsH) loadScriptOnce('https:\/\/hcaptcha.com\/1\/api.js?onload=hfHcaptchaInit&render=explicit');\n                if (needsG) loadScriptOnce('https:\/\/www.google.com\/recaptcha\/api.js?onload=hfRecaptchaInit&render=explicit');\n            }\n\n            \/\/ --- Ensure needed scripts load (based on DOM, supports multiple forms)\n            function ensureProviderScripts() {\n                var needsH = !!document.querySelector('.h-captcha[data-sitekey]');\n                var needsG = !!document.querySelector('.g-recaptcha[data-sitekey], .g-recaptcha-invisible[data-sitekey]');\n                if (needsH) loadScriptOnce('https:\/\/hcaptcha.com\/1\/api.js?onload=hfHcaptchaInit&render=explicit');\n                if (needsG) loadScriptOnce('https:\/\/www.google.com\/recaptcha\/api.js?onload=hfRecaptchaInit&render=explicit');\n            }\n\n            if (document.readyState === 'loading') {\n                document.addEventListener('DOMContentLoaded', ensureProviderScripts);\n            } else {\n                ensureProviderScripts();\n            }\n\n            \/\/ --- Reset captcha tokens on page load (fixes WP Rocket cache issue) ---\n            window.addEventListener('load', function() {\n                \/\/ Reset reCAPTCHA widgets\n                if (typeof grecaptcha !== 'undefined' && grecaptcha.reset) {\n                    \/\/ Reset checkbox reCAPTCHA\n                    document.querySelectorAll('.g-recaptcha[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                grecaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset reCAPTCHA checkbox:', e);\n                            }\n                        }\n                    });\n\n                    \/\/ Reset invisible reCAPTCHA\n                    document.querySelectorAll('.g-recaptcha-invisible[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                grecaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset reCAPTCHA invisible:', e);\n                            }\n                        }\n                    });\n                }\n\n                \/\/ Reset hCaptcha widgets\n                if (typeof hcaptcha !== 'undefined' && hcaptcha.reset) {\n                    document.querySelectorAll('.h-captcha[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                hcaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset hCaptcha:', e);\n                            }\n                        }\n                    });\n                }\n            });\n        })();\n    <\/script>\n\n\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            const form = document.getElementById('hf-form-1');\n            if (!form) return;\n\n            const loader       = form.querySelector('.hf-loading');\n            const fields       = form.querySelector('.hf-fields');\n            const submitButton = form.querySelector('button[type=\"submit\"].hf-submit');\n            const privacy      = form.querySelector('.hf-privacy-policy');\n            const footerNote   = form.querySelector('.hf-footer-note');\n\n            \/\/ Read provider\/mode from hidden inputs (per form)\n            const provider = (form.querySelector('input[name=\"hf_captcha_provider\"]')?.value || 'off');     \/\/ 'hcaptcha' | 'recaptcha' | 'off'\n            const mode     = (form.querySelector('input[name=\"hf_captcha_mode\"]')?.value || 'checkbox');    \/\/ 'checkbox' | 'invisible'\n\n            function showError(msg) {\n                if (!fields) return;\n                \/\/ remove old errors\n                fields.querySelectorAll('.hf-error,[data-hf-error]').forEach(el => el.remove());\n\n                const p = document.createElement('p');\n                p.className = 'hf-error';\n                p.setAttribute('data-hf-error', '1'); \/\/ fallback if class gets stripped\n                p.textContent = msg;\n                fields.appendChild(p);\n            }\n\n            function setLoading(state) {\n                if (loader) loader.style.display = state ? 'block' : 'none';\n                if (submitButton) {\n                    submitButton.disabled = !!state;\n                    submitButton.classList.toggle('loading', !!state);\n                }\n            }\n\n            function submitWith(formData) {\n                \/\/ Let backend know which provider\/mode were used (for logging\/analytics)\n                formData.append('hcaptcha_mode', mode);\n                formData.append('hf_captcha_provider', provider);\n                formData.append('hf_captcha_mode', mode);\n\n                setLoading(true);\n                fetch('https:\/\/www.hostfully.com\/wp-admin\/admin-ajax.php', { method:'POST', body: formData })\n                    .then(r => r.json())\n                    .then(response => {\n                        setLoading(false);\n\n                        if (response.success) {\n                            const customMsg = formData.get('success_message') || 'Thanks! We\u2019ve received your submission.';\n                            if (fields) fields.innerHTML = '<div class=\"hf-success\">' + customMsg + '<\/div>';\n                            if (submitButton) submitButton.style.display = 'none';\n                            if (privacy) privacy.style.display = 'none';\n                            if (footerNote) footerNote.style.display = 'none';\n\n                            \n                                                        \/\/ Conversion.ai integration\n                            if (window.ConversionFormsV1) {\n                                var caiFields = {\"email\":\"e88eae4c-bb70-475d-b515-e7af6733f7d6\",\"first_name\":\"7df4d311-4bc8-4cd9-b334-2016bd132dd6\",\"last_name\":\"7145e5d0-0c47-4f6c-b423-0a9ec509d2ad\"};\n                                var caiPayload = {};\n                                for (var fieldName in caiFields) {\n                                    var val = formData.get(fieldName);\n                                    if (val !== null) caiPayload[caiFields[fieldName]] = val;\n                                }\n                                                                                                var caiStatic = {\"b24e0ba6-aacc-4090-b3a3-1e9b4c9afc6c\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Short-Term-Rental-Agreement-Template-Hostfully.pdf\",\"e41d3e03-99ca-464c-b382-373cab475047\":\"Free Vacation Rental Agreement Template\",\"17b38450-0d9b-4a1c-b4e4-dc1cc801b4d3\":\"Free Vacation Rental Agreement Template\"};\n                                for (var uuid in caiStatic) {\n                                    caiPayload[uuid] = caiStatic[uuid];\n                                }\n                                                                window.ConversionFormsV1.submit(\n                                    \"4695d0e6-39f9-4f58-bbc6-99bb6bd62150\",\n                                    caiPayload\n                                ).then(function(ok) {\n                                    console.log('[HF Form] Conversion.ai submit:', ok);\n                                }).catch(function(err) {\n                                    console.warn('[HF Form] Conversion.ai error:', err);\n                                });\n                            } else {\n                                console.warn('[HF Form] ConversionFormsV1 SDK not loaded');\n                            }\n                            \n                        } else {\n                            console.warn('Salesforce error', response.data);\n                            const errMsg = (response.data && response.data.message) ? response.data.message : 'Something went wrong. Please try again later.';\n                            fields?.insertAdjacentHTML('beforeend','<p class=\"hf-error\">' + errMsg + '<\/p>');\n                        }\n                    })\n                    .catch(() => {\n                        setLoading(false);\n                        fields?.querySelectorAll('.hf-error').forEach(el => el.remove());\n                        fields?.insertAdjacentHTML('beforeend','<p class=\"hf-error\">There was a problem with your submission.<\/p>');\n                    });\n            }\n\n            function tokenPresent(name) {\n                return (form.querySelector('textarea[name=\"'+name+'\"]')?.value || '').trim().length > 0;\n            }\n\n            \/\/ Helper to wait for reCAPTCHA v2 invisible response\n            function waitForRecaptchaResponse(widgetId, timeoutMs, intervalMs) {\n                return new Promise(function (resolve, reject) {\n                    var waited = 0;\n                    function check() {\n                        try {\n                            var resp = grecaptcha.getResponse(widgetId);\n                            if (resp && resp.length > 0) return resolve(resp);\n                        } catch (e) { \/* ignore *\/ }\n                        waited += intervalMs;\n                        if (waited >= timeoutMs) return reject(new Error('recaptcha_timeout'));\n                        setTimeout(check, intervalMs);\n                    }\n                    check();\n                });\n            }\n\n            form.addEventListener('submit', function (e) {\n                e.preventDefault();\n\n                \/\/ Clear previous errors (optional)\n                fields?.querySelectorAll('.hf-error').forEach(el => el.remove());\n\n                \/\/ Populate interest detection from behavior cookie\n                var interestsField = form.querySelector('input[name=\"website_interested_in\"]');\n                if (interestsField && window.hfDetectInterests) interestsField.value = window.hfDetectInterests();\n\n                const formData = new FormData(form);\n                formData.append('action', 'hf_submit_form');\n                \/\/formData.append('form_action', 'http:\/\/conversion_ai');\n                formData.append('form_title', 'Gratis skabelon til ferieboligkontrakt');\n                formData.append('email_template', '');\n                formData.append('email_subject', '');\n                formData.append('email_body', '');\n                formData.append('email_pdf', '');\n                formData.append('send_email', 'false');\n                formData.append('force_email', 'false');\n                formData.append('success_message', \"Success! Your ebook is on its way. Check your inbox for the download link. Enjoy the read!\");\n                formData.append('ebook_name', '');\n\n                \/\/ --- Captcha OFF ---\n                if (provider === 'off') {\n                    submitWith(formData);\n                    return;\n                }\n\n                \/\/ --- Checkbox flows: token must already be present ---\n                if (mode === 'checkbox') {\n                    if (provider === 'hcaptcha') {\n                        if (!tokenPresent('h-captcha-response')) {\n                            showError('Please complete the captcha.');\n                            return;\n                        }\n                        submitWith(formData);\n                        return;\n                    }\n                    if (provider === 'recaptcha') {\n                        if (!tokenPresent('g-recaptcha-response')) {\n                            showError('Please complete the captcha.');\n                            return;\n                        }\n                        submitWith(formData);\n                        return;\n                    }\n                }\n\n                \/\/ --- Invisible flows: execute programmatically, then submit ---\n                if (mode === 'invisible') {\n                    \/\/ hCaptcha invisible\n                    if (provider === 'hcaptcha') {\n                        const el = form.querySelector('.h-captcha[data-sitekey]');\n                        if (!el || typeof hcaptcha === 'undefined') {\n                            showError('Captcha is not ready. Please refresh and try again.');\n                            return;\n                        }\n                        const widgetId = (window.__hfWidgets && window.__hfWidgets.get(el)) || hcaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            size: 'invisible'\n                        });\n                        setLoading(true);\n                        hcaptcha.execute(widgetId).then(function () {\n                            if (!tokenPresent('h-captcha-response')) {\n                                setLoading(false);\n                                showError('Captcha could not be validated. Please try again.');\n                                return;\n                            }\n                            \/\/ Manually append the hCaptcha token to FormData\n                            const token = hcaptcha.getResponse(widgetId);\n                            if (token) formData.append('h-captcha-response', token);\n                            submitWith(formData);\n                        }).catch(function () {\n                            setLoading(false);\n                            showError('Captcha error. Please try again.');\n                        });\n                        return;\n                    }\n\n                    \/\/ reCAPTCHA v2 invisible\n                    if (provider === 'recaptcha') {\n                        const el = form.querySelector('.g-recaptcha-invisible[data-sitekey]');\n                        if (!el || typeof grecaptcha === 'undefined') {\n                            showError('Captcha is not ready. Please refresh and try again.');\n                            return;\n                        }\n\n                        \/\/ Render if needed, with a callback as a safety net\n                        let widgetId = (window.__hfWidgets && window.__hfWidgets.get(el));\n                        if (typeof widgetId === 'undefined') {\n                            widgetId = grecaptcha.render(el, {\n                                sitekey: el.getAttribute('data-sitekey'),\n                                size: 'invisible',\n                                callback: function () {\n                                    \/\/ Google will also set the textarea; we still wait below to be safe.\n                                }\n                            });\n                            window.__hfWidgets && window.__hfWidgets.set(el, widgetId);\n                        }\n\n                        setLoading(true);\n                        try {\n                            grecaptcha.execute(widgetId);\n                        } catch (err) {\n                            setLoading(false);\n                            showError('Captcha error. Please try again.');\n                            return;\n                        }\n\n                        \/\/ Wait until token appears or timeout\n                        waitForRecaptchaResponse(widgetId, 10000, 100).then(function () {\n                            \/\/ Double-check token presence\n                            if (!tokenPresent('g-recaptcha-response')) {\n                                setLoading(false);\n                                showError('Captcha could not be validated. Please try again.');\n                                return;\n                            }\n                            \/\/ Manually append the reCAPTCHA token to FormData\n                            const token = grecaptcha.getResponse(widgetId);\n                            if (token) formData.append('g-recaptcha-response', token);\n                            submitWith(formData);\n                        }).catch(function () {\n                            setLoading(false);\n                            showError('Captcha timed out. Please try again.');\n                        });\n                        return;\n                    }\n                }\n\n                \/\/ Fallback\n                submitWith(formData);\n            });\n\n        });\n    <\/script>\n\n\n\n    \n<h2><strong>Hvad er form\u00e5let med en <\/strong><strong>korttidslejekontrakt<\/strong><strong>?<\/strong><\/h2>\n<p>En korttidslejekontrakt hj\u00e6lper med at sikre, at en lejer forlader din ejendom i samme stand, som vedkommende fandt den. Den f\u00e5r ogs\u00e5 alle vigtige detaljer ned p\u00e5 skrift, s\u00e5 der ikke opst\u00e5r tvivl om, hvad du stiller til r\u00e5dighed, og hvad der forventes af lejeren. N\u00e5r den er underskrevet, bliver den en juridisk forpligtelse for b\u00e5de dig og din g\u00e6st til at overholde vilk\u00e5rene i din ferieboligkontrakt. De fleste lejeaftaler uden for annoncesider som Airbnb eller Vrbo er udformet p\u00e5 en m\u00e5de, der tilgodeser ejendomsejerne.   <\/p>\n<p>Bem\u00e6rk, at korttidslejekontrakter adskiller sig markant fra en traditionel boliglejekontrakt. G\u00e6ster ved korttidsudlejning har typisk f\u00e6rre rettigheder end langtidslejere. Der er ogs\u00e5 f\u00e5 (eller slet ingen) udlejer- og lejerforpligtelser som ved langtidsudlejning. Det betyder, at du kan indarbejde langt flere bestemmelser i dine aftaler, som tilgodeser dig (uanset om du er administrator eller ejer).   <\/p>\n<h2><strong>Har du overhovedet brug for en <\/strong><strong>korttidslejekontrakt<\/strong><strong>?<\/strong><\/h2>\n<p>Hvis du udlejer din ejendom via sider som Airbnb, Vrbo eller <a href=\"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#elementor-toc__heading-anchor-0\">Booking.com<\/a>, s\u00e5 er svaret kort sagt nej, du beh\u00f8ver ikke en korttidslejekontrakt. Hvorfor? Disse OTA\u2019er har deres egne aftaler indarbejdet i deres vilk\u00e5r og betingelser. Disse korttidsaftaler er dog ofte meget brede og d\u00e6kker ikke vigtige detaljer, der vedr\u00f8rer din ejendom.   <\/p>\n<p>Du skal ogs\u00e5 huske, at de korttidslejekontrakter, der findes p\u00e5 disse sider, er skrevet i platformens interesse \u2013 ikke n\u00f8dvendigvis i ejendomsejernes eller din, administratorens, interesse. Derfor kan nogle finere punkter mangle eller falde ud til g\u00e6stens fordel. M\u00e5let for disse annoncesider er trods alt at f\u00e5 tilbagevendende g\u00e6ster \u2013 ikke n\u00f8dvendigvis at beskytte ejendomsadministratorer eller ejere.  <\/p>\n<p>Hvis du har g\u00e6ster uden for en tredjepartsplatform, f.eks. via en direkte bookingside, er en form for <a href=\"https:\/\/www.hostfully.com\/da\/ejendomsadministrationssoftware\/funktioner\/digitale-lejeaftaler-digitale-underskrifter\/\">ferieboligkontrakt<\/a> en n\u00f8dvendig sikkerhed, hvis noget g\u00e5r galt.<\/p>\n<h2><strong>Hvad skal en <\/strong><strong>ferieboligkontrakt<\/strong> indeholde<\/h2>\n<p>Uanset hvilken platform du bruger, er det aldrig en d\u00e5rlig id\u00e9 at bede g\u00e6ster om at underskrive det, der i praksis er en korttidslejekontrakt. Aftalen sikrer, at lejerne faktisk har l\u00e6st dine betingelser for opholdet, og den mindsker risikoen for uenigheder eller misforst\u00e5elser. Den fungerer som et juridisk bindende dokument og holder begge parter ansvarlige for vilk\u00e5rene i ferieboligkontrakten. Den viser ogs\u00e5 din forpligtelse som v\u00e6rt til fairness og professionalisme.   <\/p>\n<p>S\u00e5 hvad b\u00f8r du inkludere i din korttidslejekontrakt? De vigtigste oplysninger kan opdeles i fem kategorier: <\/p>\n<ul>\n<li aria-level=\"1\">Kontaktoplysninger og grundl\u00e6ggende oplysninger<\/li>\n<li aria-level=\"1\"><a href=\"https:\/\/www.hostfully.com\/da\/blog\/airbnb-husregler-som-alle-opslag-boer-have-gratis-skabelon\/\">Husregler<\/a><\/li>\n<li aria-level=\"1\">Beskrivelse af ejendommen, forventninger og praktiske forhold<\/li>\n<li aria-level=\"1\">Retningslinjer for depositum og afbestillingspolitik<\/li>\n<li aria-level=\"1\">Digitale underskrifter<\/li>\n<\/ul>\n<h3><strong>Kontaktoplysninger<\/strong><strong> og grundl\u00e6ggende oplysninger<\/strong><\/h3>\n<p>Det f\u00f8rste, du b\u00f8r have med i en korttidslejekontrakt, er alle oplysninger om begge parter, selve opholdet og ejendommen. S\u00f8rg for at inkludere: <\/p>\n<ul>\n<li aria-level=\"1\">Fulde navne, adresser og kontaktoplysninger (e-mail og telefonnumre) p\u00e5 b\u00e5de v\u00e6rten\/udlejeren og g\u00e6sten.<\/li>\n<li aria-level=\"1\">Ankomst- og afrejsedato for opholdet (nogle gange kaldet lejeperioden)<\/li>\n<li aria-level=\"1\">Ind- og udtjekningstidspunkter samt <a href=\"https:\/\/www.hostfully.com\/blog\/airbnb-check-in-process\/\">om g\u00e6ster kan selv tjekke ind<\/a><\/li>\n<li aria-level=\"1\">Daglig, ugentlig eller m\u00e5nedlig lejepris, betalingsvilk\u00e5r og betalingsmetoder<\/li>\n<li aria-level=\"1\">Grundl\u00e6ggende oplysninger om ejendommen, f.eks. antal senge eller sovev\u00e6relser, samt maksimal kapacitet<\/li>\n<li aria-level=\"1\">Om g\u00e6sten <a href=\"https:\/\/www.hostfully.com\/blog\/best-vacation-rental-cleaning-practices\/\">bliver opkr\u00e6vet et reng\u00f8ringsgebyr<\/a>, og hvorn\u00e5r gebyret opkr\u00e6ves.<\/li>\n<li aria-level=\"1\">Du b\u00f8r ogs\u00e5 <a href=\"https:\/\/www.hostfully.com\/blog\/cancellation-policy-for-vacation-rentals\/\">inkludere afbestillingspolitikker<\/a>, s\u00e5 lejerne p\u00e5 forh\u00e5nd er klar over vilk\u00e5rene, hvis de ender med at afbestille.<\/li>\n<\/ul>\n<p>Denne del af lejekontrakten giver dig ogs\u00e5 mulighed for at kommunikere andre gebyrbaserede ydelser, du m\u00e5tte have. Det kan v\u00e6re ting som cykeludlejning, ture, afhentning i lufthavnen eller andre services, du tilbyder mod betaling. Husk ogs\u00e5 at inkludere din gebyrsats for k\u00e6ledyr eller <a href=\"https:\/\/www.hostfully.com\/da\/blog\/hvad-er-ekstra-airbnb-gaester-og-hvorfor-er-de-vigtige\/\">ekstra g\u00e6ster<\/a>, hvis du har s\u00e5danne gebyrer.  <\/p>\n<h3><strong>Husregler<\/strong><\/h3>\n<p>Ingen ferieboligkontrakt er komplet uden <a href=\"https:\/\/www.hostfully.com\/blog\/airbnb-house-rules\/\">nogle grundl\u00e6ggende husregler<\/a>. Husregler afh\u00e6nger af dine pr\u00e6ferencer som v\u00e6rt eller administrator. Nogle punkter, du kan overveje at inkludere, er:  <\/p>\n<ul>\n<li aria-level=\"1\">Dine regler for fester (og rygepolitik!)<\/li>\n<li aria-level=\"1\">Maksimalt antal tilladte g\u00e6ster og hvilke typer fester der er acceptable (eller ikke!), herunder b\u00f8rn<\/li>\n<li aria-level=\"1\">Hvis ejendommen har stilleperioder, er det en god id\u00e9 ogs\u00e5 at inkludere dem i reglerne<\/li>\n<li aria-level=\"1\">Regler for brug af faciliteter (herunder swimmingpool, spabad eller b\u00e5d)<\/li>\n<li aria-level=\"1\">Det er altid en god id\u00e9 at n\u00e6vne, at ulovlige aktiviteter ikke er tilladt, selv om det kan virke som en selvf\u00f8lge<\/li>\n<li aria-level=\"1\">Du kan ogs\u00e5 gentage emner, der allerede er ber\u00f8rt, s\u00e5som afbestillingspolitikker og <a href=\"https:\/\/www.hostfully.com\/blog\/pet-friendly-vacation-rental\/\">gebyrer for k\u00e6ledyr<\/a> (eller frav\u00e6r af s\u00e5danne)<\/li>\n<li aria-level=\"1\">Yderligere\/potentielle gebyrer, som dine g\u00e6ster b\u00f8r v\u00e6re opm\u00e6rksomme p\u00e5<\/li>\n<li aria-level=\"1\">G\u00e6ldende lokale regler, statslove samt kommunale vedt\u00e6gter og bekendtg\u00f8relser. <em>Bem\u00e6rk: Overtr\u00e6delse af nogle af disse regler kan <\/em><em>f\u00f8re<\/em><em> til uds\u00e6ttelse fra <\/em><em>ferieboligen<\/em><em>, hvis politiet bliver involveret. Derfor er det vigtigt at minde g\u00e6sten om, at hvis det sker, er din virksomhed ikke forpligtet til at tilbyde alternativ indkvartering.<\/em><\/li>\n<li aria-level=\"1\">Selv om det er usandsynligt, at nogen vil fremleje en feriebolig, vil du stadig gerne reducere din risiko for tvivlsomme lejeforhold, is\u00e6r ved l\u00e6ngere lejeperioder<\/li>\n<\/ul>\n<h3><strong>Feriebolig<\/strong><strong>-beskrivelse og praktiske forhold<\/strong><\/h3>\n<p>Din korttidslejekontrakt b\u00f8r ogs\u00e5 indeholde oplysninger om ejendommen, som er nyttige for g\u00e6ster under opholdet. Eksempler kan v\u00e6re: <\/p>\n<ul>\n<li aria-level=\"1\">Pr\u00e6cise anvisninger til ejendommen<\/li>\n<li aria-level=\"1\">Hvor n\u00f8glerne findes, eller hvordan man kommer ind i bygningen (pinkode osv.)<\/li>\n<li aria-level=\"1\">Oplysninger om parkering<\/li>\n<li aria-level=\"1\">Konkrete forventninger til, hvordan du forventer, at ejendommen efterlades (f.eks. beskidt senget\u00f8j p\u00e5 badev\u00e6relsesgulvet eller service sat i opvaskemaskinen)<\/li>\n<li aria-level=\"1\">Oplysninger om eventuelle reng\u00f8ringsfolk, der kan komme forbi, eller forventede skift af linned<\/li>\n<li aria-level=\"1\">Endelig b\u00f8r du ogs\u00e5 inkludere dine rettigheder som v\u00e6rt, s\u00e5som retten til at f\u00e5 adgang til ejendommen under en g\u00e6sts ophold i tilf\u00e6lde af n\u00f8dvendig vedligeholdelse eller en n\u00f8dsituation. Angiv dog den tidsperiode, hvor du kan have behov for adgang til ejendommen. <\/li>\n<\/ul>\n<p>Du kender din udlejningsejendom bedst! T\u00e6nk derfor over, hvad g\u00e6sterne har brug for at vide for at falde p\u00e5 plads s\u00e5 nemt og problemfrit som muligt \u2013 hvilket ogs\u00e5 vil hj\u00e6lpe dig med at give lejerne en bedre g\u00e6steoplevelse. <\/p>\n<h3><strong>Retningslinjer for <\/strong><strong>depositum<\/strong><\/h3>\n<p>Det er ogs\u00e5 vigtigt at inkludere retningslinjer for depositum og eventuelle afbestillingspolitikker med f\u00f8lgende:<\/p>\n<ul>\n<li aria-level=\"1\">Hvis der er et <a href=\"https:\/\/www.hostfully.com\/da\/blog\/sikkerhedsdepositum-ved-ferieudlejning-alt-du-skal-vide\/\">depositum<\/a>, b\u00f8r du ogs\u00e5 angive bel\u00f8bet samt dine vilk\u00e5r for tilbagebetaling. De fleste aftaler har et s\u00e6rskilt afsnit til dette. Det er vigtigt at fremh\u00e6ve, at reservationen f\u00f8rst er gyldig, n\u00e5r du har modtaget depositummet fuldt ud. Du skal ogs\u00e5 beskrive det kr\u00e6vede depositumsbel\u00f8b og den frist, det forventes betalt inden. Som regel angiver de fleste v\u00e6rter eller administratorer en eller to betalingsmetoder.    <\/li>\n<li aria-level=\"1\">Du skal ogs\u00e5 forklare, hvad depositummet d\u00e6kker, at det d\u00e6kker en bestemt lejeperiode, samt under hvilke betingelser dit ferieboligadministrationsfirma vil tilbageholde depositummet i tilf\u00e6lde af skader. Dette afsnit slutter typisk med en s\u00e6tning eller to om, hvorn\u00e5r depositummet tilbagebetales (som regel 2-3 hverdage efter lejeperiodens afslutning). <\/li>\n<\/ul>\n<h3><strong>Digitale underskrifter<\/strong><\/h3>\n<p>Til sidst b\u00f8r din korttidslejekontrakt ogs\u00e5 v\u00e6re en kort aftale, hvilket betyder, at du skal have alle n\u00f8dvendige punkter med, men samtidig holde den s\u00e5 kort, at en person, der gerne vil i gang med ferien, faktisk l\u00e6ser den igennem. Begge parter b\u00f8r ogs\u00e5 underskrive aftalen for at g\u00f8re den juridisk bindende. <\/p>\n<p>Du kan bruge en online tjeneste, s\u00e5 dine g\u00e6ster kan e-underskrive aftalen f\u00f8r ankomst, hvilket giver mange administratorer ro i sindet. Du kan ogs\u00e5 kr\u00e6ve, at lejerne underskriver personligt ved ankomst. Uanset hvordan du g\u00f8r det, b\u00f8r dette trin ikke springes over!  <\/p>\n<h2><strong>Yderligere overvejelser<\/strong><\/h2>\n<p>Her er nogle andre faktorer, du b\u00f8r overveje, n\u00e5r du udarbejder en ferieboligkontrakt:<\/p>\n<ul>\n<li aria-level=\"1\">Lokale og statslige love<\/li>\n<li aria-level=\"1\">En solid backup-plan<\/li>\n<li aria-level=\"1\">Fordele ved en ferieboligkontrakt<\/li>\n<li aria-level=\"1\">Due diligence<\/li>\n<li aria-level=\"1\">S\u00e5dan kommer du i gang<\/li>\n<\/ul>\n<h3><strong>Lokale og <\/strong><strong>statslige love<\/strong><\/h3>\n<p>Det er vigtigt at sikre, at din korttidslejekontrakt overholder b\u00e5de lokale ejendomslove og statslige love. Generelt b\u00f8r du sikre dig, at du forst\u00e5r de g\u00e6ldende regler og de konsekvenser, de kan have for dig. M\u00f8d en jurist for at f\u00e5 indsigt i lokale ejendomslove og for at f\u00e5 gennemg\u00e5et din lejekontrakt.  <\/p>\n<h3><strong>En solid backup-plan<\/strong><\/h3>\n<p>Selv om en underskrevet korttidslejekontrakt g\u00f8r begge parter juridisk ansvarlige for at overholde vilk\u00e5rene, er det aldrig en garanti for, at der ikke sker noget uheldigt. Derfor b\u00f8r du ogs\u00e5 overveje <a href=\"https:\/\/www.hostfully.com\/blog\/vacation-rental-insurance\/\">ferieboligforsikring til din ejendom<\/a>. Faktisk vil du sandsynligvis v\u00e6re forpligtet til at have ansvarsforsikring, men du kan med fordel unders\u00f8ge dine forsikringsmuligheder n\u00e6rmere for ogs\u00e5 at d\u00e6kke beskadiget eller stj\u00e5let ejendom.  <\/p>\n<h3><strong>Fordele ved en <\/strong><strong>ferieboligkontrakt<\/strong><\/h3>\n<p>At have en kort lejeaftale mellem dig og dine midlertidige lejere gavner ikke kun dig. Den beskytter ogs\u00e5 dine g\u00e6ster. At underskrive en kort lejekontrakt giver dem ro i sindet om, at deres v\u00e6rt ikke vil fors\u00f8ge at lave noget tvivlsomt, s\u00e5som at l\u00e6gge ekstra gebyrer oveni. Kort sagt forbedrer det g\u00e6steoplevelsen.   <\/p>\n<h3><strong>Due diligence<\/strong><\/h3>\n<p>Som en del af din due diligence i ejendomsadministrationen b\u00f8r du l\u00e6se vilk\u00e5r og betingelser for de tredjepartsbookingsider, du bruger, for at vurdere, hvor godt de d\u00e6kker dine behov.<\/p>\n<h3><strong>S\u00e5dan kommer du i gang<\/strong><\/h3>\n<p>Hvor skal man starte?! Du kan begynde med at skrive din egen korttidslejekontrakt ud fra retningslinjerne ovenfor eller downloade en skabelon. Tag derefter din forel\u00f8bige skabelon med til en jurist eller advokat til endelig gennemgang. Hvis en del af arbejdet er gjort p\u00e5 forh\u00e5nd, er advokatsal\u00e6ret m\u00e5ske ikke s\u00e5 dyrt, som du tror.   <\/p>\n<h2><strong>Konklusion<\/strong><\/h2>\n<p>Du har m\u00e5ske bem\u00e6rket, at meget af informationen ovenfor allerede findes p\u00e5 sider som Vrbo og Airbnb. Som n\u00e6vnt tidligere er det ikke n\u00f8dvendigt at inkludere en ekstra ferieboligkontrakt for g\u00e6ster, der booker via disse sider, men det skader aldrig at give lejerne informationen igen. <\/p>\n<p>Hvis lejerne <a href=\"\/direct-booking-sites\">booker direkte hos dig<\/a>, b\u00f8r alle disse oplysninger helt klart v\u00e6re med i kontrakten. Igen: Alle udlejningsejendomme er forskellige, og der findes ikke \u00e9n l\u00f8sning, der passer til alle. Overvej ogs\u00e5 andre politikker eller vilk\u00e5r, du gerne vil have dine g\u00e6ster til at acceptere.  <\/p>\n<p>N\u00e5r alt kommer til alt, kender du dine ejendomme bedre end nogen anden. Derfor afh\u00e6nger hvorn\u00e5r, hvorfor, hvordan og hvad din korttidslejekontrakt indeholder, helt af, hvad du har brug for for at v\u00e6re en succesfuld v\u00e6rt. <\/p>\n    <form\n        id=\"hf-form-2\"\n        action=\"#\"\n        method=\"post\"\n        accept-charset=\"UTF-8\"\n        class=\"hf-form-2 hf-ebook-theme default\"\n        style=\"width:100%;\"    >\n                    <p class=\"hf-pre-title\">Download it now for free:<\/p>\n        \n                    <h2 style=\"text-align: left;\">Gratis skabelon til ferieboligkontrakt<\/h2>\n        \n                    <p class=\"hf-description\">Protecting yourself and your property is essential when running a vacation rental. Customize our template to fit your needs.<\/p>\n        \n        <div class=\"hf-loading\" style=\"display: none; margin-bottom: 1em;\">\n            <svg class=\"hf-spinner\" width=\"48\" height=\"48\" viewBox=\"0 0 50 50\">\n                <circle cx=\"25\" cy=\"25\" r=\"20\" stroke=\"#0073aa\" stroke-width=\"5\" fill=\"none\" stroke-linecap=\"round\" stroke-dasharray=\"100\" stroke-dashoffset=\"75\">\n                    <animateTransform attributeName=\"transform\" type=\"rotate\" dur=\"1s\" repeatCount=\"indefinite\" from=\"0 25 25\" to=\"360 25 25\" \/>\n                <\/circle>\n            <\/svg>\n        <\/div>\n\n                <div class=\"hf-fields\">\n            <fieldset>\n                                <div class=\"hf-field\">\n                    <label for=\"hf-form-2-first_name\">First Name <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"text\" name=\"first_name\" id=\"hf-form-2-first_name\" placeholder=\"First Name *\" required>\n                <\/div>\n                <div class=\"hf-field\">\n                    <label for=\"hf-form-2-last_name\">Last Name <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"text\" name=\"last_name\" id=\"hf-form-2-last_name\" placeholder=\"Last Name *\" required>\n                <\/div>\n                                <div class=\"hf-field\">\n                    <label for=\"hf-form-2-email\">Email <span class=\"hf-required\">*<\/span><\/label>\n                    <input type=\"email\" name=\"email\" id=\"hf-form-2-email\" placeholder=\"Email *\" required>\n                <\/div>\n                                            <\/fieldset>\n        <\/div>\n        \n        <input type=\"hidden\" name=\"utm_source\"   value=\"website\">\n        <input type=\"hidden\" name=\"utm_medium\"   value=\"\">\n        <input type=\"hidden\" name=\"utm_campaign\" value=\"\">\n        <input type=\"hidden\" name=\"utm_content\"  value=\"\">\n        <input type=\"hidden\" name=\"utm_keyword\"  value=\"\">\n        <input type=\"hidden\" name=\"utm_term\"     value=\"\">\n        <input type=\"hidden\" name=\"lead_source\"  value=\"\">\n        <input type=\"hidden\" name=\"website_language\" value=\"da\">\n        <input type=\"hidden\" name=\"website_interested_in\" value=\"\">\n        <input type=\"hidden\" name=\"hf_captcha_provider\" value=\"recaptcha\">\n        <input type=\"hidden\" name=\"hf_captcha_mode\" value=\"checkbox\">\n        <input type=\"hidden\" name=\"form_key\"   value=\"conversion_ai\">\n        <input type=\"hidden\" name=\"form_token\" value=\"eyJrIjoiY29udmVyc2lvbl9haSIsInRzIjoxNzc2NTQyODMwLCJpZCI6ImhmLWZvcm0tMiIsImV4cCI6MTc3NzQwNjgzMH0.5398efa6fcd74ef1fb363df46702312eda89d122e1287dfceed682fe4a470d2a\">\n                    <input type=\"hidden\" name=\"hf_submission_target\" value=\"conversion_ai\">\n        \n\n                    <label class=\"hf-privacy-policy\">\n                <input type=\"checkbox\" name=\"privacy_policy\" required>\n                <span>I consent to receive marketing communications from Hostfully and agree to the <a href=\"\/privacy-policy\/\">Privacy Policy<\/a>.<\/span>\n            <\/label>\n        \n                            <div class=\"hf-field hf-recaptcha\">\n                                                            <div class=\"g-recaptcha\"\n                             data-sitekey=\"6Lf5iyYUAAAAAGoSPPx3go6y7pgsMvBHyiBQnx2o\"><\/div>\n                                                <\/div>\n        \n\n        <button type=\"submit\" class=\"submit-button hf-submit\">Submit<\/button>\n\n            <\/form>\n\n    <script>\n        (function () {\n            \/\/ --- Register this form id for your own form JS\n            window.hfFormIds = window.hfFormIds || [];\n            window.hfFormIds.push(\"hf-form-2\");\n\n            \/\/ --- Store per-form captcha config\n            window.hfCaptchaConfig = window.hfCaptchaConfig || {};\n            window.hfCaptchaConfig[\"hf-form-2\"] = {\n                provider: \"recaptcha\", \/\/ 'hcaptcha' | 'recaptcha' | 'off'\n                mode: \"checkbox\"          \/\/ 'checkbox' | 'invisible'\n            };\n\n            \/\/ --- Widget map (one per element)\n            window.__hfWidgets = window.__hfWidgets || new WeakMap();\n\n            \/\/ --- Utility: load external script once\n            function loadScriptOnce(src) {\n                var key = '__hfLoad__' + src;\n                if (window[key]) return;\n                window[key] = true;\n                var s = document.createElement('script');\n                s.src = src;\n                s.async = true;\n                s.defer = true;\n                document.head.appendChild(s);\n            }\n\n                        \/\/ Load Conversion.ai Forms SDK\n            loadScriptOnce('https:\/\/forms.conversion.ai\/script.js');\n            \n            \/\/ --- Detect user interests from hf_analytics cookie (set by behavior tracking)\n            window.hfDetectInterests = window.hfDetectInterests || function () {\n                try {\n                    var match = document.cookie.match(\/(?:^|;\\s*)hf_analytics=([^;]*)\/);\n                    if (!match) return '';\n                    var data = JSON.parse(decodeURIComponent(match[1]));\n                    if (!data.pages || !Array.isArray(data.pages)) return '';\n\n                    var patterns = {\n                        'Guidebooks': \/guidebook|guia|guias|guide-numerique|livrets\/i,\n                        'Devices': \/device|dispositivo|aparelho|appareil\/i,\n                        'PMS': \/property-management-software|pms|software-de-gestao|logiciel-de-gestion\/i,\n                        'Integrations': \/integration|integracion|integracao|integrations\/i,\n                        'Book a Demo': \/book.*demo|agendar.*demo|reservar.*demo|demander.*demo|solicitar.*demo|marcar.*demonstracao\/i,\n                        'Solutions': \/solution|solucao|solucion\/i,\n                        'Pricing': \/pricing|precios|preco|tarif\/i,\n                        'Resources': \/resource|recurso\/i,\n                        'Blog': \/blog\/i,\n                        'Influencers': \/influencer\/i,\n                        'Success Stories': \/success.*stor|caso.*exito|historia.*exito|caso.*sucesso|historia.*sucesso|reussite\/i,\n                        'Webinars': \/webinar\/i,\n                        'Support': \/support|soporte|suporte|apoio\/i,\n                        'Growth Tools': \/growth.*tool|ferramenta.*crescimento|herramienta.*crecimiento|outil.*croissance\/i,\n                        'Events': \/event|evento|evenement\/i,\n                        'Features': \/feature|caracteristica|funcionalidade|fonctionnalite\/i\n                    };\n\n                    var found = {};\n                    var interests = [];\n                    for (var i = 0; i < data.pages.length; i++) {\n                        var url = data.pages[i].url || '';\n                        for (var interest in patterns) {\n                            if (!found[interest] && patterns[interest].test(url)) {\n                                found[interest] = true;\n                                interests.push(interest);\n                            }\n                        }\n                    }\n                    return interests.join(', ');\n                } catch (e) {\n                    return '';\n                }\n            }\n\n            \/\/ --- hCaptcha render callback\n            window.hfHcaptchaInit = function () {\n                document.querySelectorAll('.h-captcha[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el) && window.hcaptcha && hcaptcha.render) {\n                        var id = hcaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            theme:   el.getAttribute('data-theme') || 'light',\n                            size:    el.getAttribute('data-size')  || 'normal'\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n            };\n\n            \/\/ --- reCAPTCHA render callback\n            window.hfRecaptchaInit = function () {\n                if (!window.grecaptcha || !grecaptcha.render) return;\n\n                \/\/ Explicit render for v2 CHECKBOX widgets\n                document.querySelectorAll('.g-recaptcha[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el)) {\n                        var id = grecaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            theme:   el.getAttribute('data-theme') || 'light',   \/\/ optional\n                            size:    el.getAttribute('data-size')  || 'normal'   \/\/ 'normal' | 'compact'\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n\n                \/\/ Explicit render for v2 INVISIBLE widgets\n                document.querySelectorAll('.g-recaptcha-invisible[data-sitekey]').forEach(function (el) {\n                    if (!window.__hfWidgets.has(el)) {\n                        var id = grecaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            size: 'invisible',\n                            badge: el.getAttribute('data-badge') || 'bottomleft',\n                            callback: function () {\n                                \/\/ token will be auto-set in hidden textarea\n                            }\n                        });\n                        window.__hfWidgets.set(el, id);\n                    }\n                });\n            };\n\n            \/\/ --- Ensure needed scripts load (based on DOM, supports multiple forms)\n            function ensureProviderScripts() {\n                var needsH = !!document.querySelector('.h-captcha[data-sitekey]');\n                var needsG = !!document.querySelector('.g-recaptcha[data-sitekey], .g-recaptcha-invisible[data-sitekey]');\n                if (needsH) loadScriptOnce('https:\/\/hcaptcha.com\/1\/api.js?onload=hfHcaptchaInit&render=explicit');\n                if (needsG) loadScriptOnce('https:\/\/www.google.com\/recaptcha\/api.js?onload=hfRecaptchaInit&render=explicit');\n            }\n\n            \/\/ --- Ensure needed scripts load (based on DOM, supports multiple forms)\n            function ensureProviderScripts() {\n                var needsH = !!document.querySelector('.h-captcha[data-sitekey]');\n                var needsG = !!document.querySelector('.g-recaptcha[data-sitekey], .g-recaptcha-invisible[data-sitekey]');\n                if (needsH) loadScriptOnce('https:\/\/hcaptcha.com\/1\/api.js?onload=hfHcaptchaInit&render=explicit');\n                if (needsG) loadScriptOnce('https:\/\/www.google.com\/recaptcha\/api.js?onload=hfRecaptchaInit&render=explicit');\n            }\n\n            if (document.readyState === 'loading') {\n                document.addEventListener('DOMContentLoaded', ensureProviderScripts);\n            } else {\n                ensureProviderScripts();\n            }\n\n            \/\/ --- Reset captcha tokens on page load (fixes WP Rocket cache issue) ---\n            window.addEventListener('load', function() {\n                \/\/ Reset reCAPTCHA widgets\n                if (typeof grecaptcha !== 'undefined' && grecaptcha.reset) {\n                    \/\/ Reset checkbox reCAPTCHA\n                    document.querySelectorAll('.g-recaptcha[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                grecaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset reCAPTCHA checkbox:', e);\n                            }\n                        }\n                    });\n\n                    \/\/ Reset invisible reCAPTCHA\n                    document.querySelectorAll('.g-recaptcha-invisible[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                grecaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset reCAPTCHA invisible:', e);\n                            }\n                        }\n                    });\n                }\n\n                \/\/ Reset hCaptcha widgets\n                if (typeof hcaptcha !== 'undefined' && hcaptcha.reset) {\n                    document.querySelectorAll('.h-captcha[data-sitekey]').forEach(function (el) {\n                        var widgetId = window.__hfWidgets && window.__hfWidgets.get(el);\n                        if (typeof widgetId !== 'undefined') {\n                            try {\n                                hcaptcha.reset(widgetId);\n                            } catch (e) {\n                                console.warn('Failed to reset hCaptcha:', e);\n                            }\n                        }\n                    });\n                }\n            });\n        })();\n    <\/script>\n\n\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            const form = document.getElementById('hf-form-2');\n            if (!form) return;\n\n            const loader       = form.querySelector('.hf-loading');\n            const fields       = form.querySelector('.hf-fields');\n            const submitButton = form.querySelector('button[type=\"submit\"].hf-submit');\n            const privacy      = form.querySelector('.hf-privacy-policy');\n            const footerNote   = form.querySelector('.hf-footer-note');\n\n            \/\/ Read provider\/mode from hidden inputs (per form)\n            const provider = (form.querySelector('input[name=\"hf_captcha_provider\"]')?.value || 'off');     \/\/ 'hcaptcha' | 'recaptcha' | 'off'\n            const mode     = (form.querySelector('input[name=\"hf_captcha_mode\"]')?.value || 'checkbox');    \/\/ 'checkbox' | 'invisible'\n\n            function showError(msg) {\n                if (!fields) return;\n                \/\/ remove old errors\n                fields.querySelectorAll('.hf-error,[data-hf-error]').forEach(el => el.remove());\n\n                const p = document.createElement('p');\n                p.className = 'hf-error';\n                p.setAttribute('data-hf-error', '1'); \/\/ fallback if class gets stripped\n                p.textContent = msg;\n                fields.appendChild(p);\n            }\n\n            function setLoading(state) {\n                if (loader) loader.style.display = state ? 'block' : 'none';\n                if (submitButton) {\n                    submitButton.disabled = !!state;\n                    submitButton.classList.toggle('loading', !!state);\n                }\n            }\n\n            function submitWith(formData) {\n                \/\/ Let backend know which provider\/mode were used (for logging\/analytics)\n                formData.append('hcaptcha_mode', mode);\n                formData.append('hf_captcha_provider', provider);\n                formData.append('hf_captcha_mode', mode);\n\n                setLoading(true);\n                fetch('https:\/\/www.hostfully.com\/wp-admin\/admin-ajax.php', { method:'POST', body: formData })\n                    .then(r => r.json())\n                    .then(response => {\n                        setLoading(false);\n\n                        if (response.success) {\n                            const customMsg = formData.get('success_message') || 'Thanks! We\u2019ve received your submission.';\n                            if (fields) fields.innerHTML = '<div class=\"hf-success\">' + customMsg + '<\/div>';\n                            if (submitButton) submitButton.style.display = 'none';\n                            if (privacy) privacy.style.display = 'none';\n                            if (footerNote) footerNote.style.display = 'none';\n\n                            \n                                                        \/\/ Conversion.ai integration\n                            if (window.ConversionFormsV1) {\n                                var caiFields = {\"email\":\"e88eae4c-bb70-475d-b515-e7af6733f7d6\",\"first_name\":\"7df4d311-4bc8-4cd9-b334-2016bd132dd6\",\"last_name\":\"7145e5d0-0c47-4f6c-b423-0a9ec509d2ad\"};\n                                var caiPayload = {};\n                                for (var fieldName in caiFields) {\n                                    var val = formData.get(fieldName);\n                                    if (val !== null) caiPayload[caiFields[fieldName]] = val;\n                                }\n                                                                                                var caiStatic = {\"b24e0ba6-aacc-4090-b3a3-1e9b4c9afc6c\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Short-Term-Rental-Agreement-Template-Hostfully.pdf\",\"e41d3e03-99ca-464c-b382-373cab475047\":\"Free Vacation Rental Agreement Template\",\"17b38450-0d9b-4a1c-b4e4-dc1cc801b4d3\":\"Free Vacation Rental Agreement Template\"};\n                                for (var uuid in caiStatic) {\n                                    caiPayload[uuid] = caiStatic[uuid];\n                                }\n                                                                window.ConversionFormsV1.submit(\n                                    \"4695d0e6-39f9-4f58-bbc6-99bb6bd62150\",\n                                    caiPayload\n                                ).then(function(ok) {\n                                    console.log('[HF Form] Conversion.ai submit:', ok);\n                                }).catch(function(err) {\n                                    console.warn('[HF Form] Conversion.ai error:', err);\n                                });\n                            } else {\n                                console.warn('[HF Form] ConversionFormsV1 SDK not loaded');\n                            }\n                            \n                        } else {\n                            console.warn('Salesforce error', response.data);\n                            const errMsg = (response.data && response.data.message) ? response.data.message : 'Something went wrong. Please try again later.';\n                            fields?.insertAdjacentHTML('beforeend','<p class=\"hf-error\">' + errMsg + '<\/p>');\n                        }\n                    })\n                    .catch(() => {\n                        setLoading(false);\n                        fields?.querySelectorAll('.hf-error').forEach(el => el.remove());\n                        fields?.insertAdjacentHTML('beforeend','<p class=\"hf-error\">There was a problem with your submission.<\/p>');\n                    });\n            }\n\n            function tokenPresent(name) {\n                return (form.querySelector('textarea[name=\"'+name+'\"]')?.value || '').trim().length > 0;\n            }\n\n            \/\/ Helper to wait for reCAPTCHA v2 invisible response\n            function waitForRecaptchaResponse(widgetId, timeoutMs, intervalMs) {\n                return new Promise(function (resolve, reject) {\n                    var waited = 0;\n                    function check() {\n                        try {\n                            var resp = grecaptcha.getResponse(widgetId);\n                            if (resp && resp.length > 0) return resolve(resp);\n                        } catch (e) { \/* ignore *\/ }\n                        waited += intervalMs;\n                        if (waited >= timeoutMs) return reject(new Error('recaptcha_timeout'));\n                        setTimeout(check, intervalMs);\n                    }\n                    check();\n                });\n            }\n\n            form.addEventListener('submit', function (e) {\n                e.preventDefault();\n\n                \/\/ Clear previous errors (optional)\n                fields?.querySelectorAll('.hf-error').forEach(el => el.remove());\n\n                \/\/ Populate interest detection from behavior cookie\n                var interestsField = form.querySelector('input[name=\"website_interested_in\"]');\n                if (interestsField && window.hfDetectInterests) interestsField.value = window.hfDetectInterests();\n\n                const formData = new FormData(form);\n                formData.append('action', 'hf_submit_form');\n                \/\/formData.append('form_action', 'http:\/\/conversion_ai');\n                formData.append('form_title', 'Gratis skabelon til ferieboligkontrakt');\n                formData.append('email_template', '');\n                formData.append('email_subject', '');\n                formData.append('email_body', '');\n                formData.append('email_pdf', '');\n                formData.append('send_email', 'false');\n                formData.append('force_email', 'false');\n                formData.append('success_message', \"Success! Your ebook is on its way. Check your inbox for the download link. Enjoy the read!\");\n                formData.append('ebook_name', '');\n\n                \/\/ --- Captcha OFF ---\n                if (provider === 'off') {\n                    submitWith(formData);\n                    return;\n                }\n\n                \/\/ --- Checkbox flows: token must already be present ---\n                if (mode === 'checkbox') {\n                    if (provider === 'hcaptcha') {\n                        if (!tokenPresent('h-captcha-response')) {\n                            showError('Please complete the captcha.');\n                            return;\n                        }\n                        submitWith(formData);\n                        return;\n                    }\n                    if (provider === 'recaptcha') {\n                        if (!tokenPresent('g-recaptcha-response')) {\n                            showError('Please complete the captcha.');\n                            return;\n                        }\n                        submitWith(formData);\n                        return;\n                    }\n                }\n\n                \/\/ --- Invisible flows: execute programmatically, then submit ---\n                if (mode === 'invisible') {\n                    \/\/ hCaptcha invisible\n                    if (provider === 'hcaptcha') {\n                        const el = form.querySelector('.h-captcha[data-sitekey]');\n                        if (!el || typeof hcaptcha === 'undefined') {\n                            showError('Captcha is not ready. Please refresh and try again.');\n                            return;\n                        }\n                        const widgetId = (window.__hfWidgets && window.__hfWidgets.get(el)) || hcaptcha.render(el, {\n                            sitekey: el.getAttribute('data-sitekey'),\n                            size: 'invisible'\n                        });\n                        setLoading(true);\n                        hcaptcha.execute(widgetId).then(function () {\n                            if (!tokenPresent('h-captcha-response')) {\n                                setLoading(false);\n                                showError('Captcha could not be validated. Please try again.');\n                                return;\n                            }\n                            \/\/ Manually append the hCaptcha token to FormData\n                            const token = hcaptcha.getResponse(widgetId);\n                            if (token) formData.append('h-captcha-response', token);\n                            submitWith(formData);\n                        }).catch(function () {\n                            setLoading(false);\n                            showError('Captcha error. Please try again.');\n                        });\n                        return;\n                    }\n\n                    \/\/ reCAPTCHA v2 invisible\n                    if (provider === 'recaptcha') {\n                        const el = form.querySelector('.g-recaptcha-invisible[data-sitekey]');\n                        if (!el || typeof grecaptcha === 'undefined') {\n                            showError('Captcha is not ready. Please refresh and try again.');\n                            return;\n                        }\n\n                        \/\/ Render if needed, with a callback as a safety net\n                        let widgetId = (window.__hfWidgets && window.__hfWidgets.get(el));\n                        if (typeof widgetId === 'undefined') {\n                            widgetId = grecaptcha.render(el, {\n                                sitekey: el.getAttribute('data-sitekey'),\n                                size: 'invisible',\n                                callback: function () {\n                                    \/\/ Google will also set the textarea; we still wait below to be safe.\n                                }\n                            });\n                            window.__hfWidgets && window.__hfWidgets.set(el, widgetId);\n                        }\n\n                        setLoading(true);\n                        try {\n                            grecaptcha.execute(widgetId);\n                        } catch (err) {\n                            setLoading(false);\n                            showError('Captcha error. Please try again.');\n                            return;\n                        }\n\n                        \/\/ Wait until token appears or timeout\n                        waitForRecaptchaResponse(widgetId, 10000, 100).then(function () {\n                            \/\/ Double-check token presence\n                            if (!tokenPresent('g-recaptcha-response')) {\n                                setLoading(false);\n                                showError('Captcha could not be validated. Please try again.');\n                                return;\n                            }\n                            \/\/ Manually append the reCAPTCHA token to FormData\n                            const token = grecaptcha.getResponse(widgetId);\n                            if (token) formData.append('g-recaptcha-response', token);\n                            submitWith(formData);\n                        }).catch(function () {\n                            setLoading(false);\n                            showError('Captcha timed out. Please try again.');\n                        });\n                        return;\n                    }\n                }\n\n                \/\/ Fallback\n                submitWith(formData);\n            });\n\n        });\n    <\/script>\n\n\n\n    \n","protected":false},"excerpt":{"rendered":"<p>At have en korttidslejekontrakt p\u00e5 plads har mange fordele. M\u00e5ske vigtigst af alt hj\u00e6lper den ejendomsadministratorer med at undg\u00e5 un\u00f8dvendige hovedpiner og forebygge skader. Hvor afg\u00f8rende denne korttidsleje er, kan afh\u00e6nge af de platforme, du bruger til at udleje dine ejendomme. I denne artikel gennemg\u00e5r vi, hvorfor aftaler er vigtige, hvem der har brug for [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":60187,"template":"","blog-categories":[4945],"class_list":["post-108787","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-categories-administration-af-ferieboligudlejning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Hvad skal din korttidslejekontrakt indeholde? | Hostfully<\/title>\n<meta name=\"description\" content=\"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hvad skal din korttidslejekontrakt indeholde?\" \/>\n<meta property=\"og:description\" content=\"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/\" \/>\n<meta property=\"og:site_name\" content=\"Hostfully\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hostfully\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"762\" \/>\n\t<meta property=\"og:image:height\" content=\"762\" \/>\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=\"@hostfully\" \/>\n<meta name=\"twitter:label1\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/\"},\"author\":{\"name\":\"Pablo Pereyra\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#\\\/schema\\\/person\\\/d776e1b2fafaf165fba39e4f4b587baa\"},\"headline\":\"Hvad skal din korttidslejekontrakt indeholde?\",\"datePublished\":\"2024-07-19T02:00:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/\"},\"wordCount\":1996,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/03-4.png\",\"inLanguage\":\"da-DK\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/\",\"url\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/\",\"name\":\"Hvad skal din korttidslejekontrakt indeholde? | Hostfully\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/03-4.png\",\"datePublished\":\"2024-07-19T02:00:05+00:00\",\"description\":\"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/03-4.png\",\"contentUrl\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/03-4.png\",\"width\":762,\"height\":762,\"caption\":\"learn how to run a longterm airbnb\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/hvad-skal-din-korttidslejekontrakt-indeholde\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hvad skal din korttidslejekontrakt indeholde?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#website\",\"url\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/\",\"name\":\"Hostfully\",\"description\":\"Award Winning Vacation Rental Software\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#organization\",\"name\":\"Hostfully\",\"url\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Hostfully_bluecircle_isotype_R-.png\",\"contentUrl\":\"https:\\\/\\\/www.hostfully.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/Hostfully_bluecircle_isotype_R-.png\",\"width\":321,\"height\":321,\"caption\":\"Hostfully\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hostfully\",\"https:\\\/\\\/x.com\\\/hostfully\",\"https:\\\/\\\/www.instagram.com\\\/hostfully_\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/Hostfully\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hostfully-inc-\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hostfully.com\\\/da\\\/#\\\/schema\\\/person\\\/d776e1b2fafaf165fba39e4f4b587baa\",\"name\":\"Pablo Pereyra\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g\",\"caption\":\"Pablo Pereyra\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hvad skal din korttidslejekontrakt indeholde? | Hostfully","description":"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/","og_locale":"da_DK","og_type":"article","og_title":"Hvad skal din korttidslejekontrakt indeholde?","og_description":"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.","og_url":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/","og_site_name":"Hostfully","article_publisher":"https:\/\/www.facebook.com\/hostfully","og_image":[{"width":762,"height":762,"url":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@hostfully","twitter_misc":{"Estimeret l\u00e6setid":"10 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#article","isPartOf":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/"},"author":{"name":"Pablo Pereyra","@id":"https:\/\/www.hostfully.com\/da\/#\/schema\/person\/d776e1b2fafaf165fba39e4f4b587baa"},"headline":"Hvad skal din korttidslejekontrakt indeholde?","datePublished":"2024-07-19T02:00:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/"},"wordCount":1996,"commentCount":0,"publisher":{"@id":"https:\/\/www.hostfully.com\/da\/#organization"},"image":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png","inLanguage":"da-DK"},{"@type":"WebPage","@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/","url":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/","name":"Hvad skal din korttidslejekontrakt indeholde? | Hostfully","isPartOf":{"@id":"https:\/\/www.hostfully.com\/da\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#primaryimage"},"image":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png","datePublished":"2024-07-19T02:00:05+00:00","description":"En korttidslejekontrakt er et effektivt v\u00e6rkt\u00f8j, som ejendomsadministratorer kan bruge til at beskytte deres kunders aktiver. Her er, hvad den b\u00f8r indeholde.","breadcrumb":{"@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#primaryimage","url":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png","contentUrl":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2026\/02\/03-4.png","width":762,"height":762,"caption":"learn how to run a longterm airbnb"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hostfully.com\/da\/blog\/hvad-skal-din-korttidslejekontrakt-indeholde\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hostfully.com\/da\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.hostfully.com\/da\/blog\/"},{"@type":"ListItem","position":3,"name":"Hvad skal din korttidslejekontrakt indeholde?"}]},{"@type":"WebSite","@id":"https:\/\/www.hostfully.com\/da\/#website","url":"https:\/\/www.hostfully.com\/da\/","name":"Hostfully","description":"Award Winning Vacation Rental Software","publisher":{"@id":"https:\/\/www.hostfully.com\/da\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hostfully.com\/da\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/www.hostfully.com\/da\/#organization","name":"Hostfully","url":"https:\/\/www.hostfully.com\/da\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/www.hostfully.com\/da\/#\/schema\/logo\/image\/","url":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2025\/08\/Hostfully_bluecircle_isotype_R-.png","contentUrl":"https:\/\/www.hostfully.com\/wp-content\/uploads\/2025\/08\/Hostfully_bluecircle_isotype_R-.png","width":321,"height":321,"caption":"Hostfully"},"image":{"@id":"https:\/\/www.hostfully.com\/da\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hostfully","https:\/\/x.com\/hostfully","https:\/\/www.instagram.com\/hostfully_\/","https:\/\/www.youtube.com\/c\/Hostfully","https:\/\/www.linkedin.com\/company\/hostfully-inc-\/"]},{"@type":"Person","@id":"https:\/\/www.hostfully.com\/da\/#\/schema\/person\/d776e1b2fafaf165fba39e4f4b587baa","name":"Pablo Pereyra","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/secure.gravatar.com\/avatar\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/373e91f8a44dd96d44b3df477f8ddc4967f6868684a2a728c92eac4d91056e62?s=96&d=mm&r=g","caption":"Pablo Pereyra"}}]}},"_links":{"self":[{"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/blog\/108787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":0,"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/blog\/108787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/media\/60187"}],"wp:attachment":[{"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/media?parent=108787"}],"wp:term":[{"taxonomy":"blog-categories","embeddable":true,"href":"https:\/\/www.hostfully.com\/da\/wp-json\/wp\/v2\/blog-categories?post=108787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}