Redirect Manager
Sitecore Marketplace app for Redirect Maps — full-page workbench with regex authoring and a built-in proxy simulator, a context-panel quick-add, and a dashboard tile for recent activity.
What it does
Redirect Maps are how a Sitecore content team tracks every URL change a site has lived through: pages renamed for a relaunch, campaign URLs retired, vanity slugs added for a product reveal. The data lives in Sitecore as a tree of Redirect Map items, each carrying a pile of source-URL → target mappings with a per-row redirect type. Editing them in classic Content Editor is fast for a developer and miserable for anyone else.
Redirect Manager is a Sitecore Marketplace app that puts Redirect Maps where editors actually work. Three surfaces ship from one app installation:
- Full Page — the daily-driver workbench, split across two tabs.
Manage lists every redirect map in the tenant, opens a map into
a virtualized table that scales to thousands of rows, supports both
Pattern and Regex source modes with save-time validation, and
exposes a hero CTA that triggers a real publish to the live site.
Test simulates how the upstream Content SDK
RedirectsProxywould evaluate any URL against the loaded redirect inventory — structured-card trace per pipeline stage so a content-ops person can debug "why didn't my redirect fire?" without leaving the app. - Page Builder Context Panel — a focused inline form for the most common ask: "I'm editing this page, I just renamed it, add a redirect for the old URL." One click, one form, one row added to whichever map the user selects.
- Dashboard Widget — at-a-glance health and recent activity. A content-ops manager glances at the dashboard and sees whether any map needs attention before they even open the editor.
All three talk to the same SitecoreAI Authoring GraphQL surface. The product is a client-side iframe app — no backend, no token cache, no persisted state outside the editor.
from one installation
(foundation · redesign · publish · regex+Test · drift)
captured as ADRs
in the local simulator
How it actually works
Three SDK conventions did the heavy lifting once they were nailed down, and each one is reused across all three surfaces.
- Aliased
field(name:)accessors read named fields explicitly instead of paging the genericfields(...)connection. The workbench list-view payload that used to come back at ~4 KB per map now comes back in ~1 KB — ~75% smaller, and faster to render at the table scale Sitecore tenants reach. - The
UrlMappingURL-encoded contract. Sitecore stores the source/target pair list as a single string with=between source and target and&between rows, both URL-encoded. ADR-0008 pinned the parse-and-write contract before any UI touched it, so every surface reads and writes through one canonical path. - The Authoring write envelopes.
createItemdoes not accept anid— Sitecore mints the GUID.renameItemis a dedicated separate mutation; renaming is not a property update. Every response wraps under{ item { … } }.addItemVersionis the canonical version verb. Each of these is a small surprise that's faster to know than to re-discover.
The publish path is its own integration. It talks to the SitecoreAI
Publishing v1 API at the shared edge-platform.sitecorecloud.io host.
The Jobs API has an asymmetry worth knowing about: GET /jobs returns
a flat shape (options.xmc.{type, mode, locales}) while POST /jobs
needs the nested form (options.xmc.site.{mode}). Passing the flat
shape to POST crashes the model binder with a 500, not a 400. Trust
the spec; treat the listing response as informational.
The three surfaces
What shipped, in five acts
The product reached its current shape through five sequential PRDs
against a live tenant. Each one earned a /ship against real traffic
before the next one started.
The chapter worth naming
Between the foundation and the redesign, a fourth PRD was attempted —
PRD-001, multilingual maps with per-language overrides. The thesis was
reasonable: Redirect Map items carry per-language versions, so de
mappings can differ from en. The plan was credible. The architecture
was credible. The mocks were credible.
Two days into implementation, a real-tenant capture probe introspected the stock Redirect Map template's field definitions on the live tenant.
field sharing
field sharing
(Sitecore-prefixed)
only
UrlMapping — the field PRD-001's whole multilingual story depended on
— is SHARED. One value across all languages on the stock template.
No per-language override path that didn't involve replacing the
template, which would have orphaned every existing redirect map in
every customer tenant the app had ever been installed into.
PRD-001 was cancelled the same day. Two days spent. Two-to-four weeks of architecture, task breakdown, implementation, smoke, and retro not spent. The captured field-versioning matrix lives as a reference artefact for any future multilingual proposal.
That cancellation was the first time the agentic pipeline produced a red verdict at the spike phase — a moment worth its own essay, The Real-Tenant Probe.
The product itself proceeded straight from the foundation to PRD-002's visual redesign. With multilingual definitively off the table for the stock template, the next two PRDs landed on a foundation that was already proven against live traffic.
What you get if you install it
Redirects live where editing happens.
An editor never has to alt-tab from the page builder to a separate tool to add a redirect. The Context Panel form is right there; the workbench is two clicks away on the main nav.
Regex authoring with a built-in safety net.
The EditRowModal’s Regex mode catches malformed patterns at save time via new RegExp(source, flags) — no more publish-and-pray. Capture-group references in the destination are cross-checked against the source group count. The Test tab then dry-runs the regex against any URL, showing exactly which row would win.
Lists scale to thousands of rows.
The workbench uses virtualized lists for both the map index and the map editor, so a tenant with 10,000 redirect rows still scrolls at 60 fps.
Publish is one click — with honest job tracking.
Hero CTA triggers a real Sitecore site publish. The job is polled every 3 seconds until terminal state; localStorage persists the in-flight job so a tab refresh doesn’t lose it. The button locks while a job is running.
The simulator never quietly drifts.
The local RedirectsProxy port maintains 100% upstream-fixture parity at port time — and the on-demand "Check upstream" tells you the moment that contract breaks. A dev-time slash command in the repo re-ports the changes verbatim with a click-through review.
One install, three surfaces.
Full Page, Context Panel, and Dashboard Widget are all activated by a single Marketplace app registration. No second install, no second auth, no second sync.
No backend to maintain.
The whole product runs inside the Cloud Portal iframe, talking to Sitecore through the Authoring GraphQL surface. There is no server to operate, no token cache to rotate, no infra to bill.
Built end-to-end against a real tenant.
Every shipped release ended on a real-tenant smoke against production data, not a mock. Tranche 3 of the publish PRD alone reshaped scope before /ship on the back of two smoke findings.
Where it goes next
Two PRDs are in the queue.
Drift detection automation. The current "Check upstream" is
on-demand: an operator clicks, the app fetches, the banner appears
when SHAs differ. The next release adds a scheduled background check
(cron job against the GitHub commits API) and a PAT-based auth path
so a team sharing an egress IP can run more checks without hitting
the 60-req/hr/IP limit on unauthenticated calls. A small follow-on
also lands a gh pr create step inside the /sync-redirect-proxy
slash command so the verbatim re-port can ship without leaving
Claude Code.
Analytics. The dashboard widget currently shows recent activity; the analytics PRD wires real per-redirect hit counts and last-served timestamps so the team can see which redirects are still load-bearing and which can be retired.
Both will ship through the same agentic pipeline that delivered the foundation, the redesign, the publish, regex + Test tab, and drift detection — and both will start with a two-day real-tenant probe against their single load-bearing assumption before deep planning. That move is now standard.
Related case studies