# Understanding geo campaigns

A geo campaign sends a push notification, fires a custom event, or both automatically when a user's device enters a location you defined on a map, such as a store, a venue, a delivery point, or a transit hub.

Pushwoosh uses geozones to define where a campaign can trigger. You can group multiple geozones into a [cluster](/product/messaging-channels/push-notifications/geo-campaigns/clusters/) to apply one shared cooldown and avoid repeated sends in nearby areas.

## How it works

After you set up a geo campaign, Pushwoosh runs the entry actions you enabled for the geozone ([**Send push**](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#send-push), [**Fire event**](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#fire-event), or both) when a user's device enters the geozone, the campaign is active, and [cooldown](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#choose-a-cluster-and-cooldown) allows delivery. Cooldown applies to both entry actions. It blocks a repeat entry until the cooldown expires, either from that geozone alone or from every geozone in its cluster if it belongs to one.

[**Fire exit event**](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#fire-exit-event), [**Fire dwell event**](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#fire-dwell-event), and [**Assume exit after silence**](/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/#assume-exit-after-silence) are not limited by cooldown. Those actions track that someone left the zone or stayed inside. If cooldown also blocked them, you would miss the signal that the visit ended.

<Aside type="caution" title="Location permission required">
Location permission is required. If a user has not granted it, geo campaigns cannot trigger for that device, and no entry action runs when the device enters a geozone. On Android 10 and later, background location permission is required.
</Aside>

## Use cases

- Send an in-store offer when a user enters a geozone around a retail location.
- Trigger an arrival message at a venue, pickup point, or branch office.
- Limit repeat sends in dense areas by applying one cooldown across a cluster of nearby geozones.

## Prerequisites

<Aside type="caution" icon="setting" title="Developer assistance needed">
You'll need help from your development team to integrate location tracking in your app.
</Aside>

Before you create your first geo campaign, make sure:

1. At least one mobile platform (Android or iOS) is configured in the project. [Learn how to configure platforms](/product/first-steps/start-with-your-project/configure-platforms/).
2. The Pushwoosh SDK is integrated in your app with location tracking enabled.
3. Location tracking is configured in the app. For implementation details, see [Geozones for iOS](/developer/pushwoosh-sdk/ios-sdk/customizing-ios-sdk/#geozones-push-notifications) and [Geozones for Android](/developer/pushwoosh-sdk/android-sdk/customizing-android-sdk-50/#geozones-push-notification).

<Aside type="note">
- Geo-based messaging is not available for HMS (Huawei Mobile Services) devices, since it relies on Google location services.
- For Google Play apps, approval is required for background location access. Refer to the <a href="https://support.google.com/googleplay/android-developer/answer/9799150#zippy=%2Cstep-review-best-practices-for-accessing-location" target="_blank">Google Play policy</a> and submit the <a href="https://support.google.com/googleplay/android-developer/answer/10144311" target="_blank">permissions declaration</a> before collecting users' locations.
</Aside>

## Set up a geo campaign

<CardGrid>

<IconLinkCard
    href="/product/messaging-channels/push-notifications/geo-campaigns/create-geozone/"
    icon="star"
    title="Create a geozone"
    description="Configure entry actions, the push message, the trigger shape, cooldown, and the campaign schedule."
/>

<IconLinkCard
    href="/product/messaging-channels/push-notifications/geo-campaigns/clusters/"
    icon="document"
    title="Create a cluster"
    description="Group geozones that share a cooldown, then assign zones from the form or the Geo campaigns list."
/>

<IconLinkCard
    href="/product/messaging-channels/push-notifications/geo-campaigns/import-csv/"
    icon="download"
    title="Import geozones from a CSV file"
    description="Bulk-create geozones from a spreadsheet instead of placing them on the map one at a time."
/>

<IconLinkCard
    href="/product/messaging-channels/push-notifications/geo-campaigns/manage/"
    icon="list-format"
    title="Manage geozones and clusters"
    description="Pause, edit, move, or delete geozones and clusters."
/>

</CardGrid>