Everyone

WHOIS Contacts

How Commerce stores and manages WHOIS registrant, admin, tech, and billing contacts for registered domains.

Last updated 1776211200
  • WHOIS Privacy Interaction
  • domain_contacts Table Structure
  • Related
  • Overview

    Every registered domain requires WHOIS contact information — typically four contact types: registrant, admin, tech, and billing. In most cases all four point to the same person, but they can be set independently.

    Commerce caches registrar-side contact IDs in domain_contacts to avoid re-creating contacts on every registration.

    Contact Types

    Type Purpose
    Registrant Legal owner of the domain
    Admin Administrative contact (often same as registrant)
    Tech Technical contact for DNS questions
    Billing Billing contact for registrar communications

    Contact Fields

    Field Format Notes
    First name string
    Last name string
    Company string Optional
    Email email Should be a working address — ICANN may verify
    Phone E.164 e.g. +12025551234 — Commerce converts format per registrar
    Address line 1 string
    Address line 2 string Optional
    City string
    State / Province string Use abbreviation where registrar requires it
    Postal code string
    Country ISO 3166-1 alpha-2 e.g. US, GB, DE

    Pre-Fill on Registration

    When a client reaches the registration form at /client/order/domain, Commerce pre-fills all four contact types from the client's profile. The client can edit any field before submitting.

    Contact Creation at the Registrar

    On first domain registration by a client:

    1. Commerce checks domain_contacts for an existing entry for this client + registrar combination.
    2. If none found: calls the registrar's contact create API (e.g. contacts/add for ResellerClub, contacts.create for OpenSRS).
    3. The registrar returns a contact ID (registrar-specific identifier).
    4. Commerce stores the contact ID in domain_contacts.

    On subsequent registrations by the same client, the cached contact ID is reused — no redundant API calls.

    Updating Contacts

    Local Update (Commerce Only)

    1. Go to Admin → Domains → [domain] → Contacts tab.
    2. Edit any field.
    3. Save.

    This updates the domain_contacts record in Commerce's database only. The change is not automatically pushed to the registrar.

    Pushing to Registrar

    After a local update, click Sync on the domain detail page. This calls getDomainInfo to refresh the local record from the registrar, but does not push local changes back. To push contact updates to the registrar, you must use the registrar's own portal or API — Commerce does not implement a updateContact method.

    For most domains, registrant contact changes require a formal change-of-registrant process at the registrar (ICANN 2016 Transfer Policy). Check registrar documentation.

    WHOIS Privacy Interaction

    When WHOIS privacy is enabled, the registrant contact details are replaced with proxy contact information in public WHOIS results. The real contact details are still stored in Commerce and at the registrar internally.

    See WHOIS Privacy for details.

    domain_contacts Table Structure

    Column Description
    id Primary key
    client_id Linked Commerce client
    registrar_module Module slug (e.g. resellerclub)
    registrar_contact_id Contact ID returned by the registrar API
    type registrant, admin, tech, billing
    first_name, last_name, etc. Contact field values
    created_at, updated_at Timestamps

    Related