Bookmark Troubleshooting: Common Issues and Fixes | OpsBlu Docs

Bookmark Troubleshooting: Common Issues and Fixes

Debug analytics issues on Bookmark — AI builder limitations, custom code injection restrictions, AIDA-generated page structure, and third-party script...

Bookmark is an AI-powered website builder that uses its AIDA (Artificial Intelligence Design Assistant) to generate sites. Analytics troubleshooting on Bookmark is constrained by the platform's walled-garden approach: you have limited access to raw HTML, no server-side control, and script injection is restricted to specific designated areas in the dashboard.

Bookmark-Specific Debugging Approach

Since you cannot SSH into a Bookmark server or access template files, all debugging happens through the browser and the Bookmark dashboard.

Verify Script Injection via Dashboard

Bookmark allows custom code in specific locations. Check all of them:

  1. Settings > Custom Code > Header: Scripts injected into <head> on all pages
  2. Settings > Custom Code > Footer: Scripts injected before </body> on all pages
  3. Page-specific code: Some Bookmark plans allow per-page script injection via the page editor
// In browser console on your Bookmark site, verify what actually loaded
document.querySelectorAll('script').forEach((s, i) => {
  const src = s.src || '(inline)';
  const location = s.closest('head') ? 'HEAD' : 'BODY';
  if (src.includes('gtag') || src.includes('gtm') || src.includes('analytics') ||
      s.textContent.includes('gtag') || s.textContent.includes('dataLayer')) {
    console.log(`[${location}] Script #${i}:`, src.substring(0, 80));
  }
});

Check Plan-Level Restrictions

Bookmark restricts custom code injection on lower-tier plans. If your code is not appearing:

// Check if Bookmark is stripping your scripts
fetch(window.location.href)
  .then(r => r.text())
  .then(html => {
    const hasGTM = html.includes('googletagmanager');
    const hasGA = html.includes('gtag') || html.includes('google-analytics');
    console.log('GTM in source:', hasGTM);
    console.log('GA in source:', hasGA);
    if (!hasGTM && !hasGA) {
      console.log('No analytics found — check your Bookmark plan level');
    }
  });

Most Common Bookmark Analytics Issues

1. Custom Code Not Available on Free/Basic Plan

Symptoms: No "Custom Code" option visible in Settings, or the code you add never appears in the rendered page.

Root cause: Bookmark's free and basic plans restrict or entirely disable custom code injection. The fields may exist but the output is stripped during rendering.

Fix: Upgrade to a plan that supports custom code (typically the "Business" plan or higher). There is no workaround on restricted plans — Bookmark does not allow any alternative injection methods.

2. AIDA-Generated Pages Restructuring Your Code Placement

Symptoms: Analytics code fires on some pages but not others, especially pages that AIDA auto-generated or restructured.

Root cause: When AIDA regenerates a page layout, it may rebuild the DOM structure in a way that moves or removes injected scripts. The header/footer custom code is generally preserved, but page-specific injections can be lost.

Fix: Always use the global Settings > Custom Code injection points rather than page-specific ones. Verify after any AIDA-assisted page edits:

// After AIDA edits, verify tracking on the affected page
console.log('dataLayer events:', window.dataLayer?.length || 0);
console.log('GA loaded:', typeof gtag === 'function');

3. Bookmark's Built-in Analytics Conflicting

Symptoms: Double-counted pageviews or inconsistent data between Bookmark's dashboard analytics and your Google Analytics.

Root cause: Bookmark includes its own analytics tracking. While this doesn't typically conflict with GA at the technical level, it can cause confusion when comparing numbers, and in some cases both systems may load similar tracking libraries.

Fix: Use Bookmark's analytics dashboard for quick checks but rely on your GA/GTM setup as the source of truth. There is no way to disable Bookmark's built-in tracking.

4. SPA-Like Navigation Not Triggering Pageviews

Symptoms: Only the first page load registers a pageview. Navigating between pages shows no additional hits.

Root cause: Bookmark uses client-side transitions between pages for performance. These transitions do not trigger traditional window.onload events.

Fix: Use GTM with the History Change trigger, or add a MutationObserver:

// Detect Bookmark's client-side page transitions
let lastPath = window.location.pathname;
const bookmarkNavObserver = new MutationObserver(() => {
  if (window.location.pathname !== lastPath) {
    lastPath = window.location.pathname;
    gtag('event', 'page_view', {
      page_path: lastPath,
      page_title: document.title
    });
  }
});
bookmarkNavObserver.observe(document.body, { childList: true, subtree: true });

5. Custom Domain DNS Propagation Causing Tracking Gaps

Symptoms: Analytics works on yoursite.bookmark.com but not on your custom domain, or vice versa.

Root cause: During DNS propagation for custom domains, some visitors hit the Bookmark subdomain while others hit the custom domain. If your GA property is configured for one hostname, the other is filtered out.

Fix: Configure GA to accept both hostnames:

gtag('config', 'G-XXXXXXX', {
  cookie_domain: 'auto',
  linker: {
    domains: ['yoursite.bookmark.com', 'yourdomain.com']
  }
});

Environment Considerations

  • No FTP/SSH access: Bookmark is fully managed. You cannot access any server files or logs
  • CDN-served: All Bookmark sites are served through their CDN. Cache invalidation happens automatically but can take 5-10 minutes after publishing changes
  • HTTPS enforced: Custom domains get automatic SSL. No mixed-content issues should occur, but verify after domain setup
  • Mobile-responsive rendering: Bookmark generates responsive layouts. Test analytics on both desktop and mobile views as the DOM structure may differ
  • Third-party integrations: Bookmark has built-in integrations for some analytics tools. Check Settings > Integrations before manually injecting code — you may be doubling up

Performance Issues

  • LCP Issues - AIDA-generated layout rendering and CDN delivery delays
  • CLS Issues - Layout shifts from Bookmark's responsive framework and dynamic content loading

Tracking Issues

  • Events Not Firing - Debug plan restrictions, AIDA page rebuilds, and client-side navigation gaps