> ## Documentation Index
> Fetch the complete documentation index at: https://docs.automate.ax/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Control event bursts

> Debounce, buffer, or select repeated occurrences within each signal partition.

Burst controls operate across trigger contexts. Partition the source with [`keyBy`](/reference/runtime/signal-operators#keyby) when each customer or record needs independent timing, or [`globally`](/reference/runtime/signal-operators#globally) when every occurrence should share one timer.

| Result                                                         | Operator                                                   |
| -------------------------------------------------------------- | ---------------------------------------------------------- |
| Most recent occurrence after activity stops                    | [`debounce`](/reference/runtime/signal-operators#debounce) |
| Every occurrence before a relative or absolute deadline        | [`window`](/reference/runtime/signal-operators#window)     |
| Leading, trailing, minimum-gap, selection, or buffering policy | [`funnel`](/reference/runtime/signal-operators#funnel)     |

```ts automations/debounce-customer-updates.automation.ts theme={null}
import { automation, onInvocation, sendEmail, t } from "automate.ax"

export default automation("Debounce customer updates", () => {
  const update = onInvocation<{ customerId: string; summary: string }>()
  const settled = update.keyBy((value) => value.customerId).debounce("5m")

  sendEmail({ subject: "Customer update", text: t`${settled.summary}` })
})
```

Each occurrence resets only its partition's timer. Each emission creates a child context containing the selected source histories, so downstream actions can consume the burst result and inherited source values.

Use [`collect`](/reference/runtime/signal-operators#collect) when batch size, not time, closes the group. Use [`delay`](/reference/runtime/signal-operators#delay) to resume one causal occurrence later.
