Freemium with multiple options and FastSpring

Hello,

I want to release an application that has some free functionality and multiple options that need to be purchased.Of course it should be possible to buy modules at different times, whenever the user needs them.

Now I understand that I can add features to a product key however need some deeper understanding how to do the integration with FastSpring. There I can configure "product choices" which I assume would relate to features in TurboActivate.

Since the user's key to TurboActivate is the product key and all additional features should be added to a single key - how do I setup FastSpring to1. offer only the modules/product choices the user hasn't bought yet?2. transfer the existing product key (if the user bought before) to FastSpring in order to add features to it?

While I have the feeling this should be possible there are some missing links and I don't know how much of this setup is a special case or just a small extension to standard processes.

Well, as far as integrating with LimeLM is concerned, it sounds like you'll want to use custom license fields. For each module you can create a separate custom license field. And when you generate product keys you can set different values for the fields.

And in your app you'll use GetFeatureValue() to get the value for the field to see if the customer has purchased the module or not.

Our FastSpring example code actually shows how to generate product keys and set the custom license fields at the same time.

Is that what you're asking?

The technical part of TurboActivate is not the problem, it's more about the FastSpring integration and handling of product keys.

Let's assume this scenario:

* A user buys a module and gets a product key sent that has the custom license field associated with that module activated.* The same user wants to order a second module

The question is: How can FastSpring know in the second step that the user already has a product key? He shouldn't get a second product key but just a second license field activated for his first product key.

Since FastSpring probably can't match the user in the second order to the one in the first one I assume that the product key of the first order has to be passed to FastSpring in the second order. This would allow to run the code that adds a license field instead of issuing a new product key.

You have a couple of options. You can use the email as the unique identifier, search the product keys using that email, and if a key is found then set the field for that key. If an existing key is not found, then generate a new key and set the field.

Or you can explicitly prompt for a product key from the user.

Thanks, this makes sense. The email is a good unique identifier the user passes to FastSpring anyhow.