SENSOR_LOCATION
The position parameters require a device with the SENSOR_LOCATION sensor — the sensor that reports where the player is. On a device without it, any of them is rejected (400).
Parameters
Section titled “Parameters”| Param | Carries |
|---|---|
retail_grocery_zone |
The zone within a grocery store the player is in, e.g. the check-out area. |
retail_mall_zone |
The zone within a mall the player is in. |
aisle |
The grocery product aisle the player is at. |
Each is single-valued: a player is in one place at a time. The two zone parameters are mutually exclusive — a player is in a grocery store or a mall, not both.
retail_grocery_zone=<VENUE_RETAIL_GROCERY_*>retail_mall_zone=<VENUE_RETAIL_MALLS_*>aisle=<AISLE_*>These are the same names and values a fixed screen carries on placement.retail_grocery_zone / placement.retail_mall_zone and placement.aisles, so a moving player and a fixed screen describe a position identically. The venue is not sent: it follows from which zone parameter you use, and the store follows from the device’s location.
Accepted zone values
Section titled “Accepted zone values”retail_grocery_zone
| Zone | Value |
|---|---|
| Entrance | VENUE_RETAIL_GROCERY_ENTRANCE |
| Check-out | VENUE_RETAIL_GROCERY_CHECK_OUT |
| Aisles | VENUE_RETAIL_GROCERY_AISLES |
| Exterior | VENUE_RETAIL_GROCERY_EXTERIOR |
retail_mall_zone
| Zone | Value |
|---|---|
| Concourse | VENUE_RETAIL_MALLS_CONCOURSE |
| Food court | VENUE_RETAIL_MALLS_FOOD_COURT |
| Spectacular | VENUE_RETAIL_MALLS_SPECTACULAR |
Each parameter accepts only zones from its own venue, and the *_UNSPECIFIED value of either is rejected (400) — sending a parameter at all means naming a specific zone. Grocery and mall are the only venues with zones today; see the Ads API reference for the full enums.
For aisle, any Aisle value applies — AISLE_PRODUCE, AISLE_DAIRY, AISLE_BAKERY, AISLE_FROZEN, AISLE_BEVERAGE, AISLE_MEAT, and the rest. Aisles exist in grocery only.
How they combine
Section titled “How they combine”An aisle belongs to the grocery Aisles zone, so sending aisle alone implies that zone:
| Request | Position it describes |
|---|---|
aisle=AISLE_DAIRY |
Grocery, in the aisles, at dairy — the zone is inferred |
retail_grocery_zone=VENUE_RETAIL_GROCERY_AISLES&aisle=AISLE_DAIRY |
The same; the aisle refines the zone |
retail_grocery_zone=VENUE_RETAIL_GROCERY_CHECK_OUT |
Grocery, at the check-out, no aisle |
retail_mall_zone=VENUE_RETAIL_MALLS_FOOD_COURT |
A mall food court |
Two combinations are rejected (400):
| Request | Why |
|---|---|
retail_grocery_zone=VENUE_RETAIL_GROCERY_CHECK_OUT&aisle=AISLE_DAIRY |
Contradictory — an aisle requires the Aisles zone. |
retail_mall_zone=VENUE_RETAIL_MALLS_CONCOURSE&aisle=AISLE_DAIRY |
Aisles are grocery-only. |
What it matches
Section titled “What it matches”The position is compared against a flight’s venue targeting, and matching is hierarchical — a coarser selection admits a more specific position:
| Flight targets | aisle=AISLE_DAIRY matches |
grocery check-out matches |
|---|---|---|
| Retail (whole category) | yes | yes |
| Grocery | yes | yes |
| Grocery → Aisles | yes | no |
| Grocery → Aisles → Dairy | yes | no |
| Grocery → Check-out | no | yes |
A flight targeting a mall zone never matches a grocery position, and the reverse.
Example
Section titled “Example”An online request from a handheld at the dairy aisle:
GET /v1alpha2/ads?playerid=screen-01&key=retailer-acme&aisle=AISLE_DAIRY HTTP/1.1Accept: application/xmlAt the check-out instead:
GET /v1alpha2/ads?playerid=screen-01&key=retailer-acme&retail_grocery_zone=VENUE_RETAIL_GROCERY_CHECK_OUTIn a mall food court:
GET /v1alpha2/ads?playerid=screen-01&key=retailer-acme&retail_mall_zone=VENUE_RETAIL_MALLS_FOOD_COURTCombined with the other inline signals — each facet is independent:
GET /v1alpha2/ads?playerid=screen-01&key=retailer-acme&aisle=AISLE_DAIRY&products=sku-123&seg=50.5:1Sending no position
Section titled “Sending no position”A SENSOR_LOCATION device that omits these parameters has no position for that request. It still gets a decision, but only from flights with no venue targeting — anything targeting a venue, zone, or aisle is skipped. Send the position whenever you have it; omit it to fall back to untargeted ads.