Key Concepts — Areas, Geofences & Regions¶
Three words get used constantly and they are easy to mix up. This page pins them down in plain language. Everything else in this section builds on it.
The mailing-list analogy¶
Think of notifications like a set of mailing lists:
- A geofence is a shape on the map with a name. It says where something happens — "anything inside this polygon."
- An area is subscribing to that shape. The shape does nothing until a user adds its name to their personal "notify me here" list. The area is the subscription; the geofence is the shape behind it.
- A region is a folder that groups public shapes together so they're easier to find — "all the geofences in Colorado." Regions live only in Koji and are set up by you, the operator.
The three concepts side by side¶
| Geofence | Area | Region | |
|---|---|---|---|
| Plain meaning | A named shape on the map | A name on a user's "notify me" list | A folder that groups public shapes |
| Answers | Where? | Am I subscribed? | Which group does it belong to? |
| Who creates it | A user (draws it) or you (in Koji) | A user (toggles it on) | You, the operator (in Koji) |
| Where it's stored | Private: inside PoracleWeb.NET. Public: in Koji. | In the user's profile | In Koji |
| Example | A polygon named downtown |
downtown is on your list |
Colorado contains downtown, boulder, … |
Two kinds of geofence¶
There are exactly two kinds, and the whole system is about the relationship between them:
flowchart LR
subgraph P [PRIVATE user geofence]
direction TB
P1[Drawn by one user]
P2[Only that user sees it]
P3[Stored inside PoracleWeb.NET]
P4[Hidden from the bot]
end
subgraph A [PUBLIC admin geofence]
direction TB
A1[Lives in Koji]
A2[Everyone can pick it]
A3[Shows in the bot area picker]
A4[Grouped under a region]
end
P -->|promote| A
A private geofence can stay private forever — most do. Promotion is optional and is covered in Private geofences & promotion.
The one rule that ties it together¶
The rule
A geofence only sends notifications to a user when that geofence's name is on that user's area list.
Drawing a shape isn't enough on its own — the name has to be "switched on." When a user draws a geofence, PoracleWeb.NET switches it on for them automatically. They can later toggle it off (and back on) per profile without deleting it.
flowchart LR
G["Geofence
name: downtown
shape: polygon"] --> L["User's area list
[downtown, work]"]
L --> R["Notifications fire
inside the shape"]
If the name is not on the list, the shape is dormant — it exists, but it's silent.
Profiles: on for one, off for another¶
PoracleWeb.NET users can have multiple profiles (e.g. "Home", "Work"). A geofence is owned by the user, but the on/off switch is per profile. So the same downtown shape can be on for the Home profile and off for the Work profile. Drawing it once is enough; the user flips it per profile with a toggle.
A note on capitalization (it matters)¶
PoracleJS/PoracleNG matches area names exactly, including case. PoracleWeb.NET stores every geofence name in lowercase to avoid surprises — Downtown and downtown are not the same to PoracleJS/PoracleNG, and a mismatch means no notifications, silently.
If you edit the database by hand
You don't normally need to do anything — PoracleWeb.NET handles lowercasing. But if you ever edit area names directly in humans.area, profiles.area, or a geofence name, keep them lowercase.