Location Attributes: Tagging Locations with Data That Drives Conditional Visibility and Project Targeting

Ayesha
Ayesha
  • Updated

What Location Attributes Are

Location Attributes let you attach structured, typed data to each location in your workspace — facts about that location that describe what it has, how it operates, or what type of store it is.

Once attributes are set on locations, two things become possible:

  1. Conditional Visibility in templates — show or hide entire checklist sections based on whether the location completing the form matches a specific attribute value
  2. Project targeting — deploy a project to locations that share a specific attribute without manually selecting each one

For a restaurant group, this means you build one template and one project — and Xenia handles routing the right content to the right stores automatically, based on what each location actually is.


Restaurant Use Cases by Attribute Type

Six attribute types are available. Here's a practical restaurant example for each:

Single Select — "Service Model"

Each location has one service model. Assign one from: Full Service Dine-In, Fast Casual, Quick Service, Drive-Thru Only.

Used for: Showing the Drive-Thru section of an opening checklist only to QSR and Drive-Thru Only locations. Full-service dine-in locations never see it — and aren't scored against it.

Multi Select — "Amenities"

A location can have multiple amenities simultaneously. Options: Bar, Private Dining Room, Outdoor Patio, Catering Kitchen, Kids Play Area.

Used for: Showing a "Bar Opening Procedures" section only to locations that have a bar. A location with a patio AND a bar gets both sections; a location with neither gets neither

Number — "Seating Capacity"

A numerical value unique to each location. Example: Store 12 has 84 seats. Store 47 has 220 seats.

Used for: Triggering additional capacity management questions on audits when seating capacity exceeds a threshold (e.g. locations with 150+ seats see a "Large Venue Compliance" section). Can also be referenced in project targeting to group locations by size tier.

Boolean — "Has Drive-Thru"

A true/false flag. Either the location has a drive-thru or it doesn't.

Used for: Conditionally showing the entire Drive-Thru section of the daily operations checklist. Toggle is ON → section appears. Toggle is OFF → section is completely hidden, no questions shown, no scoring impact.

Text — "Local Health Inspector Name"

Free-text field. Each location can store the name of their assigned health inspector.

Used for: Displaying the inspector's name in a pre-populated field during health inspection preparation checklists, so the manager can reference local contact information without looking it up elsewhere.

Date — "Last Equipment Audit"

A date value stored per location. Example: Store 12's commercial fryers were last professionally audited on 03/15/2026.

Used for: Generating reminders or project tasks to locations where this date is approaching or overdue — without manual tracking in a spreadsheet.


Step 1 — Where to Create Location Attributes

Location Attributes are created at the workspace level and then assigned values per location.

  1. Go to Locations in the top navigation
  2. Click the Configurations tab
  3. Click Location Attributes in the left sidebar
  4. Click + Add Attribute
  5. Enter a name, select the attribute type, and (for Single Select and Multi Select) add the available options with colors
  6. Save

Step 2 — Assigning Attribute Values to Locations

Once attributes are defined, assign values to each location individually.

  1. Go to Locations → click into a specific location
  2. Find the Attributes section on the location detail page
  3. Click Edit or the attribute field
  4. Set the value — pick from options (select types), enter a number, toggle on/off (boolean), type text, or pick a date
  5. Save

Step 3 — Using Attributes in Conditional Visibility (Templates)

This is where location attributes become operationally powerful. In the template builder, you can set a section's visibility to only appear when the submitting location has a specific attribute value.

  1. Open your template → Edit → Builder tab
  2. Click the section header of the section you want to conditionally show
  3. Click Set Visibility
  4. Set the condition: "If Location Attribute [Has Drive-Thru] is [True]" — or "If Location Attribute [Service Model] is [Quick Service]"
  5. Save

What this means in practice:

When a store manager at a Quick Service location opens the daily operations checklist, the Drive-Thru section appears automatically — pre-scoped to their location type. A full-service dine-in manager at another store opens the same template and never sees the Drive-Thru section at all. One template, relevant for every location in the fleet.


Step 4 — Using Attributes in Project Targeting

Instead of manually selecting which locations receive a project, you can target locations by attribute value. Every location that matches the attribute gets the project — automatically, including any new locations added later.

  1. Go to Operations → Projects → + Add Project
  2. In the Locations step, instead of selecting individual stores, click Filter by Attribute
  3. Select the attribute and value: "Service Model = Quick Service"
  4. All matching locations are added to the project scope

Advanced Attributes View for a project: 


Example:
You create a "Drive-Thru Speed of Service" project that deploys a daily speed check to all Drive-Thru enabled locations. Set the filter to Has Drive-Thru = True. All 47 of your drive-thru stores receive the project automatically. When a new drive-thru location opens and the attribute is set to True, it's included in the next project cycle without any manual update.


The Full Flow — How It Works End to End

Admin creates attribute "Has Drive-Thru" (Boolean) at workspace level
         ↓
Admin sets Has Drive-Thru = True on 47 locations
         ↓
Template Builder: Drive-Thru Opening section → Set Visibility → "If Has Drive-Thru = True"
         ↓
Project created targeting "Has Drive-Thru = True" locations
         ↓
Daily task generates for 47 drive-thru stores only
         ↓
Store manager opens checklist on mobile →
  Drive-Thru location: Drive-Thru section visible ✅
  Non-Drive-Thru location: Drive-Thru section hidden ✅
         ↓
Reporting scoped correctly — no N/A scoring impact on non-drive-thru stores

Managing Attributes at Scale via the Public API

For large operations with many locations — or when attribute values live in an existing system like a POS or property management platform — you can create and update attribute definitions programmatically using the Bulk Upsert Location Attributes endpoint instead of setting them manually through the UI.

API Reference: https://docs.xenia.team/api-reference/endpoints/enterprise-locations/bulk-upsert-attributes

Requirements:

  • Public API workspace feature enabled
  • Location Attributes workspace feature enabled
  • API key with CAN_MANAGE_LOCATIONS permission

Endpoint:

POST /api/v1/mgt/enterprise/workspaces/{workspaceId}/location-attributes/bulk-upsert

Up to 500 attribute definitions per call. The endpoint is idempotent — safe to re-run without creating duplicates.


Example request — creating the restaurant attributes above:

json
{
  "attributes": [
    {
      "externalId": "SERVICE_MODEL",
      "name": "Service Model",
      "description": "The primary service format of this location",
      "type": "single_select",
      "options": [
        { "label": "Full Service Dine-In", "color": "#7C5CFC" },
        { "label": "Fast Casual",          "color": "#22B8CF" },
        { "label": "Quick Service",        "color": "#F59E0B" },
        { "label": "Drive-Thru Only",      "color": "#EF4444" }
      ]
    },
    {
      "externalId": "AMENITIES",
      "name": "Amenities",
      "description": "Features and amenities available at this location",
      "type": "multi_select",
      "options": [
        { "label": "Bar",                  "color": "#8B5CF6" },
        { "label": "Private Dining Room",  "color": "#3B82F6" },
        { "label": "Outdoor Patio",        "color": "#10B981" },
        { "label": "Catering Kitchen",     "color": "#F59E0B" },
        { "label": "Kids Play Area",       "color": "#EC4899" }
      ]
    },
    {
      "externalId": "SEATING_CAPACITY",
      "name": "Seating Capacity",
      "description": "Total guest seating capacity",
      "type": "number"
    },
    {
      "externalId": "HAS_DRIVE_THRU",
      "name": "Has Drive-Thru",
      "description": "Whether this location operates a drive-thru",
      "type": "boolean"
    },
    {
      "externalId": "HEALTH_INSPECTOR_NAME",
      "name": "Local Health Inspector Name",
      "description": "Name of the assigned local health inspector",
      "type": "text"
    },
    {
      "externalId": "LAST_EQUIPMENT_AUDIT",
      "name": "Last Equipment Audit",
      "description": "Date of the most recent professional equipment audit",
      "type": "date"
    }
  ]
}

Key API rules to know:

Rule Detail
type is immutable Once an attribute is created with a type, you cannot change it. Sending a conflicting type returns a 400 error.
externalId is your stable key Use your own system's identifier here. On re-runs, the endpoint matches by externalId first and updates in place — no duplicates.
Options replace on each call For single_select and multi_select, include an option's id to keep it, omit it to remove it. Prefer additive changes — removing an option can leave per-location values pointing at an option that no longer exists.
Options required/forbidden single_select and multi_select require an options array. All other types (number, boolean, text, date) must not include options.
500 per call max Split larger sets into batches of 500.

Frequently Asked Questions

Q: Do I have to use the API to set attribute values on individual locations, or can I do that in the UI?
Both. The UI (Locations → location detail → Attributes) is best for setting values on individual stores. The API is better for bulk-updating values across hundreds of locations at once.

Q: If I add a new location and set its attributes, will it automatically be included in existing projects that target that attribute?
Yes — on the next project generation cycle, any location that matches the attribute filter is included automatically. No manual project update required.

Q: What happens to checklist scoring if a section is hidden via conditional visibility?
The hidden section's questions are excluded from the score calculation entirely. A non-drive-thru location is not penalized for a drive-thru section they never see.

Q: Can I combine multiple attribute conditions on a single section?
Yes — you can add AND conditions. A section could be set to show only when Service Model = Quick Service AND Has Drive-Thru = True — meaning it appears only for QSR locations that also have a drive-thru lane.

Q: What permissions are needed to manage Location Attributes in the UI?
The user's role must have the Manage Locations permission enabled. In Settings → Roles, look for the Locations permission group.

Need Help?
Reach out to our Support@xenia.team 

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.