Settings

Configure WHOIS privacy, registrar lock, and auto-renewal.

Overview

Domain settings control security features, privacy, and renewal behavior. Configure these settings to protect your domains and ensure uninterrupted service.

Getting Domain Settings

TypeScript:

const domain = await client.domains.get('example.com');
 
console.log('Domain:', domain.domainName);
console.log('Status:', domain.status);
console.log('Expires:', domain.expiresAt);
console.log('Auto-renew:', domain.autoRenew);
console.log('WHOIS Privacy:', domain.whoisPrivacy);
console.log('Registrar Lock:', domain.registrarLock);

Python:

domain = client.domains.get("example.com")
 
print(f"Domain: {domain.domain_name}")
print(f"Status: {domain.status}")
print(f"Expires: {domain.expires_at}")
print(f"Auto-renew: {domain.auto_renew}")
print(f"WHOIS Privacy: {domain.whois_privacy}")
print(f"Registrar Lock: {domain.registrar_lock}")

Updating Settings

All Settings

await client.domains.updateSettings('example.com', {
  autoRenew: true,
  whoisPrivacy: true,
  registrarLock: true,
});

Individual Settings

// Just auto-renewal
await client.domains.updateSettings('example.com', {
  autoRenew: true,
});
 
// Just privacy
await client.domains.updateSettings('example.com', {
  whoisPrivacy: true,
});

Auto-Renewal

Enable Auto-Renewal

await client.domains.updateSettings('example.com', {
  autoRenew: true,
});

Disable Auto-Renewal

await client.domains.updateSettings('example.com', {
  autoRenew: false,
});

Renewal Reminders

Configure when you receive expiration notifications:

await client.domains.updateSettings('example.com', {
  renewalReminders: {
    enabled: true,
    daysBeforeExpiry: [90, 60, 30, 14, 7, 1],
    recipients: ['admin@company.com', 'billing@company.com'],
  },
});

Check Renewal Status

const domain = await client.domains.get('example.com');
 
const daysUntilExpiry = Math.floor(
  (new Date(domain.expiresAt).getTime() - Date.now()) / (1000 * 60 * 60 * 24)
);
 
if (daysUntilExpiry < 30) {
  console.log(`Warning: Domain expires in ${daysUntilExpiry} days`);
  if (!domain.autoRenew) {
    console.log('Auto-renewal is disabled!');
  }
}

WHOIS Privacy

WHOIS privacy protects your personal information in the public WHOIS database.

Enable Privacy

await client.domains.updateSettings('example.com', {
  whoisPrivacy: true,
});
 
// WHOIS now shows:
// Registrant: REDACTED FOR PRIVACY
// Email: Please contact via domain

Disable Privacy

await client.domains.updateSettings('example.com', {
  whoisPrivacy: false,
});
 
// WHOIS now shows your actual registrant info

Check WHOIS Privacy Status

const domain = await client.domains.get('example.com');
 
if (!domain.whoisPrivacy) {
  console.log('Warning: Your contact info is public');
}

Get WHOIS Info

const whois = await client.domains.getWhois('example.com');
 
console.log('Registrant:', whois.registrant);
console.log('Admin:', whois.admin);
console.log('Tech:', whois.tech);
console.log('Created:', whois.createdDate);
console.log('Updated:', whois.updatedDate);
console.log('Expires:', whois.expiryDate);

Registrar Lock

Registrar lock prevents unauthorized domain transfers.

Enable Lock

await client.domains.updateSettings('example.com', {
  registrarLock: true,
});

Disable Lock

Required before transferring domain to another registrar:

await client.domains.updateSettings('example.com', {
  registrarLock: false,
});

Check Lock Status

const domain = await client.domains.get('example.com');
 
if (!domain.registrarLock) {
  console.log('Warning: Domain can be transferred');
}

Contact Information

Update Registrant Contact

await client.domains.updateContact('example.com', 'registrant', {
  firstName: 'Jane',
  lastName: 'Smith',
  email: 'jane@company.com',
  phone: '+1.4155551234',
  address: '456 New Street',
  city: 'San Francisco',
  state: 'CA',
  postalCode: '94102',
  country: 'US',
});

Update Other Contacts

// Admin contact
await client.domains.updateContact('example.com', 'admin', {
  firstName: 'Admin',
  lastName: 'User',
  email: 'admin@company.com',
  // ...
});
 
// Tech contact
await client.domains.updateContact('example.com', 'tech', {
  firstName: 'Tech',
  lastName: 'Support',
  email: 'tech@company.com',
  // ...
});
 
// Billing contact
await client.domains.updateContact('example.com', 'billing', {
  firstName: 'Billing',
  lastName: 'Dept',
  email: 'billing@company.com',
  // ...
});

Get Current Contacts

const contacts = await client.domains.getContacts('example.com');
 
console.log('Registrant:', contacts.registrant.email);
console.log('Admin:', contacts.admin.email);
console.log('Tech:', contacts.tech.email);
console.log('Billing:', contacts.billing.email);

Nameservers

View Current Nameservers

const domain = await client.domains.get('example.com');
 
console.log('Nameservers:');
for (const ns of domain.nameservers) {
  console.log(`  ${ns}`);
}

Update Nameservers

await client.domains.updateNameservers('example.com', {
  nameservers: [
    'ns1.usetransactional.com',
    'ns2.usetransactional.com',
  ],
});

Custom Nameservers

Use your own nameservers:

await client.domains.updateNameservers('example.com', {
  nameservers: [
    'ns1.your-dns-provider.com',
    'ns2.your-dns-provider.com',
  ],
});

Reset to Default

await client.domains.updateNameservers('example.com', {
  useDefault: true,
});

Auth Code

Auth code (EPP code) is needed to transfer the domain.

Get Auth Code

// Must unlock domain first
await client.domains.updateSettings('example.com', {
  registrarLock: false,
});
 
// Get auth code
const authCode = await client.domains.getAuthCode('example.com');
 
console.log('Auth code:', authCode.code);
console.log('Expires:', authCode.expiresAt);

Regenerate Auth Code

const authCode = await client.domains.regenerateAuthCode('example.com');
 
console.log('New auth code:', authCode.code);

Domain Status Codes

StatusDescription
clientHoldDomain not resolving (unpaid)
clientTransferProhibitedTransfer locked
clientUpdateProhibitedUpdates locked
clientDeleteProhibitedDeletion locked
serverHoldRegistry hold
pendingTransferTransfer in progress
pendingDeletePending deletion

Check Status Codes

const domain = await client.domains.get('example.com');
 
console.log('Status codes:', domain.statusCodes);
 
if (domain.statusCodes.includes('clientHold')) {
  console.log('Warning: Domain is on hold');
}

Bulk Settings Update

Update settings for multiple domains:

await client.domains.updateSettingsBulk({
  domains: ['example1.com', 'example2.com', 'example3.com'],
  settings: {
    autoRenew: true,
    registrarLock: true,
  },
});

Settings Audit Log

Track changes to domain settings:

const auditLog = await client.domains.getAuditLog('example.com', {
  startDate: '2024-01-01',
  endDate: '2024-01-31',
});
 
for (const entry of auditLog) {
  console.log(`${entry.timestamp}: ${entry.action}`);
  console.log(`  By: ${entry.user}`);
  console.log(`  Changes: ${JSON.stringify(entry.changes)}`);
}

Next Steps