Use caseretailanti-theftloss prevention

Retail anti-theft on a live map: RFID readers, exits and blind spots

How a demo store maps 85 RFID readers, pulses each by activity, spots offline gates at the dock and groups it all into an Anti-theft solution.

8 min readPublished Updated By Spatial Map team
Retail Mart Store in 3D preview: violet RFID reader pulses along doorways, escalators and lifts, red rings on offline readers at the receiving dock, and stock badges on the racks

In short

Loss prevention is a “where” question

RFID loss prevention stands or falls on coverage. A tag that leaves through a door with a dead reader is invisible, however good the rest of the system is. Reader software usually tells you a reader is offline in a device list; it rarely shows which opening that leaves unwatched. Put the readers on the floor plan and the answer takes one glance.

Spatial Map is not an EAS or RFID system and doesn’t sound alarms. It is the map, the report and the history on top of the readers you already run — the same idea as the anti-theft solution page, shown here with real demo data.

From RFID readers to the loss-prevention mapReaders report to your middleware; the middleware writes one row per reader into a table (or Spatial Map pulls it); a data link draws each reader as a pulse; the RFID Live Map report reads the same table.

The store and its readers

Retail Mart Store is a three-level demo store (Ground, Level 1, Level 2) with departments, stock racks, escalators and lifts. Each RFID reader is a marker named after the opening it covers — RFID-G-01 · Receiving / Loading Docks ↔ Outside, RFID-G-26 · Bakery ↔ Deli — so the name alone tells you where to walk. All numbers below were read from the demo data on 11 October 2026.

85
RFID readers
39 · 22 · 24
Ground · Level 1 · Level 2
10
Readers on doors to the outside
61,795
Reads today
Location typeReadersWhere
Gate66Doorways between rooms, entrances, the receiving dock
Escalator9Escalator landings
Elevator9Lift doors
Stairs1A stair landing
Retail Mart Store in the editor
Retail Mart Store ground floor in the editor with violet RFID reader markers at doorways, the circulation core with escalators and lifts, departments such as Furniture Showroom, Customer Service and Toys, Games & Hobbies, and the Data links (4) button
Retail Mart Store ground floor in the editor with violet RFID reader markers at doorways, the circulation core with escalators and lifts, departments such as Furniture Showroom, Customer Service and Toys, Games & Hobbies, and the Data links (4) button

How tag reads get in

Readings land in a table: Retail Mart · RFID Reader Reads — 85 rows, 18 fields, created with the RFID tag kind. Reader ID is required and unique; it is the row key. The demo keeps one row per reader with its running numbers rather than one row per tag read, which keeps the map light and the report quick. One row:

json·One reader row
{
  "reader_id": "RFID-G-02",
  "reader_name": "RFID-G-02 · Office ↔ Receiving / Loading Docks",
  "reader_type": "Gate",
  "floor": "Ground",
  "status": "Active",
  "reads_today": 590,
  "reads_last_hour": 56,
  "unique_tags_today": 288,
  "in_count_today": 294,
  "out_count_today": 296,
  "last_read_at": "2026-10-08T09:25:12Z",
  "last_tag_epc": "E2801121130DB42AB66C7A7B",
  "last_sku": "SKU-339201 Frozen Peas 1kg",
  "last_direction": "Out",
  "alerts_today": 2,
  "rssi_dbm": -59.4,
  "firmware": "4.2.1",
  "elevation_m": 2.4
}

Your reader middleware — or a small bridge script — keeps those rows current in one of two ways:

  1. 1
    Push with the write API

    On the table’s API & access tab, create a key — one per system, so you can revoke one without breaking the rest. Send it as a bearer token. Each key is limited to 60 requests a minute and the bulk endpoints take up to 1,000 rows, so batch all 85 readers into one call every few seconds instead of one call per read. `PATCH /rows/bulk` merges only the fields you send.

  2. 2
    Or let Spatial Map pull

    Turn on Pull from a REST API on the same tab. Spatial Map fetches your URL on a schedule — every 30 seconds at the fastest — and upserts every item it returns.

bash·Update two readers in one call
curl -X PATCH https://<your API host>/api/v1/public/tables/rows/bulk \
  -H "Authorization: Bearer sgv_tbl_..." \
  -H "Content-Type: application/json" \
  -d '{"rows": [
    {"entityKey": "RFID-G-02", "patch": {"status": "Active", "reads_last_hour": 56, "reads_today": 590,
      "last_read_at": "2026-10-08T09:25:12Z", "last_direction": "Out"}},
    {"entityKey": "RFID-G-01", "patch": {"status": "Offline", "reads_last_hour": 0}}
  ]}'

Starting from scratch? On Create new table, pick RFID tag under “What kind of data is this?”; the table starts with that kind’s standard columns, which you can rename or remove.

Create new table with the RFID tag kind
Create new table page with a Table name field, the kinds Polygon / area, Circle, Marker / POI, Asset (mobile), Camera, Sensor, Shipment, RFID tag and Streaming / batch replay, and the Choose its fields grid
Create new table page with a Table name field, the kinds Polygon / area, Circle, Marker / POI, Asset (mobile), Camera, Sensor, Shipment, RFID tag and Streaming / batch replay, and the Choose its fields grid

The RFID Live Map report

Retail Mart · RFID Live Map is a full-map report: reader list on the left, KPI cards along the top, the Insights panel on the right and the store in between. Filters: Floor, Status and Search by reader.

  • KPIs: Rows 85 · Total reads today 61,795 · Total reads last hour 6,700 · Total unique tags today (summed per reader, so a tag seen by two readers counts twice).
  • By status: Active 81.2%, Idle 14.1%, Offline 4.7%.
  • Reads today by floor: Ground 31,401 · Level 1 12,681 · Level 2 17,713.
  • With the ground-floor plan selected, the list shows its 39 readers, each with status and reads today.
RFID Live Map, full-map report
Retail Mart · RFID Live Map report: a list of 39 ground-floor readers such as RFID-G-01 Offline with 1,577 reads today, KPI cards for 85 rows, 61,795 reads today and 6,700 in the last hour, the store map with reader pulses, and an Insights panel with a status donut and a reads-by-floor bar chart
Retail Mart · RFID Live Map report: a list of 39 ground-floor readers such as RFID-G-01 Offline with 1,577 reads today, KPI cards for 85 rows, 61,795 reads today and 6,700 in the last hour, the store map with reader pulses, and an Insights panel with a status donut and a reads-by-floor bar chart

What the demo data flags

  • Four readers are offline, and three of them guard the receiving dock: RFID-G-01 (dock ↔ outside, last read 8 October, 04:30 UTC), RFID-G-15 and RFID-G-16 (dock ↔ grocery). That is the door goods come in by — the gap to close first.
  • The fourth, RFID-L2-22, sits between Music & Books and Entertainment & Media on Level 2.
  • Twelve readers are idle. Idle isn’t broken, but an idle reader on an exit during opening hours deserves a walk-by.
  • The readers reported 38 exit alerts today. The Exit alerts today field puts each count on the reader that raised it, one click away in the content panel.

Group it: an Anti-theft solution

  1. 1
    Click + next to Solutions

    In the sidebar, under the workspace pages.

  2. 2
    Pick Anti-theft

    “RFID tags, gates, cameras and alarm events.” Its keywords — theft, security, rfid, tag, alarm, gate, camera, alert — pre-tick the items whose name matches: the RFID Reader Reads table, the RFID Live Map report and the RFID Reader Reads report.

  3. 3
    Tick the store yourself

    Retail Mart Store contains none of the keywords, so tick it on the Facilities tab, then click Create solution.

Nothing is moved or copied — the same store can sit in a Retail solution too. The solution gets its own home, sidebar entry and scope bar. See Solutions.

New solution templates
New solution dialog listing templates such as Warehouse, Retail, Anti-theft (RFID tags, gates, cameras and alarm events), Manufacturing, Logistics and Blank solution
New solution dialog listing templates such as Warehouse, Retail, Anti-theft (RFID tags, gates, cameras and alarm events), Manufacturing, Logistics and Blank solution

An audit trail without extra work

Every write to a table row is kept in a change log. Open a reader in the viewer’s detail drawer and its history lists each update with the fields that changed — useful when someone asks when RFID-G-01 went quiet. See Table history in the viewer.

Build your own

Create a table and a key with the write API, link it with style rules, add a full-map report and group it in a solution. For reader placement and antenna basics, read Integrating RFID readers with an indoor map; for stock and cold chain in the same store, see Retail shelf monitoring on a live store map.

Try the platform your data belongs on.

Spatial Map turns spreadsheets, sensor streams, and CAD drawings into one live 3D facility view — nothing to install, seven-day free trial.

See it live

Keep reading