Replicated class is still null when trying to set up UI that uses it's data

I’m making a hockey game and I have a class PeriodManager that tracks the time and what period it is. This class is Replicated to clients.

I also have a UI widget to display that info. Basically, on Tick, it updates a string to display the time, and on an event, it updates another string that shows the period.

This all works fine single player and on the server, but I can’t find a good place to connect the replicated PeriodManager on the client to the UI without causing problems.

I have a UserWidget in the PlayerController that I tell to update it’s display in Event Construct, in blueprint, so it will start with the correct information (most importantly the period, since the time will get updated constantly anyway). This pulls the information from PeriodManager.

My problem is that PeriodManager is still null on clients no matter where I try to call CreateWidget<>() in C++. I’ve tried it in the PlayerController’s BeginPlay(), I’ve tried using an RPC function called from the GameMode’s PostLogin(). The time remaining gets updated in Tick, so it sort of works, but the period doesn’t get set since it only gets updated (theoretically) on connect and when the period changes. I could force the period to work if I updated it in Tick also, but that seems wasteful and I’d still have a bunch of errors in the message log.

If there’s a callback or event when the first round of replication upon connecting to a server is done, then I could use that, but I haven’t been able to find anything like that. If there’s some other way of going about this, I’d also be open to that. Anybody have any good ideas?