We're experiencing difficulty. Our engineers are on it. Please check status.mailgun.com for real-time updates.

Reporting Metrics: Counts, Rates, & Dimensions

Article Preview

    Overview

    The Reporting Dashboard offers an incredible amount of metrics - both accumulated counts and calculated rates - that can be broken down further by dimension (i.e. meaningful groupings of data, for example, per IP or by domain).

    As such, the information below seeks to help you fully understand what this data actually means. There are three tables that comprehensively cover:

    • Counts
    • Rates
    • Dimensions (And Filters)

     

    Locating The Metrics

    To view the metrics on your account:

    1. First, log in to the Mailgun Control Panel (if you have not already done so).
    2. Then, within the Navigation Menu on the left side of the Mailgun Control Panel, click the Metrics option. (If needed, click the Send product first to expand the drop-down list of options; Metrics is an option within the Reporting section of the Send product). 

     

    Counts

    By clicking on the Metrics button, you can to choose up to 10 of the following counts to report on. The Apply button must be clicked for the changes to take effect.

    Type API Variable Name & Calculation Category & Description
    Accepted

    API Variable Name:
    accepted_count

    Calculation:
    accepted_incoming_count + accepted_outgoing_count

    Category:
    Engagement counts

    Description:
    A sum of incoming and outgoing accepted events. This includes all accepted emails to be sent as well as routes, forwards, mailing lists, and batch events.

    To only view accepted events on emails sent to recipients, use the Accepted Outgoing metric.

    Accepted events are not associated to IP addresses. The “processed” metric can be used in place of accepted to view similar data by IP.

    Accepted incoming

    API Variable Name:
    accepted_incoming_count

    Calculation:
    Sum of all raw accepted_incoming events.

    Category:
    Accepted counts

    Description:
    Mailgun accepted the API request to forward, and the message has been put in your queue. These accepted events only cover routes, forwards, and mailing lists. Mailing lists will record a single accepted incoming event, with emails sent to recipients recording their own accepted outgoing events.

    Accepted outgoing

    API Variable Name:
    accepted_outgoing_count

    Calculation:
    Sum of all raw accepted_outgoing events.

    Category:
    Accepted counts

    Description:
    Mailgun accepted the API request to send, and the message was put in your queue. Batch sends will result in one additional accepted outgoing event to record the initial batch request.

    Accepted events are not associated to IP addresses. The “processed” metric can be used in place of accepted to view data by IP.

    Bounced (all)

    API Variable Name:
    bounced_count

    Calculation:
    permanent_failed_count -(suppressed_bounced_count
    + suppressed_complaints_count
    + suppressed_unsubscribed_count)

    Category:
    Failed counts

    Description:
    A sum of all soft and hard bounces. Permanent failures fall into three categories, soft bounces, hard bounces, and suppressions. This field is equal to permanent failures minus suppressions.

    Clicked

    API Variable Name:
    clicked_count

    Calculation:
    Sum of all raw clicked events.

    Category:
    Engagement counts

    Description:
    The email recipient clicked on a link in the email. Click tracking must be turned on and the CNAME record must be pointing to mailgun.org.

    Complained

    API Variable Name:
    complained_count

    Calculation:
    Sum of all raw complained events.

    Category:
    Engagement counts

    Description:
    The email recipient clicked on the spam complaint button and the recipient's email server provides feedback loops to Mailgun for these complaints.

    Delayed bounces

    API Variable Name:
    delayed_bounce_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and is-delayed-bounce equals true.

    Category:
    Failed counts

    Description:
    Emails were initially marked as delivered, but later received a permanent failure from the mailbox provider.

    Delayed first attempt

    API Variable Name:
    delayed_first_attempt_count

    Calculation:
    delivered_two_plus_attempts_count + permanent_failed_old_count

    Category:
    Failed counts

    Description:
    Emails that were temporarily rejected on the first delivery attempt. These emails will have been retried until delivery or until a “too old” permanent failure is generated.

    Delivered

    API Variable Name:
    delivered_count

    Calculation:
    delivered_http_count + delivered_smtp_count

    Category:
    Delivered counts

    Description:
    Mailgun sent the email and it was accepted by the recipient email server.

    Delivered first attempt

    API Variable Name:
    delivered_first_attempt_count

    Calculation:
    Sum of all raw delivered events with delivery-status.attempt-no equal to 1.

    Category:
    Delivered counts

    Description:
    Emails that were delivered on the first delivery attempt without being delayed or bounced.

    Delivered HTTP

    API Variable Name:
    delivered_http_count

    Calculation:
    Sum of all raw delivered_http events at the hourly, daily, and monthly resolutions.

    Category:
    Delivered counts

    Description:
    The count of delivered events for routes and forwards.

    Delivered optimized

    API Variable Name:
    delivered_optimized_count

    Calculation:
    Sum of all raw delivered events that had optimized set to true.

    Category:
    Delivered counts

    Description:
    Emails delivered with Send Time Optimization.

    Delivered SMTP

    API Variable Name:
    delivered_smtp_count

    Calculation:
    Sum of all raw delivered_smtp events.

    Category:
    Delivered counts

    Description:
    The count of delivered events for emails sent to recipient addresses.

    Delivered two plus attempts

    API Variable Name:
    delivered_two_plus_attempts_count

    Calculation:
    Sum of all raw delivered events with delivery-status.attempt-no greater than or equal to 2.

    Category:
    Delivered counts

    Description:
    Emails that were delivered after two or more delivery attempts. This indicates the emails received at least one temporary failure.

    ESP blocked

    API Variable Name:
    esp_block_count

    Calculation:
    Sum of all raw failed events with a severity that does not equal “permanent” and a reason equal to “espblock“.

    Category:
    Failed counts

    Description:
    Emails that were temporarily blocked by the ESP for policy errors and reputation rate limiting.

    Failed (all)

    API Variable Name:
    failed_count

    Calculation:
    permanent_failed_count + temporary_failed_count

    Category:
    Failed counts

    Description:
    A sum of all permanent and temporary failures.

    Hard bounces

    API Variable Name:
    hard_bounces_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent”, a reason equal to “bounce“, and is-delayed-bounce equal to false.

    Category:
    Failed counts

    Description:
    A hard bounce is a message that cannot be delivered to its intended recipient due to an invalid recipient address or non-existent mailbox. These addresses will be automatically added to your suppressions list when you receive a hard bounce to prevent subsequent hard bounces.

    Opened

    API Variable Name:
    opened_count

    Calculation:
    Sum of all raw opened events at the hourly, daily, and monthly resolutions.

    Category:
    Engagement counts

    Description:
    The email recipient opened the email and enabled image viewing. Tracking must be turned on.

    Permanent failed

    API Variable Name:
    permanent_failed_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent”.

    Category:
    Failed counts

    Description:
    Mailgun could not deliver the email to the recipient email server, and will drop the message without retrying sending.

    Permanent failed old

    API Variable Name: 
    permanent_failed_old_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and “reason” equal to “old”.

    Category:
    Failed counts

    Description:
    Mailgun attempted to deliver the email for the maximum number of retry attempts, but received a temporary failure each time. Upon the last retry attempt, the message was classified as a ”Too Old” permanent failure.
    Permanent failed optimized

    API Variable Name:
    permanent_failed_optimized_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent”, a reason equal to “bounce“, and i-delivery-optimizer is not empty.

    Category:
    Failed counts

    Description:
    Events that were sent with send time optimization, but received a permanent failure.

    Processed

    API Variable Name:
    processed_count

    Calculation:
    delivered_count + permanent_failed_count - webhook_count - delayed_bounce_count

    Category:
    Accepted counts

    Description:
    Messages processed after being accepted. Processed messages are billed to your account at the end of the month.

    Sent

    API Variable Name:
    sent_count

    Calculation:
    (delivered_http_count + delivered_smtp_count + permanent_failed_count) - (suppressed_bounced_count
    + suppressed_complaints_count
    + suppressed_unsubscribed_count)

    Category:
    Accepted counts

    Description:
    A count of all sent messages. This includes delivered and failed messages, but does not include suppressed messages.

    Soft bounces

    API Variable Name:
    soft_bounces_count

    Calculation:
    Sum of all raw failed events with a severity equal to "permanent", a reason equal to "generic", "greylisted", "blacklisted", or "espblock", and is-delayed-bounce equal to false.

    Category:
    Failed counts

    Description:
    A soft bounce is a message that cannot be delivered to its intended recipient due to a temporary delivery issue, often stemming from a server outage, full mailbox, oversize files/messages, blocklistings, or reputation issues.

    Mailgun treats soft bounces as permanent failures, meaning we will not automatically attempt to redeliver the message. The recipient address will not be added to the suppression list, and the next time you attempt to send a message to this recipient we will attempt to deliver.

    Suppressed: bounced

    API Variable Name:
    suppressed_bounced_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and a reason equal to “suppress-bounce“.

    Category:
    Suppressed counts

    Description:
    The email was suppressed due to a previous bounce with the recipient address. No delivery attempt was made.

    Suppressed: complaints

    API Variable Name:
    suppressed_complaints_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and a reason equal to “suppress-complaint“.

    Category:
    Suppressed counts

    Description:
    The email was suppressed due to a previous complaint from the recipient. No delivery attempt was made.

    Suppressed: unsubscribed

    API Variable Name:
    suppressed_unsubscribed_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and a reason equal to “suppress-unsubscribe“.

    Category:
    Suppressed counts

    Description:
    The email was suppressed due as a result of the customer unsubscribing. No delivery attempt was made.

    Temporary failed

    API Variable Name:
    temporary_failed_count

    Calculation:
    Sum of all raw failed events with a severity that does not equal “permanent”.

    Category:
    Failed counts

    Description:
    Mailgun could not deliver the email to the recipient email server, but will retry.

    Too old failed

    API Variable Name:
    permanent_failed_old_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and “reason” equal to “old”.

    Category:
    Failed counts

    Description:
    Mailgun attempted to deliver the email for the maximum number of retry attempts, but received a temporary failure each time. Upon the last retry attempt, the message was classified as a ”Too Old” permanent failure.

    Unique clicked

    API Variable Name:
    unique_clicked_count

    Calculation:
    Sum of all unique_clicked events. A unique click event is for a particular messageID, recipient, and bot. Only a single click event is stored for the particular {messageID, recipient, bot} combination.

    Category:
    Engagements counts

    Description:
    A unique count of click events. Clicks are deduplicated on a rolling seven days. If you’re viewing two weeks of data, it’s possible to see two unique click events for a single delivered event.

    Keep in mind date ranges when viewing unique clicks, if your date filter doesn’t include the delivery event, you may see more unique clicks than delivered events.

    Unique opened

    API Variable Name:
    unique_opened_count

    Calculation:
    Sum of all unique_opened events. A unique open event is for a particular messageID, recipient, and bot. Only a single open event is stored for the particular {messageID, recipient, bot} combination.

    Category:
    Engagements counts

    Description:
    A unique count of open events. Opens are deduplicated on a rolling seven days. If you’re viewing two weeks of data, it’s possible to see two unique open events for a single delivered event.

    Keep in mind date ranges when viewing unique opens, if your date filter doesn’t include the delivery event, you may see more unique opens than delivered events.

    Unsubscribed

    API Variable Name:
    unsubscribed_count

    Calculation:
    Sum of all raw unsubscribed events at the hourly, daily, and monthly resolutions.

    Category:
    Engagements counts

    Description:
    The email recipient clicked on the unsubscribe link.

    Unsubscribe tracking must be turned on.

    Webhook Failed

    API Variable Name: 
    webhook_count

    Calculation:
    Sum of all raw failed events with a severity equal to “permanent” and is-callback equals true.

    Category:
    Failed counts

    Description:
    A count of failed webhook events.

     

    Rates

    By clicking on the Metrics button, you can to choose up to 10 of the following rates for your report. The Apply button must be clicked for the changes to take effect.

    Type API Variable Name & Calculation Description
    Bounced

    API Variable Name: 
    bounce_rate

    Calculation:
    bounced_count / processed_count

    Bounce rate measures the percentage of emails that bounce back, or the number of emails that couldn’t be delivered to users over the total number of emails sent.
    Clicked

    API Variable Name:
    clicked_rate

    Calculation:
    clicked_count / delivered_count

    The rate at which delivered emails are clicked. This calculation uses total clicks, not unique clicks. Use the unique click rate if percentages exceed 100%.
    Complained

    API Variable Name:
    complained_rate

    Calculation:
    complained_count / delivered_count

    Complaint rate measures the percentages of delivered emails reported as spam by recipients. This rate should be kept below 0.1%. Please note that Gmail does not provide complaints, to see Gmail complaint data, sign up for Google Postmaster Tools.
    Delayed

    API Variable Name:
    delayed_rate

    Calculation:
    delivered_two_plus_attempts_count / delivered_count

    The percentage of emails that were delivered with two or more delivery attempts. This rate does not include delayed emails that could not be delivered.
    Delivered

    API Variable Name:
    delivered_rate

    Calculation:
    delivered_count / sent_count

    The rate at which sent emails are delivered to recipient addresses. This calculation does not include suppressed emails.
    Failed

    API Variable Name:
    permanent_fail_rate

    Calculation:
    permanent_failed_count / processed_count

    The percentage of sent emails that resulted in a permanent failure. These emails could not be delivered and will not be retried.
    Opened

    API Variable Name:
    opened_rate

    Calculation:
    opened_count / delivered_count

    The rate at which delivered emails are opened. This calculation uses total opens, not unique opens. Use the unique open rate if percentages exceed 100%.
    Unique clicked

    API Variable Name:
    unique_clicked_rate

    Calculation:
    unique_clicked_count / delivered_count

    The percentage of delivered emails that resulted in a unique click event. This calculation will exceed 100% if your date filter excludes a large amount of delivery events.
    Unique opened

    API Variable Name:
    unique_opened_rate

    Calculation:
    unique_opened_count / delivered_count

    The percentage of delivered emails that resulted in a unique open event. This calculation will exceed 100% if your date filter excludes a large amount of delivery events.
    Unsubscribed

    API Variable Name:
    unsubscribed_rate

    Calculation:
    unsubscribed_count / delivered_count

    The unsubscribe rate accounts for the total number of unsubscribes divided by the total number of emails delivered and multiplied by 100, expressed as a percentage.

     

    Dimensions (And Filters)

    Dimensions group your data by helpful categories. You can breakdown the data by up to three dimensions. This reduces reliance on filtering and provides much more detailed data. 

    Nonetheless, you can use almost all of the dimensions as filters for your metrics data as well.

    Dimension Type Example Values Description
    Bot
    • Apple
    • Generic
    • Gmail
    • None
    Identifies bot engagement with your emails. Bot engagement is classified as Apple, Gmail, Generic, or None.
    Country
    • US
    • GB
    • AU
    • CA
    • NL
    • DE
    • FR
    • IN
    • Unknown

    Country identifies the country of origin for engagement data IPs. Only engagement data will display per country, all other data will show under the value “Unknown”.

    Country codes use ISO 3166 country codes.

    IP Pool
    • Transactional IP Pool
    • Marketing IP Pool
    IP Pools enable you to group your dedicated IPs into customized "pools" to help manage your sending reputation for different mail-sending streams.
    Recipient Domain
    • gmail.com
    • outlook.com
    • hotmail.com
    • yahoo.com
    • Other
    The recipient domains you’ve sent to, like Gmail.com, Outlook.com, and Yahoo.com.
    Recipient Provider
    • Gmail
    • Google Workspace
    • Outlook 365
    • Outlook US
    • Proton
    • Yahoo US
    • Apple
    • Chinese
    • Outlook EU
    • French
    • German
    • Other EU
    • Canadian
    • UK
    • Other US
    • Italian
    • Other
    The recipient providers that you’ve sent to. Recipient domains are aggregated to providers like Gmail, Google Workspace, or Outlook 365.
    Sending IP
    • 192.237.158.61
    • 159.135.234.21
    • 166.78.71.1
    • 69.72.42.3
    Your sending IPs. These may be dedicated or shared IPs.
    Sending Domain
    • mailgun.net
    • yourdomain.com
    • mg.yourdomain.com
    Your sending domains.
    Subaccount
    • Subaccount 1
    • Subaccount 2
    If you’ve created subaccounts, you can use this dimension to view individual subaccount performance.
    Tag
    • Transactional
    • Marketing
    • Untagged

    Tags are labels you attach to a message to identify or categorize your sending.

    By assigning a tag, you’re able to organize your email analytics so you have access to more precise and detailed insights.

    Time
    • 01/20/25 11:00 AM
    • 03/15/24 2:00 PM

    The time that your events occurred.

    The timezone in your account settings will be used for hourly data, but daily and monthly data will be aggregated using UTC time.

     

    Need Support?

    Our Support Team here at Sinch Mailgun is happy to help! Reach out to us in the Support page of your Mailgun Control Panel, and we'll be with you shortly!