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

# Functions overview

> Transform, validate, or enrich events with custom JavaScript before they sync to a destination.

Functions let you transform events before they sync to a destination. Write JavaScript to modify event properties, validate fields, or enrich event data on any [Hightouch Events](https://docs.hightouch.com/events/overview.md) sync.

![Function overview graphic](https://mintcdn.com/hightouch-3c037897/L_vQfA0JQEpeGUUo/images/events/functions/overview-graphic.png?fit=max\&auto=format\&n=L_vQfA0JQEpeGUUo\&q=85\&s=e88856086c38975654102a6b1bd67ec6)

### Features

* Modify, validate, enrich, or filter events with custom logic before they sync to destinations
* Write transformations in modern JavaScript
* Code, test, and connect functions to syncs within the Hightouch app
* Transform batches of events at once

### Use cases

* **Enrich event data.** Call external APIs to add data to your event payload. For example, add geolocation fields based on IP addresses.
* **Data cleaning and normalization.** Encrypt sensitive information, normalize complicated data types, or remove PII from event payloads.
* **Data validation.** Write advanced validation logic so your event data conforms to your spec.
* **General transformations.** Reshape an event before sending it to a destination.

### Get started

Use functions to transform events in any event sync: create a function, test the code, and connect it to a sync. [Read the guide](https://docs.hightouch.com/events/functions/getting-started.md) to get started.
