# Stats for Clicked Links

Clicked links can help optimize you email engagement rate by showing you how different Sections, images or Calls-to-action affect how your recipients interact with your emails.

As a result, you may want to use `/statistics/link-click` to retrieve activity information based on the links in your campaign templates. With this endpoint you can track both unique clicks and total click events, as well as retrieve the URL and its position within the template. It gives you valuable insight into what links are used more often than others, possibly showing correlation between position / design and link popularity.

### Example

cURL
```shell
# View : View statistics for total and unique clicks for each clicked URL in a campaign email
curl -s \
	-X GET \
	--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
	  https://api.mailjet.com/v3/REST/statistics/link-click?CampaignId=$Campaign_ID
```

PHP
```php
<?php
/*
View : View statistics for total and unique clicks for each clicked URL in a campaign email
*/
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::$StatisticsLinkClick, ['filters' => $filters]);
$response->success() && var_dump($response->getData());
?>
```

Node.js
```javascript
/**
 *
 * View : View statistics for total and unique clicks for each clicked URL in a campaign email
 *
 */
const mailjet = require('node-mailjet').connect(
  process.env.MJ_APIKEY_PUBLIC,
  process.env.MJ_APIKEY_PRIVATE
)
const request = mailjet
  .get('statistics')
  .action('link-click')
  .request({
    CampaignId: '$Campaign_ID',
  })
request
  .then(result => {
    console.log(result.body)
  })
  .catch(err => {
    console.log(err.statusCode)
  })
```

Ruby
```ruby
# View : View statistics for total and unique clicks for each clicked URL in a campaign email
require 'mailjet'
Mailjet.configure do |config|
  config.api_key = ENV['MJ_APIKEY_PUBLIC']
  config.secret_key = ENV['MJ_APIKEY_PRIVATE']
end
variable = Mailjet::Statistics_link-click.all(campaign_id: "$Campaign_ID"
)
p variable.attributes['Data']
```

Python
```python
"""
View : View statistics for total and unique clicks for each clicked URL in a campaign email
"""
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_link-click.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.StatisticsLinkclick;
import org.json.JSONArray;
import org.json.JSONObject;
public class MyClass {
    /**
     * View : View statistics for total and unique clicks for each clicked URL in a campaign email
     */
    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(StatisticsLinkclick.resource)
                  .filter(StatisticsLinkclick.CAMPAIGNID, "$Campaign_ID");
      response = client.get(request);
      System.out.println(response.getStatus());
      System.out.println(response.getData());
    }
}
```

Go
```go
/*
View : View statistics for total and unique clicks for each clicked URL in a campaign email
*/
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.StatisticsLinkClick
	_, _, 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 statistics for total and unique clicks for each clicked URL in a campaign email
      /// </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 = StatisticsLinkclick.Resource,
         }
         .Filter(StatisticsLinkclick.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": [
    {
      "URL": "https://www.google.fr/",
      "PositionIndex": 1,
      "ClickedMessagesCount": 2,
      "ClickedEventsCount": 2
    }
  ],
  "Total": 1
}
```