Every growing team eventually finds an old CNAME nobody wants to touch.
It looks harmless:
spring-sale.example.com CNAME old-campaign-host.example.net
But nobody knows whether it is still used. It might be in an old email. It might be in a partner deck. It might be printed on a brochure. It might be bookmarked by customers. It might still receive traffic from a creator post.
So the record stays.
Then another one stays. Then another. Eventually the DNS zone becomes a museum of old business decisions.
Quick Answer
Do not delete an old CNAME or campaign subdomain until you know its owner, current target, last seen traffic, business purpose, replacement route, and rollback plan. If you cannot answer those questions, move it into a managed retirement workflow instead of deleting it blindly.
The Deletion Checklist
| Check | Pass condition |
|---|---|
| Owner known | A team or person can approve deletion |
| Current target known | You know where the entry points today |
| Last seen checked | You reviewed recent access data |
| Business purpose known | You know why it existed |
| Replacement exists | Users have a better route if needed |
| Status set | Active, paused, retired, or unknown |
| Rollback plan ready | You know how to restore service |
Why Old CNAMEs Are Hard To Remove
DNS records do not explain themselves.
They usually do not tell you:
- who created them
- why they were created
- what campaign they supported
- whether the campaign ended
- whether a partner still uses them
- whether traffic is still arriving
- who is allowed to delete them
That is why old entries survive. Not because anyone loves clutter, but because deletion feels risky.
The Hidden Cost Of Keeping Everything
Leaving every old entry alive also has a cost.
It can create:
- stale customer journeys
- outdated campaign pages
- confusing analytics
- unowned public entry points
- operational uncertainty
- cleanup debt
- security review questions
The right answer is not “delete everything.” The right answer is “make the lifecycle visible.”
How To Classify An Old Entry
Use four states.
Active
The entry is intentionally used and has an owner.
Watch
The entry may still be receiving traffic, but the owner or purpose is unclear.
Retire
The entry should no longer be promoted, but may redirect to a safer replacement.
Delete
The entry has no meaningful traffic, no business dependency, and a rollback plan exists.
The 30-Day Retirement Pattern
For many old entries, deletion should not be instant.
Use a staged process:
- Mark the entry as retirement candidate.
- Record the current target.
- Check access statistics.
- Ask likely owners.
- Redirect to a safer destination if needed.
- Watch for 30 days.
- Delete or archive after no meaningful traffic.
This reduces fear because the team can see what is happening.
What To Record Before Deleting
Before removing an entry, save:
- hostname
- DNS record type
- old target
- final redirect target
- owner
- last seen time
- access volume
- reason for deletion
- approver
- rollback instructions
This may feel like extra work, but it is much cheaper than a mystery outage.
When Not To Delete Yet
Delay deletion if:
- traffic still exists
- the owner is unknown
- the target belongs to a partner
- the hostname appears in docs or emails
- it is tied to customer onboarding
- it appears in paid ads or QR codes
- the rollback plan is unclear
Move it to watch or retire instead.
FAQ
Is an old CNAME automatically dangerous?
Not automatically. The risk comes from not knowing what it points to, who owns it, whether it is still used, and whether the target can change outside your control.
Can I just delete records with no traffic?
Usually that is safer, but define the observation window first. One week may miss monthly reports, quarterly customer workflows, or old partner assets.
Should DNS be the source of truth?
DNS shows technical records. It rarely shows business context. For campaign, partner, tenant, and internal entries, you usually need an operational layer above DNS.
What is the first cleanup step?
Build an inventory. List every hostname, target, owner, status, and last seen time. Do not start with deletion.