Azure Static Web Apps custom domain stuck in Validating despite correct DNS TXT validation

Onion Support 20 Reputation points
2026-08-22T14:57:47.0966667+00:00

I have an Azure Static Web App with the custom apex domain onionsupport.com stuck indefinitely in the Validating state.

The Static Web App itself is healthy. Its default *.azurestaticapps.net hostname returns HTTP 200 and TLS validation succeeds.

I deleted the previous custom-domain binding, confirmed it was fully removed, and then recreated it using DNS TXT token validation. Azure generated a new validation token and a new custom-domain resource.

The current custom-domain resource was created on:

2026-08-22T09:39:17Z

Current state:

status: Validating errorMessage: null

The required TXT record is configured at:

_dnsauth.www.onionsupport.com

DNS has been verified successfully from:

  • Cloudflare 1.1.1.1
  • Google 8.8.8.8
  • All four authoritative googledomains.com nameservers

All of them return the current Azure validation token. The previous DNS TTL was 14400 seconds (4 hours), and more than that period has already elapsed since the record was changed.

The domain also has no CAA records restricting certificate issuance.

I checked the Azure Activity Log for the current custom-domain creation operation. The operation:

Microsoft.Web/staticSites/customDomains/write

started at:

2026-08-22T09:39:16.7572954Z

and returned:

HTTP 202 Accepted

at:

2026-08-22T09:39:17.9917105Z

There has been no subsequent Succeeded or Failed event for this operation. The custom-domain resource continues to report Validating with no error message several hours later.

Correlation ID:

b3e91618-38f1-4567-8217-9e601f2ddde9

I also queried the custom-domain resource directly through the Azure Resource Manager REST API and it still reports status: Validating.

At this point DNS propagation, authoritative DNS configuration, CAA restrictions, and the health of the Static Web App itself appear to have been ruled out.

Could someone from the Azure Static Web Apps team please advise whether this provisioning operation is stuck on the service side, or whether there is another backend validation/certificate-provisioning step that can be checked?

I would prefer not to delete and recreate the custom-domain binding again, since that would generate another validation token and restart the process.

Azure Static Web Apps
Azure Static Web Apps

An Azure service that provides streamlined full-stack web app development.

0 comments No comments

Answer accepted by question author
TP 163K Reputation points Volunteer Moderator
2026-08-22T15:37:44.2733333+00:00

Hi,

I did quick check and right now you have conflicting TXT records. For @ you have _oycjt9otvay7f37sb3fxhjhxykiysxu and for _dnsauth.www you have _f1akgkxuy2o56zss2z9sdpzc9201m6m

What I recommend, in sequence:

  1. delete both TXT records
  2. add CAA record 0 issue "digitcert.com", to apex, TTL 3600
  3. delete custom domain from your Static Web App. Yes, I want you to do this, despite your objection, because the validation polling interval slows dramatically over time, so we want to restart that.
  4. wait 1 hour (for TTL to expire on the TXT records)
  5. add custom domain back to your SWA, generate new code for TXT record, be ready to immediately create TXT record(s)
  6. Quickly add TXT record with new code, with low TTL (e.g. 300 seconds)
  7. refresh in portal every 5 minutes to see if validation is complete. If it doesn't complete within 15 minutes there is an issue, add comment below

Please reply back here with your results, whether positive or negative.

Above is 100% written by me, an actual human.

Please click Accept Answer and upvote if the above was helpful.

Thanks.

-TP

Was this answer helpful?

1 person found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. Ajay Rathod 360 Reputation points Microsoft External Staff Moderator
    2026-08-24T01:18:19.97+00:00

    I did a quick check and you currently have two conflicting TXT records: one at @ (_oycjt9otvay7f37sb3fxhjhxykiysxu) and one at _dnsauth.www (_f1akgkxuy2o56zss2z9sdpzc9201m6m).

    For an apex domain, Static Web Apps only reads the token at _dnsauth.www.onionsupport.com — the @ record is a leftover from the earlier binding. That stale record, plus the fact that Azure's validation polling backs off progressively the longer a binding sits in Validating, is why this one will not clear on its own. That is also why I am asking you to delete and recreate the binding despite your objection: it resets the polling interval.

    Please do this in sequence:

    1. Delete BOTH TXT records (the one at @ and the one at _dnsauth.www).
    2. Add a CAA record at the apex, TTL 3600: 0 issue "digicert.com"
    3. Delete the custom domain from your Static Web App. az staticwebapp hostname delete --name --resource-group --hostname onionsupport.com
    4. Wait 1 hour so the old TXT records age out of resolver caches. Verify nothing is cached before continuing: dig +short TXT onionsupport.com @8.8.8.8 dig +short TXT _dnsauth.www.onionsupport.com @8.8.8.8 Both should return nothing.
    5. Add the custom domain back, generate the new code, and have your DNS provider console already open so you can create the record immediately. az staticwebapp hostname set --name --resource-group --hostname onionsupport.com --validation-method dns-txt-token --no-wait az staticwebapp hostname show --name --resource-group --hostname onionsupport.com --query validationToken -o tsv
    6. Immediately create ONE TXT record with the new code, TTL 300: Host: _dnsauth.www Type: TXT Value: TTL: 300 Confirm it is live: dig +short TXT _dnsauth.www.onionsupport.com @1.1.1.1
    7. Refresh the portal every 5 minutes. Check status with: az staticwebapp hostname show --name --resource-group --hostname onionsupport.com --query "{status:status,error:errorMessage}" If it has not reached Ready within 15 minutes, comment back here with the status output, the new token, and the time you created the TXT record.

    Please reply here with your results.

    Thanks

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.