Broadsign’s geotargeting feature enables users to target moving screens, and activate campaigns, within a specific geographical area. As a result, network operators can better sell local advertising.

You can draw your own geofencing objects in Broadsign Administrator, or use JSON to create or import your own.

Finally, you can integrate your GPS transponder data with Broadsign using your operating system’s location API. Alternatively, you can use your own script, delivering the latitude and longitude in JSON format.

Example: Imagine that you are the network operator for a fleet of taxis in New York City. Each taxi has a small digital display inside (along with a player and a GPS transponder). When a cab drives into Midtown Manhattan, you want ads for Times Square restaurants or Broadway shows to appear. Once the cab leaves Midtown, the player should return to regular content. Broadsign helps you to target these moving screens, and sell more local ads.

First, we need to clarify the difference between “geofencing” and “geotargeting” in Broadsign Core:

    • Geofencing: Employs global positioning to define geographical boundaries, virtually. Broadsign uses geofencing through its conditions feature. You will configure geofencing in Step Two: Set Up Geofencing (below).
    • Geotargeting: Targets digital signage content to a consumer based on their location in relation to geofencing. You will target content in Broadsign Administrator in Step Three: Geotarget a Conditional Campaign to a Display Unit (below).
Hardware Requirements

You will need a GPS transponder (data puller) that will send latitude and longitude coordinates to the player periodically. You will configure how the data will pass to the player in Step One: Configure Broadsign Player (below).


As mentioned, geotargeting is an advanced setting. Before configuring it, ensure that you are familiar with the following:


In general, the workflow to enable geotargeted campaigns is:

    • Configure the player
    • Set up geofencing
    • Geotarget a conditional campaign to a display unit

Broadsign provides the ability to see your geofencing network in a map view. You can track your geofencing network visually, while making adjustments through the interface.

Configure geofencing in Criteria and Conditions Properties. In this tutorial, you will configure geofencing in Step Two: Set Up Geofencing.

On the geofencing map, you will see the following icons:

Icon Description
Zoom in and out on the map.
The selection tool. Used to navigate across the map, and select items on it. Note: When you select an item, its colour will change from grey to blue.
Creates a circular geofencing object.
Creates a polygonal geofencing object.
Creates a square/rectangular geofencing object.
Deletes all selected objects.
Deletes all geofencing objects for the condition.
Zooms the map in our out, as needed, to include all geofencing objects in the view.

In our example, each taxi has a player and a GPS transponder. The player needs to pull, from the transponder, the taxi’s latitude and longitude. We will configure the player to import these GPS coordinates.

To configure the player:
  1. Create a configuration.
  2. Create a player configuration profile.
  3. Open the configuration profile properties, and go to Settings > Location Monitor. See The Location Monitor Tab.
  4. Configure the location monitoring settings, choosing between an operating system set-up and your own script. For our example, we will configure the following:
      • Enable location monitoring Required to configure any Location Monitor settings.
      • Refresh period: 15 seconds (recommended value).
      • Timeout if no fix after: 5 minutes (recommended value).
    Note: If your GPS device loses its fix, you can set the timeout feature. It will use the old coordinate before expiring to a “no location” state. You configure the length of time that passes before the player switches from the old coordinate to a “no location”.
      • Use Operating System location: Default (the player will use the best operating system location API for my set-up).
      • Set location with this script: Enter your script in the field. For simple scripts showing how to output the coordinates, see Script Samples, below.

  1. Click OK or Apply.
  2. In the Configuration Properties, go to the Resources tab.
  3. To associate this configuration to a player, click Add.
  4. From the Select Resources dialogue box, select the player or players you want.

Now, every fifteen seconds this player will receive the taxi’s latitude and longitude from the GPS transponder.

Next, we will geofence an area in Midtown Manhattan.

Using the “Script” Option
Note: If you experience issues with your operating system’s location API, we suggest you use the “script” option. Export it based on your hardware.

If you use the script option, you must output a string to stdout with a JSON document containing lat and lng.

Note: The format of the output is critical. The player watches for output from the stdout and interprets the JSON in a strict way. If there are any entries other than lat or long, the player will consider them to be an error and ignore them.
{ "lat":"45.50610628959769", "lng":"-73.70864868164062" }

If your GPS transponder is unable to get a fix from the satellite, for any reason, you should output an empty JSON string. Otherwise, the system will use the last valid position and activate or deactivate conditions based on it:

{ "lat":"", "lng":"" }
Note: If your GPS device loses its fix, you can set the timeout feature. It will use the old coordinate before expiring to a “no location” state. You configure the length of time that passes before the player switches from the old coordinate to a “no location”.

Python Sample (Windows OS)


import json

def main():
  newLat = "-33.207143856288027"
  newLng = "149.843896484374990"
  data = { 'lat': '{}'.format(newLat), 'lng': '{}'.format(newLng) }
  print (json.dumps(data))
if __name__ == "__main__":

BAT File Sample (Windows OS)

@echo off

@echo {"lat": "-33.207143856288027", "lng": "149.843896484374990"}

SH File Sample (Linux OS)


echo "{\"lat\": \"-33.207143856288027\", \"lng\": \"149.843896484374990\"}"

Next, we will geofence an area in Midtown Manhattan.

Create geofencing objects that provide virtual boundaries. Once a taxi enters this area, within fifteen seconds the player will receive confirmation from the transponder via the configuration (see Step One, above).

For our example, we will geofence an area around Midtown Manhattan that encompasses Times Square and the Theater District.

Note: When geofencing areas for your conditions, keep in mind that the refresh period is fifteen seconds. It is a best practice to ensure that a geofenced area takes more than fifteen seconds to traverse.
To set up geofencing:
  1. To keep things organized, we recommend that you create a conditions folder. We will call ours “Geotargeting”.
  2. In the Geotargeting folder, add a condition. In the pages of the Add Criteria Wizard, add the following information:
      • Welcome: Name the condition “Midtown Manhattan”.
      • Criteria Type: Select Condition, and deselect All.

  1. Open the condition’s properties, and go to the Geofencing tab. The geofencing interface appears (see Interface, above).
  2. Search for “Midtown Manhattan”.
  3. In our example, we will create a polygon that surrounds Midtown (42nd-53rd street — see image).

  1. Click OK or Apply.
  2. To see the latitudinal and longitudinal coordinates of this area (in JSON), click Advanced.

Next, we will schedule a conditional campaign that contains local advertising for the Theater District.

At this stage, you need to geotarget a conditional campaign to your display unit. Loop policy settings are unimportant for this tutorial (just ensure that you have one!).

This section has two general steps:

    • Enable the “Conditions” page in the Add Campaign Wizard.
    • Geotarget the conditional campaign to the display unit.
To enable conditions for the Add Campaign Wizard:
  1. From the Options menu, select Change Options.
  2. Go to Campaigns & Events > Wizard Options.
  3. Select Conditions.

To geotarget a conditional campaign to a display unit:
    1. To keep things organized, we recommend that you create a campaign folder. We will name ours “Geotargeting – Midtown Manhattan”.
    2. In your new folder, book a campaign. Pay special attention to the following pages in the Add Campaign Wizard:
        • Welcome: Enter a name for the campaign. For our example, we will call it “Broadway Theatre – Spring/Summer”.
        • Display Unit Targeting: Target one of your taxi’s display units.

        • Ad Copies: Select one of your local ad copies. For our example, we will include an ad for a theatre that is within our geofenced area.

        • Conditions: In the “Matches All” section, add the “Midtown Manhattan” condition you created in Step Two.

Finished! You have configured geotargeting for the digital signage network on your taxi fleet.

You can use advanced mode to import your own JSON geofencing data.

Also, advanced mode helps with copying an existing configuration. If you create another criterion, and want it to have the same geofencing, just copy and paste the JSON from your existing criterion.

Configure geofencing in advanced mode:
  1. In Criteria Properties, go to the geofencing tab.

  1. Select Advanced Mode. Any geofencing objects that you created will have their coordinates appear in JSON format.

  1. In the JSON window add to, or edit, the data.
    • Circle: Includes latitude/longitude coordinates for the centre, and a radius in metres.
    • Rectangle/Square: Includes latitude/longitude coordinates for the northeast and southwest corners.
    • Polygon: Includes a list of latitude/longitude coordinates.
Note: From advanced mode, to return to map mode, click Map Mode.
        "center": {
            "lat": "40.75356408930207",
            "lng": "-73.98287773132324"
        "radius": "287.3313451469198",
        "type": "circle"
        "bounds": {
            "northEast": {
                "lat": "40.765071427764255",
                "lng": "-73.98571014404297"
            "southWest": {
                "lat": "40.76136589216275",
                "lng": "-73.9954948425293"
        "type": "rectangle"
        "path": [
                "lat": "40.77287188004522",
                "lng": "-73.97850036621094"
                "lat": "40.76929678641433",
                "lng": "-73.97146224975586"
                "lat": "40.76897176836409",
                "lng": "-73.96940231323242"
                "lat": "40.76715163790488",
                "lng": "-73.97077560424805"
                "lat": "40.77157186825386",
                "lng": "-73.9793586730957"
        "type": "polygon"