Verify and troubleshoot
A checklist for going live, and the six failures you are likely to hit.
Checklist
Work through this in a real browser on the real domain. Steps 2 and 3 catch the failures you would otherwise discover when a customer drops out halfway through the form.
- Open the page: the form appears within a couple of seconds.
- Click through every step: the frame grows and shrinks with the content, and there is no scrollbar inside the form.
- Open DevTools → Network → the /f/<slug> document: the response carries a content-security-policy header with frame-ancestors, and the host domain is in it.
- The console is free of warnings starting with [Kapture Signals].
- Switch to a mobile viewport (390×844, say) and repeat step 2 — the form is built mobile-first, and that is where the customers are.
- Submit a test enquiry and confirm with the contractor that it arrived. Note that it becomes a real lead, not a draft — put something obvious in the name field.
When it doesn't work
Always start in the browser console. The script writes its own warnings prefixed with [Kapture Signals], and the browser's own CSP errors sit right next to them.
Empty space where the form should be, and the console says "Refused to frame … an ancestor violates the Content Security Policy".
Cause: The host domain is not in the contractor's account.
Fix: Have the contractor add it under Opsætning → Dine hjemmesider and wait a minute. Check at the same time that you are testing on a domain on that list — a staging domain is not the same as the live one.
Nothing is inserted, and the console says "[Kapture Signals] mangler data-kapture-slug".
Cause: The attribute is missing, empty or has been stripped.
Fix: Check that the script tag still has data-kapture-slug after the CMS or tag manager has processed it. Some editors drop unknown attributes in WYSIWYG mode — paste the code in HTML mode or in a dedicated code block.
The console says "[Kapture Signals] fandt ikke data-kapture-target …" and the form is in an unexpected place.
Cause: The selector matches nothing — or the element is built after the script has run.
Fix: Fix the selector, or drop the attribute and put the script tag exactly where the form should appear.
The form appears twice.
Cause: The script tag is on the page twice, or a tag manager fires it on every page view on top of a copy in the theme.
Fix: Keep one script tag per page. From a tag manager, set the trigger to fire once per page view.
The form appears but stays at a fixed height, and the taller steps are cut off.
Cause: The height messages are not reaching the host page. Either the host domain is not in the contractor's account, or a fixed height is set on the iframe or its container in your own CSS.
Fix: Get the domain added, and remove height/max-height from .kapture-signals-embed and the iframe in your stylesheet.
The script is never fetched, or the iframe is blocked on a page that otherwise works.
Cause: The host site's own Content-Security-Policy blocks us.
Fix: Allow https://kapturesignals.com in both script-src and frame-src.