Files
dotfiles/dot_agents/skills/cloudflare/references/zaraz/patterns.md
T
Prad Nukala 6406208b35 shell: fish functions -> ~/.local/bin executables + bash/zsh ports; manage ~/.agents
- 16 cross-shell utilities converted to sh/bash chezmoi executables:
  ai c2p cp-appid extract_agents fab gdc gh-sonr-org-migrate ghg-clone
  ghn gho git-summary launch_omp_livediff_overlay lc-elir mdcp mdp pj
  (ghg-clone not named ghg: unrelated cargo binary owns that name)
- cwd/history helpers stay per-shell: yy c cd clip-last + ghg/ghn/gho
  cd-wrappers in bash/functions/ and zsh/functions/, loaded by rc files
- fish keeps only shell-state functions; converted ones now hit PATH
- cp-appid ignore gating moved to .local/bin path
- dot_agents/skills: 82 skills materialized from dotstate storage so
  dot_claude skill symlinks resolve on fresh bootstrap; dotstate
  profile/symlinks.json released .agents/skills .bashrc .zshrc
2026-08-10 15:15:06 -04:00

2.1 KiB

Zaraz Patterns

SPA Tracking

History Change Trigger (Recommended): Configure in dashboard - no code needed, Zaraz auto-detects route changes.

Manual tracking (React/Vue/Next.js):

// On route change
zaraz.track('pageview', { page_path: pathname, page_title: document.title });

User Identification

// Login
zaraz.set({ userId: user.id, email: user.email, plan: user.plan });
zaraz.track('login', { method: 'oauth' });

// Logout - set to null (cannot clear)
zaraz.set('userId', null);

E-commerce Funnel

Event Method
View zaraz.ecommerce('Product Viewed', { product_id, name, price })
Add to cart zaraz.ecommerce('Product Added', { product_id, quantity })
Checkout zaraz.ecommerce('Checkout Started', { cart_id, products: [...] })
Purchase zaraz.ecommerce('Order Completed', { order_id, total, products })

A/B Testing

zaraz.set('experiment_checkout', variant);
zaraz.track('experiment_viewed', { experiment_id: 'checkout', variant });
// On conversion
zaraz.track('experiment_conversion', { experiment_id, variant, value });

Worker Integration

Context Enricher - Modify context before tools execute:

export default {
  async fetch(request, env) {
    const body = await request.json();
    body.system.userRegion = request.cf?.region;
    return Response.json(body);
  }
};

Configure: Zaraz > Settings > Context Enrichers

Worker Variables - Compute dynamic values server-side, use as {{worker.variable_name}}.

GTM Migration

GTM Zaraz
dataLayer.push({event: 'purchase'}) zaraz.ecommerce('Order Completed', {...})
{{Page URL}} {{system.page.url}}
{{Page Title}} {{system.page.title}}
Page View trigger Pageview trigger
Click trigger Click (selector: *)

Best Practices

  1. Use dashboard triggers over inline code
  2. Enable History Change for SPAs (no manual code)
  3. Debug with zaraz.debug = true
  4. Implement consent early (GDPR/CCPA)
  5. Use Context Enrichers for sensitive/server data