player.CharacterAdded:connect(function(character)
local goto = checkpoints[checkpointStat.Value]
if goto then
repeat wait() until character.Parent
character.HumanoidRootPart.CFrame = CFrame.new(goto.Position)
print("successful")
else
print("Checkpoint " .. checkpointStat.Value .. " not found")
end
end)
end)
This is part of a checkpoint script I have. It always prints successful but it never teleports the player.

3 comments
i think its because that the teleport is successful but roblox then teleports the character to spawn after
connect is deprecated, use Connect
I always have this problem and managed to fix it by add a Heartbeat Wait after the character added. It usually fixes it.