When having a game out in the field two reasons for invalidating events will happen naturally without this being the developers fault. Duplicate events and event outside of the valid data boundaries. Hence why we allow you to filter these out of the results in the event browser.
Duplicate events occur when an event is recorded once (adding the event to the eventList to be sent) but upon sending the SDK does not receive a 204 response in time but the sending actually succeeded. This happen if the internet connection drops after sending the event but before receiving the confirmation back from our server. This is not a problem when using a recent SDK since we now add a unique ID to each event and will invalidate the event the second time it is sent.
Events being outside the valid boundaries are events with an eventTimestamp too far in the past or future, when you set the date on your device to 2001 it will use this value for the eventTimestamp which obviously does not make sense. Therefore we invalidate these events, the eventTimestamp will provide mainly precision over accuracy but when they are too inaccurate it will mess up things as well. Therefore we only accept events that are less than 48 hours in the future and less than 32 days in the past.