Dijji Dijji Intelligence·Engagement·Defense
For developers & site owners

Track what actually matters.

A few small habits in your markup make Dijji’s reports sharp instead of noisy — real CTAs instead of stray sentences, real conversions instead of guesses. Five minutes of labelling pays off on every chart.

01 · Clicks & CTAs

Give every button a label.

Dijji’s “Top CTAs” reads the visible text of whatever was clicked. An icon-only button has no text, so it lands in your reports as (blank). Add an aria-label — it’s good for accessibility and analytics.

✗ tracked as blank
<button>🔍</button>
<button class="close">×</button>
✓ tracked as the label
<button aria-label="Search">🔍</button>
<button aria-label="Close dialog">×</button>

Where it bites: hamburger menus, close (×) buttons, carousel arrows, icon toolbars — anything with no words.

02 · Real interactive elements

Use a button or link, not a clickable div.

Dijji records clicks on real interactive elements — <a>, <button>, or anything with role="button". A <div onclick> is invisible to assistive tech and harder to attribute. And if you wrap a whole card in one link, give the action a clear inner label so the report doesn’t capture the entire card’s text.

✗ whole-card text captured
<a href="/p/9">
  <h3>Acme</h3>
  <p>Long description…</p>
</a>
✓ clear action label
<div class="card">
  <h3>Acme</h3>
  <a href="/p/9">View pitch</a>
</div>

Dijji is smart about this now — it prefers a button’s own label or the heading — but a real CTA always reports cleanest.

03 · Search

Mark your search inputs.

Dijji never reads what people type (privacy — see below). The one exception is on-site search, which marketers genuinely want. Tell Dijji which box is search and it captures the query only on submit, into a dedicated “Searches” report.

✓ any one of these works
<input type="search" name="q">
<form role="search"> … </form>
<input data-dijji-search>

Password, email, tel and number fields are always excluded, even with these attributes.

04 · Conversions

Fire a custom event at the moments that matter.

Pageviews and clicks are automatic. For the events that define success — signup, purchase, demo booked, plan upgraded — send a named event with a little context. Then build goals and funnels on top of it, no redeploy needed.

✓ one line, anywhere in your JS
dijji.track('signup', { plan: 'pro', source: 'pricing' })
dijji.track('purchase', { value: 99, currency: 'INR' })

Keep keys low-cardinality (plan, tier, source) — not order IDs or emails. High-cardinality values bloat reports and risk leaking PII.

05 · Attribution

Tag your campaigns with UTMs.

Dijji reads standard UTM parameters and ties them through to conversions — so you see which source actually drove signups, not just clicks. For YouTube and Instagram, put the video/post id in utm_content and Dijji links the view back to the post.

✓ on every shared link
https://yoursite.com/pricing?utm_source=linkedin
  &utm_medium=social&utm_campaign=launch
  &utm_content=postId_1842

Build links fast with the UTM builder inside Engage → UTM in your dashboard.

06 · Clean URLs

Make your paths readable.

Every report groups by page path. Readable, stable paths (/pricing, /blog/analytics) make your charts legible; opaque ones (/p?id=3&v=2) scatter the same page across rows. And never put personal data — emails, tokens, names — in the URL; it ends up in analytics.

07 · Privacy by default

What Dijji never tracks.

So you can instrument freely — and usually skip the cookie banner for Dijji:

  • No input values — passwords, OTPs, card numbers and typed text are never read (search is the opt-in exception, on submit only).
  • No cookies and no cross-site / advertising IDs.
  • IPs resolve to country/city, then hash — never stored raw.
  • On mobile, scroll and swipe gestures are not counted as clicks or rage clicks.
08 · Mobile

Size your tap targets.

Dijji already ignores thumb-scroll noise, so a swipe won’t register as a click or a rage click. Help your users (and your rage-click signal) further by keeping tap targets at least 44×44px with comfortable spacing — cramped buttons are what generate genuine rage in the first place.

The 60-second checklist

  • aria-label on every icon-only button (search, menu, close, arrows).
  • Actions are real <button>/<a>, with a clear inner label inside card links.
  • Search inputs marked with type="search", role="search", or data-dijji-search.
  • dijji.track() on your key conversions, with low-cardinality props.
  • UTMs on every campaign link (+ utm_content = video/post id).
  • Readable page paths, no PII in URLs.
  • Tap targets ≥ 44px.
Start tracking · free Full help docs Install guides →