Problem
How is a quota calculated - I don't understand the graphs?
Solution
Keeping track of time-based quotas for tens of thousands of Outmail users is a tricky job. The way our servers ensure that we know how much of your quota we have used is simple - yet can be confusing.
We price and size Outmail in terms of Daily Emails Sent - but in order to provide a flexible product, we monitor your usage over a number of days that is dependent on the size of the Outmail package. This effectively lets you borrow from the future, or rollover unused quota from previous days. (Outmail 10 are a single day, Outmail500 and above are 7 days). We call this the Borrowed Quota Period.
However, the monitoring isn't just accomplished by resetting the count on a particular day or time every week/day.
This article explains how and why we measure your quota in the way we do.
Quota Score & Quota Limit
For each Outmail account, we keep a track of its Quota Score compared with its Quota Limit. The Quota Limit is the daily Outmail package size multiplied by the days over which we track that quota. For the sake of our examples here - we'll work with an Outmail100 which is monitored over 4 days (its Borrowed Quota Period) so has a Quota Limit of 400.
In addition to keeping the Quota Score, we also keep a record of the time that the last email was sent and the quota score was last updated this allows us to make time-based decisions.
When an email arrives for an Outmail account, if the current Quota Score is greater than the Quota Limit - then the email is rejected with a message indicating that the quota has been exceeded.
Quota Score Tracking
If the email is not rejected, then the Quota Score is updated. But we don't just add one to the Quota Score, we adjust it based on the current Quota Score and when it was last updated. So if the Quota Score in our example was currently 401 when an email arrived but the last email was sent a week ago - it shouldn't be rejected, because time has passed.
The Quota Score is updated by increasing it by the number of emails sent in the current transaction - but decreasing it by a proportion of the Quota Limit based on the proportion of the Borrowed Quota Period that has passed since the last email was sent.
Here is the process
- A number of emails arrive in a single transmission
- The quota score is checked: if the Quota Score < Quota Limit the email is accepted
- The newquota score is calculated:
- The Recovery Time is caluclated as the time since the last quota update, i.e. (Time now) - (Last time an email was received)
- The new quota score is calculated:-
[current Quota Score]
+ [number of new emails]
- ( [Quota Limit] * [Recovery Time] / [Borrowed Quota Period] )
- The Quota Score and the new update time are stored for use next time
Example Calculation
For our example account Outmail100 the Borrowed Quota Period is 4 days, and let's say the current score is 300 and emails with 10 recipients arrive (the times have been rounded here - but are actually all calculated in seconds):-
- Package: outMail100
- Borrowed Quota Period: 4 days (96 hours)
(therefore: Quota Limit = 100 x 4 = 400 (outMail package quota x borrowed quota period in days) )
- Time now: 2018-01-02 06:00
- New emails: 10
Stored information:
- Current Quota Score: 300
- Last update time: 2018-01-01 06:00 (therefore Recovery Time = 24 hours )
- The new quota score will be calculated as:-
- Quota Score + new emails - ( Quota Limit * Recovery Time / Borrowed Quota Period )
- 300 + 10 - ( 400 * 24h / 96h )
- 210
The new quota score will be stored along with the update time (210 & 2018-01-02 06:00) for use next time.
From the calculation you will see:
- If emails are all sent as quickly as they could be sent, then the 'recovery time' will be 0 and 'quota score' will effectively just count emails until the maximum quota is hit.
- If emails were sent at a regular average rate of 100 per day, that is 1/400th of the 4-day quota, the quota score will stay static as it will go up by 1 per email and decrease by 400 * 1/400 (=1) for each email.
- If there has been more than 4 days since the last email the score will go down to 1 - but only when the next email is received.
This method allows us to manage the quota tracking on an Outmail account - and only need to perform any calculations when we receive an email for that account. The downside of this is that if no emails are sent - the current Quota Score will stay as it was when the last email was sent, and is only recalculated when the next email arrives.
NOTE: The Quota Score is tracked every hour when it changes and the largest of these snapshots are shown in the daily graphs on your Outmail Statistics page. If you send emails in large irregular bursts, the graphs will show gaps due to there being no changes in the Quota Score while no emails are being sent.