domain
Connect SDK

Dialog configuration

Locale, branding, setup policy, DKIM guidance, and safe copy controls.

All configuration is validated by Domain0ConnectConfigurationSchema before the dialog is mounted.

OptionPurpose
applicationNameCustomer-visible product name
localeConnect interface locale
whiteLabelLogo, theme, copy, and bounded behavior controls
setupPolicyAutomatic setup, conflict behavior, SPF behavior, or forced guided setup
domainConnectTemplateProvider-onboarded record template for Domain Connect DNS providers
manualSetupDocumentationApplication-owned HTTPS setup guide
enableDkimShow post-connection DKIM guidance
dkimSelectorsUp to ten selectors to check during DKIM guidance
presentationModal dialog or inline rendering
lifecycle callbacksSuccess, close, step, connection, and documentation events

Locale

await domain0.connectDomain({
  client,
  connectionId,
  locale: 'de',
})

Supported locale identifiers are exported by Domain0LocaleSchema. Incomplete native catalogs fall back to English explicitly instead of guessing a locale.

Domain Connect template

Cloudflare, GoDaddy, IONOS, NameSilo, Vercel, and WordPress.com use only Domain Connect for automatic setup. Pass the service template that your application has onboarded with those DNS providers:

await domain0.connectDomain({
  client,
  connectionId,
  domainConnectTemplate: {
    serviceProviderId: 'service.example',
    serviceId: 'website',
    properties: { target: 'edge.service.example' },
  },
})

If the exact template is missing or rejected, the SDK uses guided manual setup. It never asks for broader provider account or zone credentials instead.

White label

await domain0.connectDomain({
  client,
  connectionId,
  applicationName: 'Acme Cloud',
  whiteLabel: {
    logo: 'https://app.acme.com/brand/logo.svg',
    theme: {
      colorMode: 'system',
      light: { primary: '#172554', onPrimary: '#ffffff' },
      widthPx: 680,
      dialogRadiusPx: 16,
    },
    copy: {
      successTitle: { en: '{DOMAIN} is connected' },
      successButton: { en: 'Return to Acme' },
    },
  },
})

Theme values are semantic, bounded tokens—not arbitrary CSS. Copy is plain text, has an English fallback, and supports only documented placeholders. See the complete white-label reference.

Force guided manual setup

Automatic mode is the default. Safe plans advance through read, confirmation, apply, and propagation without additional customer actions. A plan that would replace or remove an existing record always pauses for explicit consent.

await domain0.connectDomain({
  client,
  connectionId,
  setupPolicy: {
    mode: 'automatic',
    conflictPolicy: 'replace_same_name_and_type',
    spfPolicy: 'merge',
  },
})

conflictPolicy accepts preserve, replace_same_name_and_type, or replace_all_at_name. spfPolicy accepts merge or replace. Replacement remains destructive and cannot bypass the confirmation screen.

Force guided setup only when your integration requires it:

await domain0.connectDomain({
  client,
  connectionId,
  setupPolicy: { mode: 'manual' },
})

Manual mode never asks for provider credentials. It renders the exact effective records and still waits for authoritative DNS verification.

DKIM guidance

await domain0.connectDomain({
  client,
  connectionId,
  enableDkim: true,
  dkimSelectors: ['mail-2026'],
})

DKIM guidance reports bounded DNS evidence and links to fixed official provider material. It does not claim that signing is enabled in the provider account.

On this page