Understanding Products
A product defines what your app offers and how it is billed.
What is a Product?
In IronFlock, a product is the billable unit that connects your app to a pricing model. Every app you want to sell must have exactly one active product. The product defines:
- What billing period applies (daily, monthly, yearly, or one-time)
- How many free usage units are included in the base price
- How volume discounts are calculated for customers using many devices with your app
Think of the product as the “plan” that customers subscribe to when they install your app.
Product Structure
Billing Period
The period determines how often customers are charged:
| Period | Duration | Use Case |
|---|---|---|
| Daily | Per day | Short-term trials, pay-as-you-go apps |
| Monthly | Per month | Most common for ongoing subscriptions |
| Yearly | Per year | Discounted long-term commitments |
| One-time | Single charge | Perpetual licenses, setup fees |
Only one billing period can be active for your product at any time.
Included Units
Every product can include a baseline of free usage at no extra cost:
-
Included Ongoing Units — The number of app-day units included in the base price each billing cycle. For example, setting this to 14 means the first 14 device-days of usage per cycle are covered by the base price. Usage beyond this threshold is billed at the per-unit rate with volume discounts.
-
Included One-time Units — A lifetime allocation of free units. Unlike ongoing units that reset each cycle, one-time units are tracked cumulatively across all billing periods. Each cycle, the system subtracts all previously consumed units from the one-time pool before applying any remaining allocation. Once the pool is exhausted, only the ongoing included units apply.
Rebate Parameter
The rebate parameter (a value between 0.0 and 1.0) controls volume discounts. It determines how much the effective per-unit price decreases as customers scale up to more devices.
The pricing formula is:
effective_price_per_unit = base_price × number_of_units^(-rebate_parameter)- A rebate parameter of 0.0 means no volume discount — every unit costs the same.
- A rebate parameter of 0.3 (the default) gives a moderate discount curve.
- A rebate parameter of 1.0 gives the steepest possible discount.
Example with a monthly price of €5.00 and rebate parameter of 0.3:
| Devices (units) | Effective Price per Unit | Total Monthly Cost |
|---|---|---|
| 1 | €5.00 | €5.00 |
| 10 | €2.51 | €25.10 |
| 50 | €1.67 | €83.50 |
| 100 | €1.25 | €125.00 |
This incentivizes customers to deploy your app at scale while ensuring growing revenue.
Product Lifecycle
One Active Product per App
Each app can have only one active product at any time. When you create a new product version (e.g., to change the price), the previous product is deactivated and retained for historical billing. Existing customers on the old product continue to be billed at their original rate until their current billing cycle ends.
Pricing Lock On Install
When a user installs your app, then the currently assigned product is bound to the installed app. Subsequent product changes (i.e. pricing model changes) will only apply for new installations of the app or for app updates. This ensures billing consistency for existing customers.
Public vs. Private Products
| Distribution | Service Fee | Distributor Receives |
|---|---|---|
| Public App Store | 20% | 80% of revenue |
| Private sharing | 10% | 90% of revenue |
Public apps are visible in the App Store and available to all users. Private apps are only available to users you explicitly share the app with.