Debug Checklist

A step-by-step checklist to diagnose a Coframe integration that isn't working

Guide~4 min read

Copy this guide and your current settings as a prompt for your AI agent.

Preview agent promptSee the guide, code and settings included when you copy.

Start here when Coframe does not appear to be working. The steps below are ordered: each one narrows the problem space before the next. Work through them in order before consulting the deeper troubleshooting pages.

On this page
  1. 01Step 1: Confirm cf.js loaded
  2. 02Step 2: Confirm window.Coframe exists and is initialized
  3. 03Step 3: Review console logs and Coframe.debug.logs
  4. 04Step 4: Confirm the project ID is configured
  5. 05Step 5: Isolate Coframe with ?cf_disabled
  6. 06Related links

01Step 1: Confirm cf.js loaded

Open browser DevTools and go to the Network tab. Filter for cf.js or cf-static.

You should see a request to the edge worker (by default at https://edge.cofra.me/cf.js) that returned a 200 status. The response body contains both the baked-in project JSON and the compiled SDK bundle in a single HTTP response — confirming this request succeeded means the SDK code reached the browser.

If the request is missing or failed: an ad blocker or a Content Security Policy may be preventing the script from loading. A blocked cf.js request means the SDK never ran, regardless of what is in the page HTML. See Testing and Validation for the full network check procedure and Common Integration Issues for CSP and ad-blocker failure patterns.

02Step 2: Confirm window.Coframe exists and is initialized

In the browser DevTools console, run:

JS
window.Coframe
window.Coframe.status.initialized

Good result: window.Coframe is an object and window.Coframe.status.initialized is true. The initialized flag is set to true after init completes — it being true confirms the SDK ran to completion on this page.

If window.Coframe is undefined: the cf.js request may have failed (go back to Step 1) or the script was blocked before execution. Check the console for script load errors.

If Coframe.status.initialized is false: the SDK loaded but did not finish initialising. Common causes are a missing or delayed CFQ.config push, or the SDK waiting for a signal such as waitForHydration, waitForFeatureFlag, or waitForUserToken that never arrived. Continue to Steps 3 and 4.

03Step 3: Review console logs and Coframe.debug.logs

Filter the browser console by [Coframe] to see all log output from the SDK. This filter surfaces initialization messages, configuration details, and any warnings the SDK emits at runtime.

For programmatic access to the full SDK log history, inspect:

JS
window.Coframe.debug.logs

Coframe.debug.logs is an array of LogEntry objects — the SDK’s accumulated warning and error log history since script load.

Good result: no errors in the [Coframe] console output and no error-level entries in Coframe.debug.logs.

If you see errors or warnings: the log entries describe what the SDK encountered. See Common Integration Issues for recurring error patterns, and Missing Data if the integration appears healthy but data is absent or incomplete.

04Step 4: Confirm the project ID is configured

In the browser DevTools console, run:

JS
window.Coframe.projectId

Good result: a non-empty string such as 'proj_abc123'. Coframe.projectId is set from config.projectId during SDK initialisation. An empty string ('') means the SDK initialised without a valid project ID — either the CFQ.config push was missing from the page, or the config object did not include a projectId field.

The CFQ.config command is required. The SDK blocks at startup until this command arrives, and the config object must contain at minimum a projectId. A minimal example:

HTML
<script>
  window.CFQ = window.CFQ || [];
  window.CFQ.push({
    config: {
      projectId: 'proj_abc123'
    }
  });
</script>

If Coframe.projectId is empty, check your installation snippet and confirm the CFQ.config push is present on every page where Coframe should run. See Common Integration Issues for configuration failure patterns.

05Step 5: Isolate Coframe with ?cf_disabled

To confirm that a page-load or rendering problem is caused by Coframe, append ?cf_disabled to the page URL:

TEXT
https://yoursite.com/landing?cf_disabled

When the page URL contains the string cf_disable, the installation snippet’s early-exit guard runs before the SDK is fetched. It logs the following warning and returns immediately:

PLAINTEXT
[Coframe] Disabled via URL parameter

The SDK is never loaded or executed. Both ?cf_disable and ?cf_disabled match. This parameter is handled by the install-script IIFE — it is not a behaviour of the edge worker or the browser SDK.

If the problem disappears with ?cf_disabled: Coframe is involved. Return to the earlier steps to identify which stage is failing.

If the problem persists with ?cf_disabled: the issue is unrelated to Coframe.

This parameter is also the recommended method for baseline LCP measurements. See Testing and Validation for the step-by-step Performance panel comparison procedure.

06Related links

  • Testing and Validation — full verification checklist for a new or changed integration, including LCP impact measurement and flicker checks
  • Common Integration Issues — recurring failure patterns and quick fixes
  • Missing Data — when the integration appears healthy but analytics data is absent or incomplete
  • Coframe Global — full reference for window.Coframe properties, status sub-fields, and Coframe.debug utilities
  • Preview and Debug — URL parameters (?cf_disabled, coframe_variant_id, coframe_should_send_events) and Coframe.debug usage examples

Related reading

Content and video lessons from Coframe documentation. Code examples are not executed on this page.

BACK TOTroubleshooting

Documentation

Open Coframe App

Search documentation

Search all guides and references↑ ↓ Navigate · Esc Close