Skip to content

Zone management

Preview and push

Preview DNS changes per provider before push, review creates, updates, and deletes, confirm the plan, make a backup, and safely apply sequential writes.

5 min read

On this page

Preview and push compares the saved zone with every assigned provider, shows proposed operations, and writes only after typed confirmation. The key release behavior is that push reads and plans again against live provider state, but it does not compare those fresh operations with the reviewed preview; provider-side changes made after preview can therefore change what the push applies.

Preview a saved draft#

Finish and save the draft

Open Zones → a zone → Records or Settings. Select Save changes. Preview changes is disabled while the browser draft has unsaved edits.

Start the comparison

Select Preview changes. DNSMigrator opens Changes, queues a provider read, and moves the card through Queued and Running to Ready to push or Failed.

Review every provider

Expand every provider row. Check add, change, delete, unchanged, unsupported, and error entries. A ready preview can still omit unsupported records or contain a failed provider.

Confirm and push

In Type example.com to push n changes, type the current zone name. Matching is case-insensitive and accepts one trailing dot. Select Push to n providers.

Only workspace Owners and Admins see the managed-zone edit, preview, and push controls. Members can view the saved zone and select Check for drift.

What the preview contains#

The managed-zone planner works separately for each provider. It expands saved import transforms, fills zero TTLs from Default TTL, removes provider-managed SOA and DNSKEY records, handles apex NS settings, applies ignore and deletion rules, checks the provider catalog, and compares canonical record sets with the provider read.

Each provider card can contain:

  • Add — a supported desired set is absent at that provider.
  • Change — the matching set differs in values, TTL, proxy state, or alias DNS target.
  • Delete — a live set is absent from the effective desired zone while normal deletion is enabled.
  • Unchanged — the compared fields already match.
  • Records can't be sent to this provider — the release support check rejected a type, alias form, routing policy, apex CNAME, or TXT length. The record is omitted from that provider’s plan.
  • Error — credential loading, reading a zone that was found, or planning that provider threw an error.

If every provider plan records an error, the preview is Failed. If at least one does not, it can be Ready to push even when another provider has an error or unsupported records. The release treats an empty or failed listZones() result as “zone not found” during preview and compares against an empty live list.

The Push to n providers label counts preview cards without errors. The worker nevertheless recomputes all currently attached providers. A provider whose preview card failed can be written if its fresh push-time plan succeeds, so the label is not a fixed destination set.

The confirmation total is the preview’s sum of add, change, and delete record-set operations across provider cards. It describes the reviewed preview, not a guaranteed count for the fresh push calculation.

When a preview becomes out of date#

The preview stores the saved zone version. Changes replaces the confirmation form with This preview is out of date. when the browser has unsaved edits or the saved version changed. The service repeats the same version check when you submit the push.

A ready preview can be submitted only once. Submission atomically changes that row into a queued push, and a second submission is rejected. Before submission, any saved edit requires another preview. After submission, wait for the push to finish before saving: the worker has no second zone-version check and may load a post-queue edit into its plan.

Provider-side edits do not change the saved zone version. They therefore do not mark the preview out of date. The worker sees them only during its fresh provider reads and includes them in the newly computed plan.

When a provider zone does not exist, preview treats its live record list as empty. During push, DNSMigrator can create the zone, read the newly created state, and plan from that state before record writes. The empty zone container may therefore be created as part of a confirmed push even if later record operations fail.

Backups and provider writes#

The worker first recomputes all provider plans. A provider that cannot be read or created is recorded as an error and is not backed up or written. For every provider with a usable adapter and zone reference, DNSMigrator stores the freshly read records as a Before push backup, then calls that provider’s apply operation.

Providers are processed one at a time. For each usable provider, the worker:

  1. stores a provider-specific Before push snapshot;
  2. applies the fresh create, update, and delete plan;
  3. records a provider error when an operation fails; and
  4. applies Sign or Unsign when the adapter exposes DNSSEC control.

Processing continues after a provider failure. The overall push is Pushed only when every provider finishes without an error; otherwise it is Failed and successful writes remain live.

Deletions and nameserver settings#

The release planner follows these saved settings:

  • Normal mirroring deletes provider-only record sets.
  • Never delete records at the provider adds and updates but leaves unrelated live sets.
  • Ignore rules preserve matching live values and can stop planning when the same value is also managed in the draft.
  • SOA and DNSKEY records are omitted as provider-managed.
  • A draft apex NS record is omitted; explicit and provider-returned nameservers are planned through the zone’s nameserver settings.

A managed-zone record push does not change the domain’s parent delegation. Use the migration nameserver cutover workflow for registrar nameserver changes.

The release managed-zone planner does not run the migration translator or clamp out-of-range TTLs. Zone checks reports provider catalog conflicts before preview; choose portable records and TTLs rather than expecting the push to convert them.

After the push#

The latest card becomes Latest push and shows Pushed or Failed. Older rows remain under History with their stored preview counts. The job records the push time, updates the zone to In sync only after a fully successful run, and marks it Error after any provider failure.

Notification channels can subscribe to Zone changes pushed and Zone push failed. A successful push reports the number of provider plans processed; a failure includes the first provider error. See Notifications and webhooks.

A successful push means the provider adapters accepted their operations. It does not run authoritative DNS verification. Select Check for drift after provider APIs settle, or enable scheduled drift monitoring, to compare the saved zone with each provider’s next API read.