- The Rootly plugin for Backstage runs inside your Backstage instance and pushes data to Rootly. It supports a rich set of
rootly.com/...annotations for mapping entities to Rootly services, functionalities, teams, and catalog entities. - The built-in Backstage integration runs on Rootly’s side and pulls entities from your Backstage catalog API on a schedule. It is configured in Rootly, with one optional annotation on your Backstage entities for owner mapping.
Rootly plugin for Backstage
The plugin is installed in your Backstage app and pushes entities to Rootly. Installation steps and the full list of supported annotations (includingrootly.com/service-id, rootly.com/team-slug, auto-import, and attribute pass-through annotations) are documented in the plugin README:
https://github.com/rootlyhq/backstage-plugin
Built-in Backstage integration
The built-in integration pulls entities from your Backstage catalog API and syncs them into Rootly. To set it up:- In Rootly, go to Catalogs and click Sync from Backstage.
- Enter your Backstage API URL, for example
https://backstage.myserver.com. - Enter a Backstage static authentication token — a service-to-service static token from your Backstage instance.
- Under Kinds to import, choose which Backstage kinds to pull, for example
Component,Group,System,API. Leave it blank to import all kinds. - Optionally set Filter entities to import — a Backstage catalog API query string to scope the import.
- Click Sync from Backstage.
What the sync creates
Imported entities are grouped into Rootly Catalogs by their Backstage kind and type. For example,Component entities with spec.type: service land in a catalog named “Service”, and Group entities land in a “Group” catalog.
Backstage relations such as Owner, System, dependsOn, and providesApis are stored as references between catalog entities. A reference only resolves if the entity it points to is also imported. If your components’ owners show up blank, add Group to the entity kinds you import.
Component entities with spec.type: service can also sync into Rootly’s built-in Services catalog, so they can be used directly in escalation paths and workflows. Services are matched by name, so existing Rootly services are linked rather than duplicated.
Syncing into the built-in Services catalog is enabled per organization. If your components only appear in a custom catalog and not under Services, contact support to turn it on.
What syncs onto a service
For each Backstage component synced as a service, the integration maps:- Name and description from the entity’s metadata.
- Owning team, resolved in this order:
- A
rootly.com/team-slugannotation on the component, matched against a Rootly team’s slug. - The entity’s
spec.ownerreference, matched against a Rootly team that has the corresponding Backstage ID set.
- A
Map owners with the team-slug annotation
The built-in integration reads one annotation from your Backstage entities:rootly.com/team-slug. Add it to a component to link the synced service to a Rootly team:
The other
rootly.com/... annotations documented in the plugin README, including the service-attr-... attribute pass-through annotations, apply only to the Rootly plugin for Backstage. The built-in integration ignores them.Scope the import with filters
The entity filter uses Backstage’s catalog API filter syntax: conditions inside onefilter parameter are combined with AND, and separate filter parameters are combined with OR. For example, to import production service components and all groups:
Troubleshooting
Owner or System is blank on imported entities
Owner or System is blank on imported entities
The referenced entity was not imported, so the reference has nothing to resolve to. Add the referenced kind (usually
Group or System) to the entity kinds you import, and make sure your filter doesn’t exclude it, then re-sync.Annotations on my components are being ignored
Annotations on my components are being ignored
The built-in integration only reads
rootly.com/team-slug. The other annotations in the plugin README, including service-attr-..., only work with the Rootly plugin for Backstage. Set those fields in the Rootly UI or via the API instead.Services appear in a custom catalog instead of the built-in Services catalog
Services appear in a custom catalog instead of the built-in Services catalog
Syncing components into the built-in Services catalog is enabled per organization. Contact support to enable it, then re-sync. Existing services are matched by name, so nothing gets duplicated.
A service is "Owned by" a team in the catalog but has no owning team
A service is "Owned by" a team in the catalog but has no owning team
The catalog entity’s Owner reference and the service’s owning team are set separately. The owning team on a service requires the
rootly.com/team-slug annotation or a spec.owner reference that matches a Rootly team’s Backstage ID.