diff --git a/com.unity.netcode.gameobjects/Documentation~/TableOfContents.md b/com.unity.netcode.gameobjects/Documentation~/TableOfContents.md
index e78e7192f6..45da3a8740 100644
--- a/com.unity.netcode.gameobjects/Documentation~/TableOfContents.md
+++ b/com.unity.netcode.gameobjects/Documentation~/TableOfContents.md
@@ -18,6 +18,7 @@
* [Connection approval](basics/connection-approval.md)
* [Max players](basics/maxnumberplayers.md)
* [Transports](advanced-topics/transports.md)
+ * [Single player sessions](advanced-topics/singleplayer.md)
* [Unity Relay](relay/relay.md)
* [Command-line arguments](command-line-arguments.md)
* [Network components](network-components.md)
diff --git a/com.unity.netcode.gameobjects/Documentation~/advanced-topics/singleplayer.md b/com.unity.netcode.gameobjects/Documentation~/advanced-topics/singleplayer.md
new file mode 100644
index 0000000000..6d326df2ef
--- /dev/null
+++ b/com.unity.netcode.gameobjects/Documentation~/advanced-topics/singleplayer.md
@@ -0,0 +1,71 @@
+# Single player sessions
+
+Netcode for GameObjects provides a [SinglePlayerTransport](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@2.13/api/Unity.Netcode.Transports.SinglePlayer.SinglePlayerTransport.html) which derives from [NetworkTransport](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@2.13/api/Unity.Netcode.NetworkTransport.html).
+
+This provides the ability to run a hosted session using the single player transport without having to modify your primary netcode script.
+
+## Adding the single player transport
+
+- Add the `SinglePlayerTransport` to your NetworkManager.
+- You can create a custom `MonoBehaviour` component to handle your connection flow or you can derive from `NetworkManager` and add additional methods/logic to handle starting a single player session or multiplayer session.
+ - When starting a single player session, prior to starting the NetworkManager as a host (_required_), you will want to assign the `SinglePlayerTransport` to the `NetworkManager.NetworkConfig.NetworkTransport`.
+ - When starting a multiplayer session, prior to starting the NetworkManager, you will want to assign the `UnityTransport` (_or any other `NetworkTransport` derived class that you might use for multiplayer sessions_) to the `NetworkManager.NetworkConfig.NetworkTransport`.
+
+## Example script
+
+Below is an example script that derives from NetworkManager to provide a single method to start a single or multi player session:
+
+```csharp
+using Unity.Netcode;
+using Unity.Netcode.Transports.SinglePlayer;
+using Unity.Netcode.Transports.UTP;
+
+///
+/// Example of how to start a single player or multiplayer session.
+///
+public class ExtendedNetworkManager : NetworkManager
+{
+ public enum StartType
+ {
+ SinglePlayer,
+ Client,
+ Host,
+ Server
+ }
+
+ private UnityTransport m_UnityTransport;
+ private SinglePlayerTransport m_SinglePlayerTransport;
+
+ private void Awake()
+ {
+ m_UnityTransport = GetComponent();
+ m_SinglePlayerTransport = GetComponent();
+ }
+
+ public bool StartSession(StartType startType)
+ {
+ var startStatus = false;
+ NetworkConfig.NetworkTransport = startType == StartType.SinglePlayer ? m_SinglePlayerTransport : m_UnityTransport;
+ switch (startType)
+ {
+ case StartType.Host:
+ case StartType.SinglePlayer:
+ {
+ startStatus = StartHost();
+ break;
+ }
+ case StartType.Server:
+ {
+ startStatus = StartServer();
+ break;
+ }
+ case StartType.Client:
+ {
+ startStatus = StartClient();
+ break;
+ }
+ }
+ return startStatus;
+ }
+}
+```