CollisionGroupId not valid property name. (It is)

This code does not work. Clearly you can see what it is supposed to do.

character.ChildAdded:Connect(function(child) -- when character adds a part
	child:GetPropertyChangedSignal("CollisionGroupId"):Connect(function(x)
		warn("a CG Id changed!!")
	end)
end)

How can I make code that does work do the intended?

You are assuming every child that is added is a part. Humanoids and scripts and a few more things get added which in fact are not parts.

character.ChildAdded:Connect(function(child) -- when character adds a part
    if not child:IsA("BasePart") then
        return
    end

	child:GetPropertyChangedSignal("CollisionGroupId"):Connect(function(x)
		warn("a CG Id changed!!")
	end)
end)