# Clips & Phases: Clip events & chaining

> Using one clip to start another.

Glider documentation · Animation · Web page: https://cgglider.com/docs/clips/events/

Sections of this page: [Phases](https://cgglider.com/docs/clips.md) · [Scheduling](https://cgglider.com/docs/clips/scheduling.md) · [Clip events & chaining](https://cgglider.com/docs/clips/events.md)

Clips emit lifecycle events — start, end and loop — and a trigger on another clip can listen for them: onClipStart, onClipEnd, onClipLoop, each naming the source clip. A trigger also carries a delay in seconds, so a chain can breathe.

> **Cascades are capped at 16:** A chain that feeds itself is stopped at depth 16 and the counter resets once playback is fully idle. If the fourth element in a build-on never appears, look for a cycle rather than a timing bug.

A trigger can also carry a condition, so a chain link only fires when the data agrees — for example, only play the goal bug when the scoring team is the home side.

A take starts only the clips nothing chains. A rundown row's In or Out, or playing a workflow phase, starts its root clips; each chained clip then starts when its trigger fires. The take holds until the whole chain has landed, so a layered build plays once, in its designed rhythm.

> **Start layers while the one before still moves:** onClipStart with a delay of 40–60% of the first clip's duration makes the content arrive while the container is still settling. onClipEnd makes each layer wait, which reads as a slideshow.
