---
title: Progress Tracking
url: https://docs.kaltura.com/docs/embeddable-kaltura-products/kaltura-player/player-embed-progress-tracking
---

## Playback Progress Tracking (Quartile Events)

Track playback milestones (25%, 50%, 75%, 100%) using the `TIME_UPDATE` event:

```javascript
player.ready().then(() => {
  const milestones = { 25: false, 50: false, 75: false, 100: false };

  player.addEventListener(player.Event.Core.TIME_UPDATE, () => {
    const duration = player.duration;
    if (!duration) return;
    const pct = Math.floor((player.currentTime / duration) * 100);

    for (const mark of [25, 50, 75, 100]) {
      if (pct >= mark && !milestones[mark]) {
        milestones[mark] = true;
        console.log('Reached ' + mark + '% milestone');
        // Send analytics beacon: fetch('/api/track', { method: 'POST', body: ... })
      }
    }
  });

  player.addEventListener(player.Event.Core.ENDED, () => {
    if (!milestones[100]) {
      milestones[100] = true;
      console.log('Reached 100% milestone (ENDED)');
    }
  });
});
```

Use quartile tracking for custom engagement analytics, completion-gated content (e.g., unlock next module after 75%), or third-party analytics integration.
