Discrepancies between Gravity reporting and Google Analytics reports are normal because of differences in reporting methodologies. That said, both should follow similar trends.
Let's explore some of the reasons for those discrepancies -
Google Analytics site implementation
A common reason is not implementing Google Analytics properly on all article pages across the site, especially on newly added sections, leading to some of the Gravity traffic not getting tracked by Google Analytics.
Partial Page Load
Visitors may navigate away from the site before the page is fully loaded and Google Analytics tracking code executes.
User browser preferences
Google Analytics Sessions vs. Gravity Clicks
There is a distinction between Clicks recorded by Gravity and Visits/Sessions recorded by Google Analytics. While Gravity records a Click anytime a user clicks a content recommendation on a publisher site, Google Analytics records a single Session/Visit for all user interactions within a given time frame (which expires after 30 minutes of inactivity). For example, if a user reached the marketer's site through Gravity twice within that time frame, he or she will be recorded as just one Session/Visit.
Google Analytics sampling preferences
Unlike Gravity, Google Analytics data is generally based on a sampling of all visits to the site, rather than the whole incoming traffic. Google Analytics uses sampling in order to generate reports on very large data sets (over 1m visits).
Time Zone differences
Gravity reporting is currently still based on US Pacific Standard Time (UTC -8 hours) for all global markets. If Google Analytics is using a different time zone, the daily reporting might have some differences.
UTM tag implementation
Marketers can get a more accurate view of their Gravity traffic by implementing a UTM tag for their Gravity campaigns. They can then see their campaign-specific traffic on Google Analytics under "Campaigns" rather than under the more limited "All traffic sources" (showing traffic from rma-api.gravity.com).