Embed Not Loading
Your embed code is in place but the script does not execute.
Symptom
You have pasted the embed code into your site (Webflow custom code, HTML page, or CMS), but the script does not execute. No console errors appear, or the browser shows a network error (404, 403, CORS) when fetching the CDN URL.
Likely Causes
- Embed code not saved or published: In Webflow, custom code changes require publishing the site to take effect.
- Wrong environment URL: The embed code points to staging, but the staging deploy is stale or missing. Or the embed points to production, but no production deploy exists.
- Script placement: The script is in the
<head>withoutdefer, and your code references DOM elements that have not loaded yet. - Domain protection blocking: The domain serving the page is not in the allowed list. See Domain Protection Blocking.
- Free plan, production URL: Free plan does not support production deployments. The production CDN URL returns 404.
- Project deleted or archived: The project no longer exists, and its CDN assets have been removed.
- CDN propagation delay: You deployed seconds ago and the KV pointer has not propagated to the edge node serving your request. See Edge Resolution and Cache.
- Ad blocker or browser extension: A browser extension is blocking the CDN request.
Checks
- Open the browser's Network tab and reload the page. Find the request to
cdn.odyn.dev. Check:- Status code: 200 (success), 404 (not found), 403 (forbidden), or no request at all.
- Response body: Is it the expected JavaScript/CSS, or is it empty?
- Copy the CDN URL from the embed code and paste it directly in a browser tab. Does it return content?
- Verify the embed code matches the deployment mode:
- Bundled:
<script src="...bundle.js">and<link href="...bundle.css"> - Per-file:
<script type="module" src="...files/main.js"> - Folder bundle:
<script src="...fb-{folder}/bundle.js">
- Bundled:
- Check the browser console for errors like
Uncaught ReferenceError,Failed to load resource, or CORS errors. - In Webflow, confirm the site is published after adding custom code.
Fixes
Publish the site
In Webflow, adding custom code to the page or site settings does not take effect until you publish. Click Publish and verify the changes appear on the live or staging site.
Fix the environment
Check the embed code URL:
- Staging URL:
https://cdn.odyn.dev/staging/{project}/bundle.js— verify a staging deploy exists. - Production URL:
https://cdn.odyn.dev/p/{project}/bundle.js— verify a production deploy exists and your plan supports it.
Fix script placement
Place the <script> tag at the end of <body> or use the defer attribute:
<!-- Option 1: defer in <head> -->
<script src="https://cdn.odyn.dev/p/{project}/bundle.js" defer></script>
<!-- Option 2: end of <body> -->
<body>
<!-- page content -->
<script src="https://cdn.odyn.dev/p/{project}/bundle.js"></script>
</body>For per-file mode, use type="module" (modules are deferred by default):
<script type="module" src="https://cdn.odyn.dev/p/{project}/files/main.js"></script>Fix domain protection
If you see a 403 response, check the Domain Protection panel and add the domain serving the page. Allow up to 60 seconds for propagation.
Upgrade plan for production
Free plan users can deploy to staging but not production. Upgrade to Beta, Individual, or Team to enable production deployments. See Plans and Limits.
Wait for propagation
If you deployed within the last 60 seconds and the CDN URL returns 404 or stale content, wait for Cloudflare KV to propagate and retry.
Disable ad blockers
Temporarily disable browser extensions to rule out interference. If the script loads with extensions disabled, add an exception for cdn.odyn.dev.
What to Capture for Escalation
- The full CDN URL from the embed code.
- The HTTP status code and response headers from the Network tab.
- The response body (even if empty or an error message).
- The browser console output.
- Whether the URL works when pasted directly in a browser tab.
- Your plan (Free, Beta, Individual, or Team).
- Whether domain protection is enabled and what domains are in the list.