Geotargeting
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 Control Administrator, or use JSON to create or import your own.
Finally, you can integrate your GPS transponder data with Broadsign by using your operating system's location API. You can also use your own script, delivering the latitude and longitude in JSON format.
Example:
First, we need to clarify the difference between "geofencing" and "geotargeting" in Broadsign Control:
- Geofencing: Employs global positioning to define geographical boundaries, virtually. Broadsign uses geofencing through its conditions feature. You will configure geofencing in Step 2: Set up Geofencing.
- Geotargeting: Targets digital signage content to a consumer based on their location in relation to geofencing. You will target content in Broadsign Control Administrator in Step 3: Geotarget a Conditional Campaign to a Display Unit.
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 1: Configure Broadsign Control Player.
Prerequisites
As mentioned, geotargeting is an advanced setting. Before configuring it, ensure that you are familiar with the following:
- Configuration Profiles - Players
- Criteria and Conditions
- Edit Criteria Properties
- Campaign Options
- Campaign Booking
Workflow
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.
Note: Google has deprecated its mapping endpoint for the China region. As a result, the map view is greyed out in this region.
Configure geofencing in Criteria and Conditions Properties (see Edit Criteria Properties). In this tutorial, you will configure geofencing in Step 2: Set up Geofencing.
The following icons are available on the geofencing map:
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.
- Create a configuration.
- Create a player configuration profile.
- Open the configuration profile properties, and go to Settings > Location Monitor. See The Location Monitor Tab.
-
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 our setup).
-
Set location with this script – Enter your script in the field. For simple scripts showing how to output the coordinates, see Use the "Script" Option.
- Click OK or Apply.
- In the Configuration Properties, go to the Resources tab.
- To associate this configuration with a player, click Add.
-
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.
From here, you could do the following:
- Proceed to the next step (see Step 2: Set up Geofencing).
- If you experience issues with your operating system's location API, we suggest you use the script option (see Use 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.
Warning: 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)
#!/usr/bin/python2.7
import json
def main():
newLat = "-33.207143856288027"
newLng = "149.843896484374990"
data = { 'lat': '{}'.format(newLat), 'lng': '{}'.format(newLng) }
print (json.dumps(data))
if __name__ == "__main__":
main()
BAT File Sample (Windows OS)
@echo off
@echo {"lat": "-33.207143856288027", "lng": "149.843896484374990"}
SH File Sample (Linux OS)
#!/bin/bash
echo "{\"lat\": \"-33.207143856288027\", \"lng\": \"149.843896484374990\"}"
Next, we will geofence an area in Midtown Manhattan (see Step 2: Set up Geofencing).
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 1: Configure Broadsign Control Player).
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:
- To keep things organized, we recommend that you create a conditions folder. We will call ours "Geotargeting".
-
In the Geotargeting folder, add a condition. In the pages of the Add Criteria Wizard, add the following information:
- Open the condition's properties, and go to the Geofencing tab.
- Search for "Midtown Manhattan".
-
In our example, we will create a polygon that surrounds Midtown (42nd-53rd street — see image).
- Click OK or Apply.
- To see the latitudinal and longitudinal coordinates of this area (in JSON), click Advanced.
The geofencing interface appears (see Geofencing Interface).
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:
- From the Options menu, select Change Options (see Access the Broadsign Control Administrator Options Menu).
- Go to Campaigns & Events > Wizard Options.
-
Select Conditions.
- To keep things organized, we recommend that you create a campaign folder. We will name ours "Geotargeting - Midtown Manhattan".
-
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 2: Set up Geofencing.
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.
To configure geofencing in advanced mode:
-
In Criteria Properties, go to the Geofencing tab.
-
Select Advanced Mode. Any geofencing objects that you created will have their coordinates appear in JSON format.
-
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.
Copy[
{
"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"
}
]