Associate multiple sites to a Hubsite using PowerShell


Hubsites have been announced at Microsoft Ignite in 2017, and provide a way to display content from multiple sites (once they’re connected) with same branding, and also a search functionality across all connected sites.

In today’s post, we’ll see how to use PowerShell PnP (Patterns & Practices) to associate teams and/or communication sites to a hubsite. You can have a total of 100 hubsites per tenant, and there’s no maximum in the number of sites that can be connected.

June, 5th 2019: As announced at SPC19, the limit for hubsites per tenant is now 2000 and rolling out soon!

Create and register a hubsite

Microsoft recommends a modern Team Site or Communication site as a hubsite (template) instead of a “classic” team site. That is, if you want to avoid a poor experience… First, create the site using the New-PnPSite, and then convert it as a hubsite using the Register-PnPHubSite cmdlet.

In this scenario, I have created a new site under the URL https://<TENANT_NAME> using the Communication site template.

Now that the site is accessible, we need to register it (convert it into a hubsite). This is pretty straight forward. Run Register-PnPHubsite -Site https://<TENANT_NAME> and it’s now converted.

Set permissions for specific users

You can set permissions for some users to be the ONLY ONES who can associate sites with this hubsite. This is optional, but recommended. Use the Grant-PnPHubSiteRights command to do so. Then you can check permissions have been applied correctly by using Get-PnPHubsite -Identity <site_url> | select Permissions

Associate sites with the Hubsite

Now’s the time to associate our teams and/or communication sites to the newly converted hubsite.

Let’s imagine that we have dozens of sites we wish to link, you could use a csv file for example. Here I’ve got 3 sites, but I’m sure you got the picture…


$Sites = Import-Csv -Path "C:\users\$env:USERNAME\Desktop\SitesToAssociate.csv"
$myHubsite = "https://<TENANT_NAME>"

foreach ($site in $Sites) {
    Add-PnPHubSiteAssociation -Site $site.SiteUrl -HubSite $myHubsite

Now to check what sites have been associated to a Hubsite, run the Get-PnPHubsiteAssociation. Wait… 🤔 Can’t find this one…. Indeed, at this point in time (Nov. 2018), there’s no PnP or SPO cmdlets for checking which sites are associated with a Hubsite.

However, if you have the modern SPO admin center, you can check the “Hubsite association” column, it will tell you if your site is associated or not, and with which hubsite.