In this post:
- A gap in Umbraco’s media workflow
- Why “upload now, link later” isn’t always safe
- How the new Scheduled Media Replacement feature in Friendly Media solves it
If you’ve worked with Umbraco for any length of time, you’ve probably run into this situation:
You’ve published a document - maybe a PDF, a brochure, or an event guide - and you know it needs to be updated at a specific time.
Not “roughly tomorrow morning", or “whenever someone remembers”, but at a specific date and time.
And importantly: you don’t want to break anything, and you don’t want editors scrambling at the last minute
The problem
Out of the box, Umbraco handles scheduled publishing really well for content.
But media is different.
If you want to update a file at a specific time, your options are usually:
- manually replace it at the right moment
- upload a new file and update references
- try to coordinate timing across editors
None of these are ideal - they introduce risk:
- someone forgets
- the wrong file gets uploaded
- links break or drift
- content is temporarily out of sync
There’s also a more subtle issue with the common workaround of uploading a file in advance and only updating the link later.
Once a file exists at a public URL, it’s technically accessible - even if it isn’t linked anywhere yet.
We saw a high-profile example of this in the UK, where a government budget document was briefly exposed early after its URL was guessed based on a previous pattern.
No link had been published, but the file was there - and that was enough.
That’s why simply “uploading it early and linking it later” isn’t always as safe as it sounds.
A simple idea
What if you could:
- upload a replacement file in advance
- choose a publish date and time
- let Umbraco handle the swap automatically
- keep working with the same media item
That’s the idea behind Scheduled Media Replacement, now available in our Friendly Media package.
How it works
From the editor’s point of view, it’s intentionally simple:
- Open a media item
- Go to the Friendly Media content app
- Select a replacement file
- Choose a publish date and time
- Click Schedule Replacement
Behind the scenes:
- the replacement file is stored privately
- a background job checks for due updates
- when the scheduled time arrives, the file is swapped in place
The media item stays the same - only the file content changes.
What happens to media URLs?
This is where things get a little more nuanced (and worth understanding).
Standard Umbraco media URLs
If the replacement file has a different filename, the resulting Umbraco media URL will also change.
However:
- Internal links created via the media picker use UDIs
- These resolve dynamically to the correct media item
- So those links continue to work even if the underlying URL changes
In other words, internal CMS-managed links remain safe.
Friendly Media URLs
If you’re using Friendly Media:
- Auto-generated and custom Friendly URLs remain completely stable
- They are tied to the media item, not the file name
So from an external point of view (emails, bookmarks, SEO, etc.), links stay consistent even when the file is replaced.
Visibility for editors
Scheduled replacements aren’t hidden away.
Friendly Media surfaces them clearly:
- A warning is shown on the media item when a replacement is scheduled
- The dashboard includes a “Scheduled File Pending” badge
- You can filter to quickly find all media with upcoming changes
A deliberate limitation
Right now, this feature focuses on replacing files on existing media items.
Scheduling the creation and publishing of entirely new media items is a more complex problem.
It’s something I may explore in the future — but for now, the goal was to solve the this common use case well.
Final thoughts
This is one of those features that feels small, but makes a big difference to day-to-day content workflows.
If you’ve ever had to stay late to upload a file at a specific time, or set a reminder so you don’t forget this should make life a little easier.
Find out more about Friendly Media here
If you’ve run into similar challenges around media workflows in Umbraco, I’d be really interested to hear how you’ve handled them.