If you're working in Unity and targeting Android and iOS, you can also look into Firebase. You can store the user stats in Real-Time Database, which has pretty nice integration with Unity.
I don't have a good sample for storing consumables and progress, but there is an open-source leaderboard sample that will get you started with the basics and give you a good idea of what the shape of the code will look like without committing (most of the database related code is in this source file).
I'd suggest a structure that looks something like:
user_list:
You can keep it safe with with a rules.json file that says something like:
{
"rules": {
"Users": {
"$uid": {
".read": "auth != null && $uid == auth.uid",
".write": "auth != null && $uid == auth.uid"
}
}
}
}
You will have to use Firebase Authentication to really take advantage of the rules logic, but it should support most auth providers you want (including your existing work on Google Play Games as well as iOS's Game Center). You can tie into your existing work with Google Play Games sign on or use one of a bunch of different auth providers.
For my own flow, I like to tie consumable updates (coins and gems probably in your case) directly into update listeners to just let RTDB's caching system run on its own using ValueChanged listeners. Updating the database is best done with the RunTransaction call, which will help you deal with corner cases whilst offline or if the user is switching between devices.