Tracking Domains

Add, list, check, and delete branded email tracking domains with Single API v1.0.

Overview

Retrieves all custom tracking domains configured for your account. Tracking domains are used to
brand the links in your emails for open and click tracking.

By default, SendClean uses generic tracking domains, but custom tracking domains:

  • Improve recipient trust (links appear to come from your domain)
  • Increase click-through rates
  • Maintain consistent branding
  • Improve deliverability (some spam filters flag generic tracking domains)

For each tracking domain, you'll see:

  • Domain name and verification status
  • DNS configuration status
  • Usage statistics (tracked opens/clicks)
  • Creation date

Endpoint Details

HTTP MethodPOST
Endpoint Pathv1.0/settings/listTrackingDomain
API VersionSingle API (v1.0)
Content-Typeapplication/json

Request Parameters

ParameterTypeRequiredDescriptionExample
owner_idStringYesYour unique SendClean account identifieruser_12345
tokenStringYesYour API authentication token for secure accesssk_live_abc123...

Request Example

Below is a complete example of the request body. Replace placeholder values with your actual credentials and data.

{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}"
}

Response Format

Successful Response:

{
    "status": "success",
    "code": 200,
    "data": {
        "items": [
            {
                "id": "item_001",
                "created_at": "2026-04-01T09:00:00Z",
                "status": "active"
            }
        ],
        "total": 1,
        "page": 0
    }
}

Common Errors & Troubleshooting

401 - Unauthorized: Authentication credentials are missing or invalid

Solution: Verify owner_id and token are correct. Ensure they match your account credentials exactly with no extra whitespace.

500 - Internal server error: Unexpected server error occurred

Solution: Retry the request after a brief delay. If error persists, contact SendClean support with the request details and timestamp.

Implementation Examples

curl -X POST \
  https://api.sendclean.com/v1.0/settings/listTrackingDomain \
  -H 'Content-Type: application/json' \
  -d '{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}"
}'
const axios = require('axios');

const url = 'https://api.sendclean.com/v1.0/settings/listTrackingDomain';

const payload = {
    "owner_id": "{{owner_id}}",
    "token": "{{token}}"
};

axios.post(url, payload, {
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => {
    console.log('Success:', response.data);
})
.catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
});
<?php

$url = 'https://api.sendclean.com/v1.0/settings/listTrackingDomain';

$payload = json_decode('{
    "owner_id": "{{owner_id}}",
    "token": "{{token}}"
}', true);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    $result = json_decode($response, true);
    print_r($result);
} else {
    echo "Error: $httpCode - $response";
}

?>

Overview

Adds a custom domain for email tracking purposes. After adding, you need to:

  1. Configure a CNAME record in your DNS
  2. Point it to SendClean's tracking infrastructure
  3. Verify DNS propagation
  4. Set as default tracking domain if desired

Benefits of custom tracking domains:

  • All tracking links use your branded domain
  • Better email authentication alignment
  • Improved recipient trust and click rates
  • Consistent brand experience

Example: Instead of links going through "track.sendclean.net", they go through "track.yourbrand.com"

Endpoint Details

HTTP MethodPOST
Endpoint Pathv1.0/settings/addTrackingDomain
API VersionSingle API (v1.0)
Content-Typeapplication/json

Request Parameters

ParameterTypeRequiredDescriptionExample
owner_idStringYesYour unique SendClean account identifieruser_12345
tokenStringYesYour API authentication token for secure accesssk_live_abc123...
domainStringYesDomain name to add/verify/check. Must be a domain you own and can modify DNS foryourdomain.com

Request Example

Below is a complete example of the request body. Replace placeholder values with your actual credentials and data.

{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}

Response Format

Successful Response:

{
    "status": "success",
    "code": 200,
    "message": "Resource created successfully",
    "data": {
        "id": "resource_abc123",
        "created_at": "2026-04-17T10:30:00Z"
    }
}

Common Errors & Troubleshooting

401 - Unauthorized: Authentication credentials are missing or invalid

Solution: Verify owner_id and token are correct. Ensure they match your account credentials exactly with no extra whitespace.

500 - Internal server error: Unexpected server error occurred

Solution: Retry the request after a brief delay. If error persists, contact SendClean support with the request details and timestamp.

Implementation Examples

curl -X POST \
  https://api.sendclean.com/v1.0/settings/addTrackingDomain \
  -H 'Content-Type: application/json' \
  -d '{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}'
const axios = require('axios');

const url = 'https://api.sendclean.com/v1.0/settings/addTrackingDomain';

const payload = {
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
};

axios.post(url, payload, {
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => {
    console.log('Success:', response.data);
})
.catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
});
<?php

$url = 'https://api.sendclean.com/v1.0/settings/addTrackingDomain';

$payload = json_decode('{
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
}', true);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    $result = json_decode($response, true);
    print_r($result);
} else {
    echo "Error: $httpCode - $response";
}

?>

Overview

Validates that your tracking domain's DNS is correctly configured. This checks:

  • CNAME record exists and points to correct target
  • DNS has propagated globally
  • SSL certificate is valid for HTTPS tracking
  • No redirect loops or configuration errors

Proper DNS configuration is required for tracking to work. If this check fails:

  • Open tracking won't record
  • Click tracking won't work
  • Links may appear broken to recipients

Run this after adding a new tracking domain and whenever changing DNS configuration.

Endpoint Details

HTTP MethodPOST
Endpoint Pathv1.0/settings/checkTrackingDomain
API VersionSingle API (v1.0)
Content-Typeapplication/json

Request Parameters

ParameterTypeRequiredDescriptionExample
owner_idStringYesYour unique SendClean account identifieruser_12345
tokenStringYesYour API authentication token for secure accesssk_live_abc123...
domainStringYesDomain name to add/verify/check. Must be a domain you own and can modify DNS foryourdomain.com

Request Example

Below is a complete example of the request body. Replace placeholder values with your actual credentials and data.

{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}

Response Format

Successful Response:

{
    "status": "success",
    "code": 200,
    "message": "Operation completed successfully"
}

Common Errors & Troubleshooting

401 - Unauthorized: Authentication credentials are missing or invalid

Solution: Verify owner_id and token are correct. Ensure they match your account credentials exactly with no extra whitespace.

500 - Internal server error: Unexpected server error occurred

Solution: Retry the request after a brief delay. If error persists, contact SendClean support with the request details and timestamp.

Implementation Examples

curl -X POST \
  https://api.sendclean.com/v1.0/settings/checkTrackingDomain \
  -H 'Content-Type: application/json' \
  -d '{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}'
const axios = require('axios');

const url = 'https://api.sendclean.com/v1.0/settings/checkTrackingDomain';

const payload = {
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
};

axios.post(url, payload, {
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => {
    console.log('Success:', response.data);
})
.catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
});
<?php

$url = 'https://api.sendclean.com/v1.0/settings/checkTrackingDomain';

$payload = json_decode('{
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
}', true);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    $result = json_decode($response, true);
    print_r($result);
} else {
    echo "Error: $httpCode - $response";
}

?>

Overview

Removes a custom tracking domain from your account. After deletion:

  • Future emails use the default tracking domain
  • Historical tracked data remains accessible
  • DNS records can be safely removed
  • The domain can be re-added later if needed

Only delete tracking domains that are:

  • No longer needed
  • Being replaced with a different domain
  • Incorrectly configured beyond repair

Endpoint Details

HTTP MethodPOST
Endpoint Pathv1.0/settings/deleteTrackingDomain
API VersionSingle API (v1.0)
Content-Typeapplication/json

Request Parameters

ParameterTypeRequiredDescriptionExample
owner_idStringYesYour unique SendClean account identifieruser_12345
tokenStringYesYour API authentication token for secure accesssk_live_abc123...
domainStringYesDomain name to add/verify/check. Must be a domain you own and can modify DNS foryourdomain.com

Request Example

Below is a complete example of the request body. Replace placeholder values with your actual credentials and data.

{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}

Response Format

Successful Response:

{
    "status": "success",
    "code": 200,
    "message": "Resource deleted successfully"
}

Common Errors & Troubleshooting

401 - Unauthorized: Authentication credentials are missing or invalid

Solution: Verify owner_id and token are correct. Ensure they match your account credentials exactly with no extra whitespace.

500 - Internal server error: Unexpected server error occurred

Solution: Retry the request after a brief delay. If error persists, contact SendClean support with the request details and timestamp.

Implementation Examples

curl -X POST \
  https://api.sendclean.com/v1.0/settings/deleteTrackingDomain \
  -H 'Content-Type: application/json' \
  -d '{
  "owner_id": "{{owner_id}}",
  "token": "{{token}}",
  "domain": "http://alertsijon.in/"
}'
const axios = require('axios');

const url = 'https://api.sendclean.com/v1.0/settings/deleteTrackingDomain';

const payload = {
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
};

axios.post(url, payload, {
    headers: {
        'Content-Type': 'application/json'
    }
})
.then(response => {
    console.log('Success:', response.data);
})
.catch(error => {
    console.error('Error:', error.response ? error.response.data : error.message);
});
<?php

$url = 'https://api.sendclean.com/v1.0/settings/deleteTrackingDomain';

$payload = json_decode('{
    "owner_id": "{{owner_id}}",
    "token": "{{token}}",
    "domain": "http://alertsijon.in/"
}', true);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode == 200) {
    $result = json_decode($response, true);
    print_r($result);
} else {
    echo "Error: $httpCode - $response";
}

?>

Did this page help you?