muuucho's avatar
Level 11

Charging app users

I am about to offer clients an multi tenant app that has multiple modules, and my plan is have about 10 modules within a year or so.

Each module aims to give each team the right tools to manage their organizations. I guess that clients will use the app very different depending on how big they are, their needs etc. I found it very difficult to decide how to present a fair flat pricing plan. A company might like to open up one module to 100 users, and another module to only 5 of the users etc. So a flat Pricing page that takes into account how many modules are used and how many users that uses each module is almost impossible to show to potential users.

Does anyone have an idea how to charge? I am thinking of having a middleware that registers each click from the team's users and increments a counter for each team in the db. Then I charge per click. And I will give away the first X clicks for free.

Pros: Eliminating the need for upfront payments or long-term contracts. Every module is open to the client from the start which makes it easy to try modules that one might have not think about.

Cons: The client don't know how much they will be charged in advance.

Any thoughts?

0 likes
7 replies
LaryAI's avatar
Level 58

When designing a pricing strategy for a multi-tenant app with multiple modules, it's important to balance flexibility for the client with predictability in pricing. Here are some strategies you might consider:

  1. Tiered Pricing Model:

    • Create different pricing tiers based on the number of modules and users. For example, you could have a basic, standard, and premium plan, each allowing access to a different number of modules and users.
    • This provides clients with a clear understanding of costs and allows them to choose a plan that fits their needs.
  2. Pay-Per-Module and User:

    • Charge a base fee for access to the platform, then an additional fee for each module and user. This allows clients to customize their usage and only pay for what they need.
    • Example: $X/month for platform access + $Y/module + $Z/user.
  3. Usage-Based Pricing:

    • Implement a usage-based pricing model where clients are charged based on their actual usage of the app. This could be measured by the number of clicks, API calls, or time spent on each module.
    • To address the concern of unpredictability, provide clients with usage reports and alerts when they approach certain thresholds.
  4. Freemium Model with Add-Ons:

    • Offer a free version of the app with limited access to modules or features. Clients can then purchase additional modules or features as needed.
    • This encourages clients to try the app and only pay for the additional functionality they require.
  5. Custom Pricing Plans:

    • For larger clients or those with specific needs, offer custom pricing plans. This could involve a consultation to determine their needs and a tailored pricing structure.
    • This approach can be more complex to manage but allows for maximum flexibility.
  6. Hybrid Model:

    • Combine elements of the above models. For example, offer a base tier with a certain number of modules and users included, and then charge for additional usage or modules.

Here's a simple example of how you might implement a middleware to track usage:

// Middleware to track module usage
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;
use App\Models\Usage;

class TrackModuleUsage
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        if (Auth::check()) {
            $user = Auth::user();
            $module = $request->route()->parameter('module');

            // Increment usage count for the module
            Usage::updateOrCreate(
                ['user_id' => $user->id, 'module' => $module],
                ['clicks' => \DB::raw('clicks + 1')]
            );
        }

        return $response;
    }
}

This middleware example assumes you have a Usage model to track the number of clicks per user and module. You can adjust the logic to fit your specific requirements.

Ultimately, the best pricing model will depend on your target market and the value your app provides. Consider conducting market research or A/B testing different pricing strategies to find the most effective approach.

aarontharker's avatar

Pay-per-module and User seems like the best idea from the clients perspective as they know exactly what they are paying for each month/year.

If you are concerned about them not wanting to pay upfront for modules they may not use offer them a free month or 2 for a limited number if users when they first access each module. Don't do this from time of registration though as it is likely they will not access all of the modules immediately. So first time they access that module give them a message that explains they are on a trial and will need to pay to contiunue using the module afterwards.

muuucho's avatar
Level 11

@aarontharker Hm, this is what I also thought was the best way to go. But it is a lot of coding and I prefer working on new modules.

Also I can give guiding examples what diffenerent real world customers pay, like what an organisation with 5,15 and 30 users pay in average. Or maybe more in dept cases, like X has 15 users and they have registered and attested 510 invoices during the last year. For that they have paid xx usd. Most companies knows how many invoices they have per year, so they should be able to estimate their cost for such module pretty well.

Snapey's avatar

@muuucho Don't ignore the fact that some modules will be of higher value to the customer than others

Higher value = higher monthly rate

Also, don't make it metered such that users are encouraged to share logins.

Regarding coding effort. Don't overlook this is your income. Better to have fewer modules that you make realistic revenue from.

muuucho's avatar
Level 11

@Snapey Good thoughts. I might be able to handle that by saying that clicks in the super-duper-module counts for 2 clicks.

I found this article: https://www.chargebee.com/resources/glossaries/pay-as-you-go-pricing/ and if I understand it correct, more and more apps starts to go that way, like AWS Textraction that I use myself in my app.

My biggest concern is if the potential clients can be convinced that this is a good deal. Like said earlier I think that can be explained/proved by real world examples from existing clients.

Ben Taylor's avatar

If it were me, I wouldn't base my pricing decision on the amount of effort to implement it. You might end up with an easy to implement solution that is unattractive to customers. Go for the solution that will likely result in the most profit for you, no matter the effort.

It may just be me, but if a product is pay per click. I would immediately look for alternate options. I don't want to be thinking about charges every time I click.

muuucho's avatar
Level 11

@Ben Taylor Good point. People might feel bad when they jave to make clicks. Maybe I should call it something like "tokens" instead, and that an activity like uploading and register an invoice costs about 10 tokens? My pricing will be competetive and one important selling point, so I realy will hammer that message in in my marketing.

I still have to take under considerstion that setting a fix price for modules with different amount of users in each modules and different amount of using load for each user is not easy to explain in a pricing plan, not to mention the coding behind it to automate and calculate the invoicing.

Just take one module, supplier invoice handling as an example. There are variables like number of users, and nummer of invoices, if they want ai to extract data or not. How to make pricing out of that that? And what if I have 10 modules like that, some simpler, some more complicated?

With a token system, it will be easy to invoice and specify costs per module to the clients. Giving them x free tokens from the beginning to play around with.

Please or to participate in this conversation.