domain

Connect customer domains from your product

Give Domain0 the DNS records your product needs. Your customer gets a guided provider connection flow.

Your product already knows which DNS records a customer domain needs. Create a connection with that domain and those records, then open Domain0 Connect. Your customer chooses their provider, authorizes the change, reviews it, and sees when the domain is ready.

You define the DNS intent

DNS records come from your application code. Domain0 Connect never asks your customer to invent a host, record type, value, TTL, or priority.

const { connection } = await domain0Platform.createConnection({
  intent: {
    domain: 'customer.example',
    records: [
      { host: '@', type: 'A', value: '192.0.2.10', ttl: 300 },
      { host: 'www', type: 'CNAME', value: 'edge.your-product.com', ttl: 300 },
    ],
  },
})

The embedded flow reads this saved intent and owns provider detection, authorization, change review, application, and propagation checks.

What your customer sees

  • Their domain and the exact changes requested by your product.
  • Automatic DNS provider detection with a provider picker fallback.
  • Provider authorization when an automatic connection is available.
  • A review step before Domain0 writes any DNS change.
  • Guided provider-specific instructions when automatic setup is unavailable.
  • A verified success state only after the records are visible in DNS.

Your API key stays on your server

The browser receives short-lived access to one connection. It never receives your Domain0 API key.

Choose your integration

ApplicationStart here
Next.js App RouterComplete Next.js guide
React with any backendReact integration
Framework-free browser UIVanilla JavaScript integration
Other backend languagesServer HTTP API

All browser integrations use the same trust boundary: your server creates the connection and issues exact-origin access, then the browser opens that saved connection through Domain0 Connect.

On this page