My other option is to save a uuid on the browser's local storage to track the user. This wont work if the user erased their history.
I'd like to pause and ask the community - Is there a fundamentally better way to do an x-day free trial?
Is your goal to have low friction trials without abuse? A admirable goal, but why no sign ups?
I think I would want prospective customers to sign up. Someone who isn’t even enthusiastic enough about my product to give an email address probably won’t want to convert anyway.
Those “annoying” marketing emails you get when you sign up for free trials? They work. That’s what you should be doing.
If you have people sign up you can also contact them for feedback. Why did they decide to convert to paid? Why did they decide against your solution? If you can get feedback like that from real prospects, that’s gold. I can’t willfully giving up the chance to receive that feedback by keeping my trial users anonymous.
At the same time you might get more false positives the harder you try, e.g. IP addresses can be legitimately shared between users while the ones trying to get around your limits know how to change theirs
I think if you tie this to browser state it is too easy to keep renewing.
Even with emails it is easy but trickier for most people unless they own a domain or use plus addresses.