Analytics endpoints require a Pro plan subscription
or higher. Partner-related analytics also require an active Dub
Partners program.
Partner analytics
The top partners by event count, including partner names and IDs.import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_partners",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_partners",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_partners',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_partners"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_partners",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end
partnerId parameter. It supports advanced filtering: single value, multiple values (comma-separated), or exclusion (prefix with -).
import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_links",
partnerId: "pn_123",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_links",
"partnerId": "pn_123",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_links',
partnerId: 'pn_123',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_links"),
PartnerID: dubgo.String("pn_123"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_links",
partnerId: "pn_123",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end
Partner group analytics
The top partner groups by event count, including group names and IDs.import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_groups",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_groups",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_groups',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_groups"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_groups",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end
groupId parameter. It supports advanced filtering: single value, multiple values (comma-separated), or exclusion (prefix with -).
import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_partners",
groupId: "grp_123",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_partners",
"groupId": "grp_123",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_partners',
groupId: 'grp_123',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_partners"),
GroupID: dubgo.String("grp_123"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_partners",
groupId: "grp_123",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end
Partner tag analytics
The top partner tags by event count, including tag names and IDs.import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_partner_tags",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_partner_tags",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_partner_tags',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_partner_tags"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_partner_tags",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end
partnerTagId parameter. It supports advanced filtering: single value, multiple values (comma-separated), or exclusion (prefix with -).
import { Dub } from "dub";
export const dub = new Dub({
token: process.env.DUB_API_KEY,
});
const result = await dub.analytics.retrieve({
event: "sales",
groupBy: "top_partners",
partnerTagId: "ptag_123",
interval: "30d",
// saleType: "new" // Optional: filter by new or recurring sales
});
from dub import Dub
with Dub(
token="DUB_API_KEY",
) as d_client:
res = d_client.analytics.retrieve(request={
"event": "sales",
"groupBy": "top_partners",
"partnerTagId": "ptag_123",
"interval": "30d",
# "saleType": "new", # Optional: filter by new or recurring sales
})
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: 'sales',
groupBy: 'top_partners',
partnerTagId: 'ptag_123',
interval: '30d',
// saleType: 'new', // Optional: filter by new or recurring sales
);
$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("sales"),
GroupBy: dubgo.String("top_partners"),
PartnerTagID: dubgo.String("ptag_123"),
Interval: dubgo.String("30d"),
// SaleType: dubgo.String("new"), // Optional: filter by new or recurring sales
})
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: "sales",
groupBy: "top_partners",
partnerTagId: "ptag_123",
interval: "30d",
# saleType: "new", # Optional: filter by new or recurring sales
)
res = s.analytics.retrieve(req)
if ! res.one_of.nil?
# handle response
end