Basically just want to show a pop-up GUI that upsells a one-time offer for all players.
I only want this to show once in their lifetime of playing the game however - where should I start?
To make a gui visible, set its Visible property to true. Then wait the amount of time you want, then destroy it. Datastore a value which shows its been offered.
You Could :Destroy() it, or make a bool value in your gui ,and in your script check if it is true, if not , show the gui and change then bool value to true