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

# Hooks

In de levenscyclus van een `Span` bieden we een aantal mogelijkheden om de interne toestand bij te werken of te wijzigen. Hooks vormen het mechanisme hiervoor. Met behulp van specifiek gevormde functies kunnen we elke uitgaande `Span` aanvullen met extra informatie voordat deze naar de Push API wordt verzonden.

Beide soorten hooks bestaan uit een array van samengestelde functies die van rechts naar links worden toegepast. Met andere woorden, de hooks die als laatste worden toegevoegd, worden altijd als eerste toegepast.

Wanneer een `Span` aan `appsignal.send()` wordt doorgegeven, of een `Error` aan `appsignal.sendError()`, worden hooks in de volgende volgorde op de `Span` toegepast:

* Decorators
* Optionele `tags`- of `namespace`-argumenten bij `appsignal.send()`
* Overrides

Hooks worden over het algemeen in een plug-in toegepast.

<Tip>
  Wanneer een `Error` wordt doorgegeven aan `appsignal.sendError()`, wordt er
  intern een `Span`-object aangemaakt, waardoor hooks daar op de gebruikelijke
  manier op kunnen worden toegepast.
</Tip>

## Decorators

Het kan nodig zijn om op globaal niveau extra context aan een `Span` toe te voegen, zodat alle verzoeken standaard die informatie bevatten. Decorators kunnen daarvoor worden gebruikt.

## Overrides

Overrides zijn de laatste mogelijkheid om gegevens in een `Span` bij te werken voordat deze naar de Push API wordt verzonden. Zo kunt u er bijvoorbeeld voor kiezen om in een override gebruikersgegevens uit `Span`'s te verwijderen.

## Uw eigen Hook schrijven

Hooks zijn in wezen functies die een `Span` als enig argument accepteren en dezelfde `Span` weer retourneren. Tijdens de uitvoering van de functie kunnen wijzigingen aan de `Span` worden aangebracht, maar we raden af om andere neveneffecten te introduceren.

Hier is een voorbeeld van hoe u een Hook aan het `Appsignal`-object kunt toevoegen:

<CodeGroup>
  ```js JavaScript theme={null}
  appsignal.addDecorator((span) => {
    return span.setTags({ customTag: "value" });
  });

  appsignal.addOverride((span) => {
    // scrub e-mail addresses
    const { tags } = span.serialize();

    return span.setTags({
      text: tags.text.replace(/^[^\s@]+@[^\s@]+\.[^\s@]+$/, "[SCRUBBED]"),
    });
  });
  ```
</CodeGroup>

Plug-ins kunnen ook decorators en overrides toevoegen. Als u een herbruikbare hook wilt maken die bijvoorbeeld in een `npm`-module kan worden verpakt, raden we aan om [de plug-in-interface](/front-end/plugins/) te gebruiken om deze te registreren.
