# Mailbox Provider Statistics

The mailbox provider statistics highlight how your emails perform across all the major providers you are sending to - Hotmail, Yahoo, Gmail etc.

The `/statistics/recipient-esp` resource can be used to view statistics based on the Email Service Providers of the recipients of your campaign. You must provide a $CampaignID in the `Campaign` filter in order to retrieve the data.

### Example

cURL
```shell
# View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
curl -s \
	-X GET \
	--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
	https://api.mailjet.com/v3/REST/statistics/recipient-esp?CampaignId=$Campaign_ID
```

PHP
```php
<?php
/*
View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
*/
require 'vendor/autoload.php';
use \Mailjet\Resources;
$mj = new \Mailjet\Client(getenv('MJ_APIKEY_PUBLIC'), getenv('MJ_APIKEY_PRIVATE'));
$filters = [
  'CampaignId' => '$Campaign_ID'
];
$response = $mj->get(Resources::$StatisticsRecipientEsp, ['filters' => $filters]);
$response->success() && var_dump($response->getData());
?>
```

Node.js
```javascript
/**
 *
 * View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
 *
 */
const mailjet = require('node-mailjet').connect(
  process.env.MJ_APIKEY_PUBLIC,
  process.env.MJ_APIKEY_PRIVATE
)
const request = mailjet
  .get('statistics')
  .action('recipient-esp')
  .request({
    CampaignId: '$Campaign_ID',
  })
request
  .then(result => {
    console.log(result.body)
  })
  .catch(err => {
    console.log(err.statusCode)
  })
```

Ruby
```ruby
# View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
require 'mailjet'
Mailjet.configure do |config|
  config.api_key = ENV['MJ_APIKEY_PUBLIC']
  config.secret_key = ENV['MJ_APIKEY_PRIVATE']
end
variable = Mailjet::Statistics_recipient-esp.all(campaign_id: "$Campaign_ID"
)
p variable.attributes['Data']
```

Python
```python
"""
View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
"""
from mailjet_rest import Client
import os
api_key = os.environ['MJ_APIKEY_PUBLIC']
api_secret = os.environ['MJ_APIKEY_PRIVATE']
mailjet = Client(auth=(api_key, api_secret))
filters = {
  'CampaignId': '$Campaign_ID'
}
result = mailjet.statistics_recipient-esp.get(filters=filters)
print result.status_code
print result.json()
```

Java
```java
package com.my.project;
import com.mailjet.client.errors.MailjetException;
import com.mailjet.client.errors.MailjetSocketTimeoutException;
import com.mailjet.client.MailjetClient;
import com.mailjet.client.MailjetRequest;
import com.mailjet.client.MailjetResponse;
import com.mailjet.client.resource.StatisticsRecipientesp;
import org.json.JSONArray;
import org.json.JSONObject;
public class MyClass {
    /**
     * View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
     */
    public static void main(String[] args) throws MailjetException, MailjetSocketTimeoutException {
      MailjetClient client;
      MailjetRequest request;
      MailjetResponse response;
      client = new MailjetClient(System.getenv("MJ_APIKEY_PUBLIC"), System.getenv("MJ_APIKEY_PRIVATE"));
      request = new MailjetRequest(StatisticsRecipientesp.resource)
                  .filter(StatisticsRecipientesp.CAMPAIGNID, "$Campaign_ID");
      response = client.get(request);
      System.out.println(response.getStatus());
      System.out.println(response.getData());
    }
}
```

Go
```go
/*
View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
*/
package main
import (
	"fmt"
	"log"
	"os"
	mailjet "github.com/mailjet/mailjet-apiv3-go"
	"github.com/mailjet/mailjet-apiv3-go/resources"
)
func main () {
	mailjetClient := NewMailjetClient(os.Getenv("MJ_APIKEY_PUBLIC"), os.Getenv("MJ_APIKEY_PRIVATE"))
	var data []resources.StatisticsRecipientEsp
	_, _, err := mailjetClient.List("statistics", &data, Filter("CampaignId", "$Campaign_ID"))
	if err != nil {
	  fmt.Println(err)
	}
	fmt.Printf("Data array: %+v\n", data)
}
```

C#
```csharp
using Mailjet.Client;
using Mailjet.Client.Resources;
using System;
using Newtonsoft.Json.Linq;
namespace Mailjet.ConsoleApplication
{
   class Program
   {
      /// <summary>
      /// View : View delivery and contact engagement statistics for a campaign across different Mailbox providers
      /// </summary>
      static void Main(string[] args)
      {
         RunAsync().Wait();
      }
      static async Task RunAsync()
      {
         MailjetClient client = new MailjetClient(Environment.GetEnvironmentVariable("MJ_APIKEY_PUBLIC"), Environment.GetEnvironmentVariable("MJ_APIKEY_PRIVATE"));
         MailjetRequest request = new MailjetRequest
         {
            Resource = StatisticsRecipientesp.Resource,
         }
         .Filter(StatisticsRecipientesp.Campaignid, "$Campaign_ID");
         MailjetResponse response = await client.GetAsync(request);
         if (response.IsSuccessStatusCode)
         {
            Console.WriteLine(string.Format("Total: {0}, Count: {1}\n", response.GetTotal(), response.GetCount()));
            Console.WriteLine(response.GetData());
         }
         else
         {
            Console.WriteLine(string.Format("StatusCode: {0}\n", response.StatusCode));
            Console.WriteLine(string.Format("ErrorInfo: {0}\n", response.GetErrorInfo()));
            Console.WriteLine(response.GetData());
            Console.WriteLine(string.Format("ErrorMessage: {0}\n", response.GetErrorMessage()));
         }
      }
   }
}
```

### API Response

```
{
  "Count": 1,
  "Data": [
    {
      "ESPName": "others",
      "DeliveredMessagesCount": 3,
      "AttemptedMessagesCount": 3,
      "OpenedMessagesCount": 3,
      "ClickedMessagesCount": 2,
      "DeferredMessagesCount": 0,
      "SoftBouncedMessagesCount": 0,
      "HardBouncedMessagesCount": 0,
      "UnsubscribedMessagesCount": 0,
      "SpamReportsCount": 0,
      "OpenRate": 1,
      "ClickThroughRate": 0.6667,
      "SoftBouncedRate": 0,
      "HardBouncedRate": 0,
      "UnsubscribedRate": 0,
      "SpamReportsRate": 0,
      "DeferredRate": 0
    }
  ],
  "Total": 1
}
```