Serg found this - the ESP8266 library (I think it's the espressif toolkit) is dropping some UDP messages at first connection over wifi.
They seem to have a startup buffer length of 3 - if you send any more than that during startup first messages get dropped and only the last 3 are sent.
It's discussed at:
https://github.com/esp8266/Arduino/issues/3481 - the last message there describes the fix. It's a problem in ESP8266 2.4.2 (our current version) and 2.6.3 (the one I'm trying now to see if we should upgrade). It looks like they tried to fix it in 2.5 but as a result caused the first UDP packet to always be dropped (which is why I stayed on 2.4.2).
The devices that are affected are battery type devices that wakeup and notify of status right away if they send too many UDP (notifyListener) messages quickly.
It doesn't affect non-battery devices since they tend to stay connected and it's only immediately after the initial connection.
In the existing devices it's not a problem because they don't send that many messages at startup, but if you build a custom version with more measurements you may lose the first that try to report.
The workaround is to put a delay(250) or so after the first UDP message send (or before the 4th).
You might notice this if you enable OUTPUTIP for battery devices - the first boot up report messages may be lost - it doesn't affect operation but can look weird.
MppGateway will capture and forward OUTPUTIP in the next version, there's something unique about the gateway connection (maybe it's faster?) that seems to make the startup loss more likely/obvious.