Your phone, FlightAware, and ForeFlight should not normally match what your altimeter says. Your altimeter is MSL when you have the correct altimeter setting entered. FlightAware is pressure altitude, which is standard pressure with the altimeter set to 29.92. Depending on if you have a device such as Sentry that provides a pressure altitude based on the cabin pressure, ForeFlight will show a Baro Altitude that may match what your ship's altimeter reads, but the cabin altitude is often off the true pressure altitude by 100 to 200 feet, since it is not tied into the aircraft static source. If you don't have a pressure altitude source, ForeFlight will show GPS altitude which can be expected to roughly match what your ship's altimeter shows when temperatures are standard, but when not standard they can easily differ by 500 feet or more.
As others have indicated, your transponder and your ADS-B Out typically use a blind encoder to determine the pressure altitude and transmit that value to the ATC secondary radar or ADS-B ground station. Many blind encoders are only precise to 100 feet. ATC software converts the pressure altitude to an MSL altitude for display to the controller.