Roster rows don't have a "pending" status, and the Rostering page (Operations → Rostering) doesn't have a sync progress bar. When the roster looks pending or stuck, it's almost always one of the indicators below, or one of a few everyday reasons the grid hasn't caught up yet.
The percentage at the top: % Rostered Online
The % Rostered Online tile is the only percentage on the page. It shows the share of drivers on today's roster who are online in the driver app right now. It isn't a loading or sync bar. Sitting at 95% just means one driver in twenty isn't online yet. It rises as drivers sign in, and it isn't shown for past days.
The Online Drivers tile next to it gives the same thing as a count. To see who's offline, check each driver's Status column, or go to Operations → Online Drivers.
"Waiting for Response" and the other confirmation tiles
If shift confirmations are running, you'll also see tiles counting each driver's confirmation status:
Confirmed: "This driver has confirmed their shift."
Did Not Confirm: "The driver did not confirm their shift."
Not Contacted: "We have not contacted this driver yet."
Waiting for Response: "This driver has not yet responded." After your scheduling cutoff, this tile reads No Response.
These show where each driver is in confirmation. A high count in Waiting for Response or Not Contacted doesn't mean the roster is stuck. The Shift Confirmations article explains the timing.
Why the grid can look out of date
The Rostering page picks up changes from the server about every 30 seconds. There are a few reasons it might not look up to date:
You have unsaved edits. While you have changes you haven't saved, the grid holds your version and stops taking in updates from the server. That way nothing you've typed gets overwritten. Save your edits and it catches up on the next refresh.
Auto-save shows "Unsaved", "Saving...", or "Save failed". "Save failed" means your last change didn't save. Try again. If someone else changed the same row, you'll see a message about it.
Cortex route data hasn't come in yet. With Sync Routes with Cortex on, route info from Cortex fills in the roster between 4 AM and 2 PM in your company's time zone, about every 15 minutes. A value you typed or uploaded yourself is never overwritten by the sync.
Tomorrow's schedule hasn't been copied over. Sync from Schedule fills the roster in from that day's published shifts. Shifts that haven't been published aren't included. It's greyed out while you have unsaved changes: "Save your changes first — syncing refreshes the grid from the server."
What to do
Save any edits you have open, and wait about 30 seconds for the grid to refresh. Reloading the page also works.
If shifts from your schedule are missing, press Sync from Schedule. It never overwrites values you entered by hand, uploaded, or synced from Cortex, and it doesn't remove rows.
If the day's roster isn't on file at all, you'll see "We don't have today's roster on file yet". Use Template and upload to build it from a file.
If Cortex route info still hasn't shown up after about 15 minutes during the morning window, contact VoiceERP support. Tell them the date and which drivers are missing information.