GetPropertyChangeSignal not working

It never prints moved even when I push it. I periodically printed the position and it was changing there, just would never fire the Position property changed event for some reason…

local puzzle = workspace.BeamPuzzle

local positions = {}

for _, v in pairs(puzzle:GetChildren()) do
	if v.Name == "LaserTransmitter" then
		v.Base:GetPropertyChangedSignal("Position"):Connect(function()
			print("moved")
		end)
	end
end

You can’t listen for changes in physics dependent properties (properties handled by the internal physics engine), i.e; ‘Position’, ‘Orientation’, ‘CFrame’ etc, use an event loop to determine changes instead, i.e; ‘RenderStepped’, ‘Stepped’ or ‘Heartbeat’.

local Position = Vector3.new(0, 0, 0)

local function OnRenderStep()
	if Position ~= Part.Position then
		print("Property changed!")
		Position = Part.Position
	end
end