> This page is part of the [Customer.io documentation](https://docs.customer.io). For the complete index, see [llms.txt](https://docs.customer.io/llms.txt).
> Last updated: October 26, 2026
> To take actions in Customer.io from an agent, use the [Customer.io CLI](https://docs.customer.io/ai/cli/get-started.md) or the [MCP server](https://docs.customer.io/ai/mcp/get-started.md).

# Geofence events

See geofence enter, dwell, and exit events in your activity logs, and export them through data warehouse syncs.

## Track geofence events

When people move in or out of your geofences, Customer.io logs **Geofence Enter** and **Geofence Exit** in your [activity logs](https://fly.customer.io/workspaces/last/journeys/profile_activity/identified). If a geofence has a [dwell time](https://docs.customer.io/messaging/people/location/geofence-dwell-time/), Customer.io also logs **Geofence Dwell** when a person stays inside for that long. Filter for the behavioral event type `Geofence` to see all geofence transitions in your workspace.

 ![A geofence enter event with the payload expanded.](https://docs.customer.io/images/geofence-event-activity-log.png)

Each event carries the `geofence_id` of the geofence and the `geoset_id` that the geofence belongs to. The activities do not send back exact coordinates of your customers, only data for the geofence they crossed.

*   Exit events include `visit_duration_seconds` when the SDK can time the visit reliably.
*   Dwell events include the geofence’s `dwell_threshold_seconds` and, when the SDK can time the visit reliably, `dwell_duration_seconds`.

A missing duration means the SDK couldn’t measure it, not that the visit lasted zero seconds.

A geofence enter or exit event fires when a person enters or exits a geofence. However, keep the following in mind:

*   **Geofence transitions are not instantaneous.** Detection and delivery time varies with the operating system, device movement, location accuracy, background restrictions, and network availability. Many events arrive within tens of seconds, but delivery can take several minutes.
*   **Enter and exit events have a 1-hour cooldown.** The SDK tracks it separately for each person, geofence, and transition type. If a person enters, exits, then re-enters within an hour, the SDK sends the first enter and the exit, and drops the second enter. Dwell events have no cooldown, so the SDK can still send a dwell event for that second visit. If the person leaves again within an hour of the first exit, the SDK drops that exit too, so the dwell event arrives without a matching enter or exit.
*   **Dwell events happen at most once per visit.** A person who stays inside a geofence for hours still produces one dwell event. Editing the geofence or an interruption in monitoring, like a device restart, resets the visit. The SDK may then send no dwell event for the rest of that stay, or send a new one after the person stays for the dwell time again.

## Report on geofence events

You can export geofence events through data warehouse syncs. They come with the [Events schema](https://docs.customer.io/integrations/data-out/data-warehouses/data-warehouses-intro/#events-schema) in your export files with `type = geofence`.

Geofence events don’t currently come with destination actions in other data out integrations.
