📈 Usage Model
Track feature utilization against subscription limits.
💡 Note
Overview
The Usage Model tracks how customers utilize features and resources within your product. By comparing usage against subscription limits (from the Plans Model), Meza AI calculates license utilization to identify upsell opportunities and at-risk accounts.
High utilization (80%+) often indicates expansion readiness. Low utilization may signal churn risk or a need for better onboarding.
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
account_id | String | Customer account | Yes |
dimension | String | What is being measured | Yes |
value | Number | Current utilization value | Yes |
timestamp | Timestamp | When measured | Yes |
Common Dimensions
Track the same dimensions defined in your Plans Model:
| Dimension | Description | Example Value |
|---|---|---|
users | Number of active users | 8 |
storage_gb | Storage consumed in GB | 35.5 |
api_calls_monthly | API calls this month | 7500 |
projects | Number of projects | 4 |
seats | Licensed seats used | 45 |
License Utilization
Meza AI automatically calculates license utilization:
Utilization = (Current Usage / Plan Limit) × 100%0-60%
Low utilization
Monitor adoption
60-80%
Healthy utilization
Normal usage
80%+
High utilization
Upsell opportunity!
Configuration Steps
Navigate to Data Models
Go to Configuration → Data Models.
Configure Usage Model
Click Configure on the Usage Model card.
Write Query
Write SQL to retrieve current usage values per dimension.
Match Plan Dimensions
Ensure dimension names match those in your Plans Model.
Save Model
Test and save the model.
Example SQL Query
-- Query for multiple dimensions
SELECT
account_id,
'users' AS dimension,
COUNT(DISTINCT user_id) AS value,
NOW() AS timestamp
FROM users
WHERE status = 'active'
GROUP BY account_id
UNION ALL
SELECT
account_id,
'storage_gb' AS dimension,
SUM(file_size_bytes) / 1073741824.0 AS value,
NOW() AS timestamp
FROM files
GROUP BY account_id
UNION ALL
SELECT
account_id,
'api_calls_monthly' AS dimension,
COUNT(*) AS value,
NOW() AS timestamp
FROM api_logs
WHERE created_at >= DATE_TRUNC('month', NOW())
GROUP BY account_id✅ Tip