Custom Tags
Canonical tag definitions, alias resolution, and coverage tracking across cloud resources.
Custom Tags
Custom Tags let users define canonical tag keys with normalised aliases and allowed values, then track coverage across all cloud resources and accounts. Rather than dealing with inconsistent tag names per provider (e.g. Env, env, environment), Custom Tags resolve everything to a single authoritative key and surface compliance gaps.
Why Custom Tags
Cloud resources accumulate inconsistent, provider-specific tags over time. Custom Tags solve this by:
- Normalising raw resource tags to canonical keys via alias resolution.
- Enforcing allowed values so tags carry consistent, queryable data.
- Measuring coverage — which resources are tagged, which are not, and at what percentage.
- Filtering resources across Discovery, FinOps, SecOps, and Orchestration by tag key + value.
Data Model
CustomTagDefinition
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier (e.g. ctag-1) |
key | string | Canonical tag name (e.g. Environment) |
aliases | string[] | Alternative raw tag names that resolve to this key (e.g. ["Env", "env", "environment"]) |
allowedValues | string[] | Preferred values for this tag (e.g. ["Production", "Development", "Staging"]). Empty means any value is accepted. |
createdAt | ISO datetime | Creation timestamp |
Tag Format on Resources
Tags on cloud resources are stored as Key:Value strings, e.g. "Env:Production". The Custom Tags engine resolves the raw key to its canonical form before display and filtering.
Built-in Tag Definitions (seed data)
| Key | Aliases | Allowed Values |
|---|---|---|
Environment | Env, env, environment | Production, Development, Staging |
Department | dept, Dept | Engineering, Finance, Operations, Security |
Owner | (none) | (any) |
UI Overview
Dashboard (/custom-tags)
Provides a platform-wide view of tag adoption.
KPI Cards
| Card | Description |
|---|---|
| Total Resources | All resources across all connected accounts |
| Tagged Resources | Count and percentage with at least one matched tag |
| Untagged Resources | Count and percentage with no matched tags |
| Global Tag Score | Average coverage percentage across all tag definitions |
Tag Definitions Table — lists every custom tag with:
- Aliases (shown as badges)
- Allowed Values (shown as badges)
- Tagged Resources count
- Coverage % with colour coding: green ≥ 80%, amber 50–79%, red < 50%
- Status badge: Healthy / Review / Action needed
Tag Score by Account Table — per-account breakdown showing each tag key's coverage percentage. Rows sorted by overall score ascending to surface the worst-covered accounts first.
Create Tag (/custom-tags/new)
Two-panel layout:
- Left panel — feature overview and a live example showing the tag structure.
- Right panel — form with:
- Tag Key (required, validated for uniqueness)
- Aliases (multi-add, Enter or comma to add; resolved to the canonical key at query time)
- Allowed Values (optional, multi-add; if empty, any value is accepted)
- Live preview of how the tag resolves
Tag Detail (/custom-tags/[id])
Three tabs:
Overview
- Stat cards: Total Resources, Tagged, Untagged, Coverage %
- Overall Coverage progress bar
- Value Distribution chart — resources grouped by tag value (including untagged)
- Coverage by Account breakdown
Resources
- DataTable of all resources with: name/ID, account, type, category, region, all tags, and the current value for this tag (
Untaggedbadge in amber if missing) - Filters: Status, Account, Type, Category, Region, Tag Value
- Bulk selection toolbar — select multiple resources and apply a tag value via
CustomTagValuePicker
Settings
- Edit Tag Key, Aliases, and Allowed Values inline
- Danger Zone with Delete button
Alias Resolution
When the platform encounters a raw resource tag key, the resolution logic is:
- Check for an exact match against a
CustomTagDefinition.key. - Check for a case-sensitive match in any definition's
aliasesarray. - If matched, return the canonical key; otherwise the tag is unrecognised.
This ensures "Env", "env", and "environment" all map to the Environment tag definition.
Module Integration
Custom Tags are used across all modules as a first-class filter and grouping dimension:
| Module | Usage |
|---|---|
| Discovery | Filter the resource inventory by tag key + value |
| FinOps | Group costs by custom tag (e.g. cost by Department) |
| SecOps | Filter security findings by tagged resources |
| Accounts | View per-account tagging coverage scores |
| Orchestration | Target provisioning workflows at resources by tag |
Coverage Colour Coding
| Coverage | Colour | Status Badge |
|---|---|---|
| ≥ 80% | Green | Healthy |
| 50–79% | Amber | Review |
| < 50% | Red | Action needed |