Imagine getting an email with a direct link to review the version history of an item or file. Or being able to have a single click from a list view to an item’s version history without going through menus.
The link itself is easy to structure manually. You could also structure it automatically using SharePoint Designer workflows or Power Automate flows.
No matter your method, you’ll need to be able to get two pieces of information: the list GUID and the item/file ID.
Getting required info
Get the list GUID
The list GUID is easy to get. Just go to the list –> List Settings and copy everything in the URL after List=.

Example:
http://SiteURL/_layouts/15/listedit.aspx?List=%7BAC2DE34F%5GH6IJ%KL789M%N01OP2%QR3STUV4WX4YZ56%7D
Get the item/file ID
In SharePoint Designer or Power Automate, you can just use the ID field provided as a lookup option. This way it’s always dynamic.
But to get the ID manually without workflow, view/open the item and check the end of the URL: for the number following “ID=”. Example:
http://SiteURL/ListName/DispForm.aspx?ID=532
For document libraries, or if you’re using modal dialogs (pop-ups), your URL won’t show ID. In this case, you can add the default ID column to your list view to get it.

Tip: For list items (not documents) you can also hover your pointer over the link to the item to see the URL preview at the bottom of your browser before clicking it.
Building the link
Manually construct it
The basic structure, no matter which method you use, is as follows:
https://SiteURL/_layouts/15/Versions.aspx?list=GUID&ID=ID
Just replace the SiteURL, list GUID, and item/file ID.
Tip: The easiest way may be to copy the entire URL when getting the list GUID, change listedit to versions, and add &ID=ID to the end.
Use SharePoint Designer
In SharePoint Designer, you can use String Builder when creating hyperlinks in emails, or when populating fields (such as a hyperlink column).

Use Power Automate
In Power Automate, you can initialize a variable to structure the version history URL so that you can use it repeatedly in different steps/conditions without having to structure it every time. We do this similarly to how we did for SharePoint Designer above. Type almost the entire URL which doesn’t change, then use the dynamic content panel to add ID to the end.

Then you can send an email and use a little code to hyperlink text with the variable used as the URL. If you’re not comfortable with code, you can just put the entire URL in the body of the message. The following shows an Outlook step in “Code View.”


Alternative ideas
Calculated column
Note: You could use a calculated column for this, but the [ID] field needed will only populate once, then remove itself on the next property edit. The only way around this is creating another column like ID1 as single line of text and using a workflow (SPD or Power Automate) to set that field to the ID number. Then you can use [ID1] in your calculated column with a formula such as this:
="https://site/_layouts/15/Versions.aspx?list=GUID&ID="&[ID1]
Hyperlink column
Consider using SharePoint Designer or Power Automate to set a “hyperlink” type field to the URL. This could then be used in a list view to have a one-click link to version history.
You can also add &IsDlg=1 to the Url if you don’t want to see the SharePoint Shell
AMAZING!!!! It worked perfectly. Thank you.
A slightly easier approach: use the
FileName
query parameter in the site’s context. For example, suppose:Site: “https://myTennant.sharepoint.com/teams/myTeam/”
Library name: “Instructions”
Document path: “Instructions/subfolder/My cool document.docx”
Then an equivalent URL to the one you had above would be: “https://myTennant.sharepoint.com/teams/myTeam/_layouts/15/Versions.aspx?FileName=Instructions/subfolder/My cool document.docx”
This is easier to get without digging around for IDs. You can actually get it pretty easily with simple string manipulation directly in Power Automate by grabbing the first part from the
Link
attribute, and then adding “_layouts/15/Versions.aspx?FileName=”, followed by theFullPath
attribute.That makes the whole value:
concat(substring(triggerOutputs()?[‘body/{Link}’],0,indexOf(triggerOutputs()?[‘body/{Link}’],triggerOutputs()?[‘body/{Path}’])),”_layouts/15/Versions.aspx?FileName=”,triggerOutputs()?[‘body/{FullPath}’])
i like this approach, what is the syntax for a list version history?
Hello,
How it is possible to contact you ? i need some informations