Skip to main content
Analytics endpoints require a Pro plan subscription or higher.
Referrers data allows you to analyze where your link traffic is coming from, including both the referrer domain and the full referrer URL.

Referrer domain analytics

The top referrers by event count, including referrer names.
import { Dub } from "dub";

export const dub = new Dub({
  token: process.env.DUB_API_KEY,
});

const result = await dub.analytics.retrieve({
  event: "clicks",
  groupBy: "referrers",
  linkId: "clux0rgak00011...",
  interval: "30d",
});
from dub import Dub

with Dub(
    token="DUB_API_KEY",
) as d_client:
    res = d_client.analytics.retrieve(request={
        "event": "clicks",
        "groupBy": "referrers",
        "linkId": "clux0rgak00011...",
        "interval": "30d",
    })
    print(res)
declare(strict_types=1);

require 'vendor/autoload.php';

use Dub;
use Dub\Models\Operations;

$sdk = Dub\Dub::builder()
    ->setSecurity('DUB_API_KEY')
    ->build();

$request = new Operations\RetrieveAnalyticsRequest(
    event: 'clicks',
    groupBy: 'referrers',
    linkId: 'clux0rgak00011...',
    interval: '30d',
);

$response = $sdk->analytics->retrieve(
    request: $request
);

if ($response->oneOf !== null) {
    // handle response
}
package main

import(
    "context"
    dubgo "github.com/dubinc/dub-go"
    "github.com/dubinc/dub-go/models/operations"
    "log"
)

func main() {
    ctx := context.Background()

    s := dubgo.New(
        dubgo.WithSecurity("DUB_API_KEY"),
    )

    res, err := s.Analytics.Retrieve(ctx, operations.RetrieveAnalyticsRequest{
        Event: dubgo.String("clicks"),
        GroupBy: dubgo.String("referrers"),
        LinkID: dubgo.String("clux0rgak00011..."),
        Interval: dubgo.String("30d"),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res != nil {
        // handle response
    }
}
require 'dub'

s = ::OpenApiSDK::Dub.new(
      security: ::OpenApiSDK::Shared::Security.new(
        token: "DUB_API_KEY",
      ),
    )

req = ::OpenApiSDK::Operations::RetrieveAnalyticsRequest.new(
  event: "clicks",
  groupBy: "referrers",
  linkId: "clux0rgak00011...",
  interval: "30d",
)

res = s.analytics.retrieve(req)

if ! res.one_of.nil?
  # handle response
end

Referrer URL analytics

The top referrer URLs by event count, including full URLs.
import { Dub } from "dub";

export const dub = new Dub({
  token: process.env.DUB_API_KEY,
});

const result = await dub.analytics.retrieve({
  event: "clicks",
  groupBy: "referer_urls",
  linkId: "clux0rgak00011...",
  interval: "30d",
});
from dub import Dub

with Dub(
    token="DUB_API_KEY",
) as d_client:
    res = d_client.analytics.retrieve(request={
        "event": "clicks",
        "groupBy": "referer_urls",
        "linkId": "clux0rgak00011...",
        "interval": "30d",
    })
    print(res)
declare(strict_types=1);

require 'vendor/autoload.php';

use Dub;
use Dub\Models\Operations;

$sdk = Dub\Dub::builder()
    ->setSecurity('DUB_API_KEY')
    ->build();

$request = new Operations\RetrieveAnalyticsRequest(
    event: 'clicks',
    groupBy: 'referer_urls',
    linkId: 'clux0rgak00011...',
    interval: '30d',
);

$response = $sdk->analytics->retrieve(
    request: $request
);

if ($response->oneOf !== null) {
    // handle response
}
package main

import(
    "context"
    dubgo "github.com/dubinc/dub-go"
    "github.com/dubinc/dub-go/models/operations"
    "log"
)

func main() {
    ctx := context.Background()

    s := dubgo.New(
        dubgo.WithSecurity("DUB_API_KEY"),
    )

    res, err := s.Analytics.Retrieve(ctx, operations.RetrieveAnalyticsRequest{
        Event: dubgo.String("clicks"),
        GroupBy: dubgo.String("referer_urls"),
        LinkID: dubgo.String("clux0rgak00011..."),
        Interval: dubgo.String("30d"),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res != nil {
        // handle response
    }
}
require 'dub'

s = ::OpenApiSDK::Dub.new(
      security: ::OpenApiSDK::Shared::Security.new(
        token: "DUB_API_KEY",
      ),
    )

req = ::OpenApiSDK::Operations::RetrieveAnalyticsRequest.new(
  event: "clicks",
  groupBy: "referer_urls",
  linkId: "clux0rgak00011...",
  interval: "30d",
)

res = s.analytics.retrieve(req)

if ! res.one_of.nil?
  # handle response
end