Reducing DNS TTL does not take effect immediately
Before moving an IP, the TTL went from 3600 to 60. After the switch, half the users still hit the old address for nearly an hour.
Changing the TTL is itself subject to the old TTL. Cached records keep their original expiry, so lowering it does not update anything already cached.
The order is: lower the TTL a day ahead, wait for old caches to expire, then switch, then raise it back. And remember dig queries a resolver by default; dig @8.8.8.8 against dig @<authoritative ns> tells you instantly whether you are looking at a cache or the zone.