Today, marketers have abundant customer data at their disposal such as their name, age, gender, past purchase data, product preferences, eyeball data, location, etc. Engaging relevant customers with relevant offers or multi-channel marketing campaigns is now a critical cog in an effective marketing strategy. The most under-utilized data-point in this wheel of customer engagement is often “location”.

There are two main marketing technologies built using customer location data:

  • Geolocation-based targeting
  • Geofencing

What is the difference?

Geotargeting: The most commonly used technology in which you can target your offers or engage customers based out of a particular geographic location. This technology works best when you want to segment and target customers based on larger physical radius criteria like country, state, or city and last known available location of the user.


For creating geolocation-based targeting - you can head over to the segmentation module of CEE and use smart customer attribute called "Last Known Location".

Geofencing: Helps you create a virtual territory around a particular location and target only those customers within that proximity. It is based on the effective use of GPS data.

In this guide, we will see how to create and manage geofences to know when a user enters, exits, and dwells in a given geofence and also setup a journey campaign to trigger push notification in such a scenario.



  • Geofence feature is available from Android SDK v3.1.11 and iOS SDK v3.1.3 onwards and ensure to integrate the location tracking steps given here for Android and iOS
  • This feature will be available for Native, React Native platforms. Coming soon for Flutter.
  • Please note that dwell event tracking is available only Android SDK.

Creating Geofence Groups and Geofences


Points to note while creating Geofences on the panel:

  • Precise location. If the center point of your Geofence is off, you will get inconsistent results.
    For example, if you placed the Geofence slightly off and it was monitoring the building next door, it might not get triggered correctly.

  • Geofences work on a boundary-crossing basis. The Geofence is NOT constantly monitoring your location. Your status will only be updated when you cross the Geofence boundary going IN or OUT.
    For example, if you have your device turned off and you exit the Geofence - when you turn your device back on, it will not check you OUT. The device must be running when crossing the boundary.

  • Larger radius of the Geofences. Low-powered locations need to have perfect precision. If the Geofence radius is set too small:
    -The device will not be able to identify that it has entered the small Geofence.
    -You may check IN and OUT multiple times a day (when you aren't even moving).The low-powered location isn't accurate enough to keep you in the small Geofence radius.

    Minimum radius of Geofence should be at least 150 meters.

Step 1 - Enable Geofence feature for given app added in the assets section

Go to Assets > Android or iOS apps that you may have added and click on Edit button. You need to enable Geofence feature from here as shown in the below screenshot.


Step 2: Setting up geofences.

Go to Assets > Geofences section and click on Create Geofence button.

  • Here, you can create a geofence group and start adding geofences to this group.
    You can add geofence by searching for a location.

  • Each geofence group can contain 1 or more geofences, with a maximum limit of 100 geofences.

  • Click on Add geofence button, provide a name and radius in km or miles and click on "Add" button to confirm.
  • You can set your dwell time and duration for which this geofence group should be active in the time settings. Dwell time is set to the default of 15 minutes.
  • You can proceed to click on Save button to activate this geofence group.
  • Once done, CEE SDK will start sending geofence entry, exit and dwell events for these added geofences.
  • On geofence listings page, you can get metrics such as geofence entry , exit and dwell event counts and how many journey campaigns are running for given geofence.


Pre-requisites for Geofence to work optimally on devices

Android devices

On your Device (Mandatory):

  • WiFi or Mobile data must be turned on. It may seem obvious, but the low-power location management that Geofencing uses is primarily based on distances from WiFi signals.

  • Location is turned on and in High Accuracy Mode on your device. Go to your device's Settings, and navigate to your Location Settings to make the required changes.

  • Location permission needs to be given for "Allow All the time" or “Always”.

  • Airplane Mode must be turned off. Airplane Mode will disable both WIFI/data services and Location tracking.

On your device (Other factors):

  • Any application that has the ability to kill, stop, or put our application on sleep may prevent Geofences from working. Such as:
    - Force stop
    - Force kill
    - Sleep mode
    - 'Stop' the application from the 'Running apps' list.
    - Task Killer apps on your device.

  • Applications are put to sleep if not opened in a while. It is difficult to determine if your device has a setting for this. Can be checked in the device settings.
    For example, the latest Samsung devices use the Smart Manager to put our app to sleep. To add our app to the unmonitored list on a Samsung, go to Settings -> Battery -> Unmonitored Apps -> then add your app to the list.

  • 'Power Saving Mode' can affect Geofences. The Geofences will be a lot less consistent while Power Saving Mode is turned on (as it will automatically lower your location accuracy).

  • Apps installation on the SD card. Geofences are disabled when the device is turned off, and we re-enable them when it is turned back on. On some devices, we cannot re-enable the Geofences when the device is restarted and the app is installed on the SD card.

iOS devices

On your device (Mandatory):

  • Location permission needs to be given for "Always Allow"
    There are four levels of location permissions the user can grant your app:
  1. Don’t Allow: The user has refused location access.
  2. Allow Once: The user will allow your app to determine location just once.
  3. Allow While Using App: Your app can determine location whenever the app is in the foreground.
  4. Always Allow: Your app will receive location updates when in the background and be able to determine the location in the foreground.

On your device (Other factors):

  • Ensure Low Power Mode is in the off (disabled) position

  • Ensure that “Background App Refresh” and “Cellular Data” are enabled for the app.

  • Battery Optimisation - iOS offers functionality to help extend battery life. This can limit how often location changes are reported to apps by the mobile device, as well as how often apps are allowed to communicate in the background with the internet. For the Geofence feature to work, the app must both be informed of significant location changes by your iOS device and be able to promptly communicate with Smartech servers to take action on your Geofence settings.

Setting up journey campaign for geofencing triggers

  • When you create a journey campaign, please select Geofence as trigger node as shown below.
  • Select trigger activity from options like entry, exit or dwell
  • Then proceed to selecting applicable geofence group and individual geofences for your journey.
  • Once above trigger node setup is done, you can add push notification, Email or SMS node to trigger your messages and you're done!


Notifications triggered by Geofence may be delayed or might be received in a location outside the Geofence in some cases:

  1. SDK might not be able to send GeoFence events to the server due to low or no network connectivity. In which case, SDK sends the GeoFence events to the server which connectivity is restored sometime after the device has moved out of GeoFence location.
  2. In Android version 6,7 & 8, GPS callback from the OS to the SDK is inconsistent.