{"record":{"id":"4df721ce17a4d8e9","repo":"Billionmail/BillionMail","slug":"failed-to-set-godaddy-dns-verification","errorCode":null,"errorMessage":"Failed to set Godaddy DNS verification: {}","messagePattern":"Failed to set Godaddy DNS verification: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"core/internal/service/acme/acme.go","lineNumber":434,"sourceCode":"\t\tcase \"cloudxns\":\n\t\t\terr = SetDnsCloudxns(ctx, client, dnsProviderToken)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Failed to set CloudXNS DNS verification: {}\", err.Error()))\n\t\t\t}\n\t\tcase \"azuredns\":\n\t\t\terr = SetDnsAzuredns(ctx, client, dnsProviderToken)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Failed to set AzureDNS verification: {}\", err.Error()))\n\t\t\t}\n\t\tcase \"cloudflare\":\n\t\t\terr = SetDnsCloudflare(ctx, client, dnsProviderToken)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Failed to set Cloudflare DNS verification: {}\", err.Error()))\n\t\t\t}\n\t\tcase \"godaddy\":\n\t\t\terr = SetDnsGodaddy(ctx, client, dnsProviderToken)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Failed to set Godaddy DNS verification: {}\", err.Error()))\n\t\t\t}\n\t\tdefault:\n\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Unsupported DNS provider: {}\", dnsProvider))\n\t\t}\n\t}\n\n\t// Register or query existing user on ACME server\n\tvar reg *registration.Resource\n\t// Try to query existing registration first (same key = same account)\n\treg, err = client.Registration.QueryRegistration()\n\tif err != nil || reg == nil {\n\t\t// No existing registration, register new account\n\t\treg, err = client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true})\n\t\tif err != nil {\n\t\t\treturn \"\", \"\", errors.New(public.LangCtx(ctx, \"Failed to register user: {}\", err.Error()))\n\t\t}\n\t}\n","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/Billionmail/BillionMail/blob/fc36c76c050c3775c5e899faf7403cf0262d2744/core/internal/service/acme/acme.go#L416-L452","documentation":"For vtype == \"dns\" with dnsProvider == \"godaddy\", SetDnsGodaddy builds a lego GoDaddy provider from dnsProviderToken and attaches it via SetDNS01Provider. Failure means the GoDaddy API key/secret could not initialize the provider. GoDaddy's lego provider also only works for domains registered/hosed with GoDaddy DNS; unrelated zones fail later or at setup.","triggerScenarios":"ApplySSLWithExistingServer (via Apply, StartRenew, ApplyLetsEncryptCertWithHttp, ApplyConsoleCert) with vtype=\"dns\", dnsProvider=\"godaddy\", and a dnsProviderToken that is a malformed API key:secret pair, a revoked production key, or a test-key used in production.","commonSituations":"Using GoDaddy 'OTE' (test) credentials against production API; key/secret swapped in the token; domain's DNS actually delegated to another provider so records can never be created.","solutions":["Regenerate a GoDaddy production API key/secret pair and store it as key:secret in dnsProviderToken (correct order, trimmed)","Confirm the certificate domain's DNS is actually served by GoDaddy; if not, choose the provider that hosts the zone","Check the wrapped err text to separate format errors from auth rejection"],"exampleFix":"// before\ndnsProviderToken = \"secretOnly\"\n// after\ndnsProviderToken = \"apiKey:apiSecret\" // production credentials","handlingStrategy":"validation","validationCode":"func validGoDaddyToken(tok string) bool {\n    parts := strings.Split(strings.TrimSpace(tok), \":\")\n    return len(parts) == 2 && parts[0] != \"\" && parts[1] != \"\"\n}\nif dnsProvider == \"godaddy\" && !validGoDaddyToken(dnsProviderToken) {\n    return errors.New(\"godaddy token must be key:secret (production)\")\n}","typeGuard":"func isGoDaddyConfigured(vtype, provider, token string) bool {\n    return vtype == \"dns\" && provider == \"godaddy\" && strings.TrimSpace(token) != \"\"\n}","tryCatchPattern":"cert, _, err := ApplySSLWithExistingServer(ctx, ...)\nif err != nil && strings.Contains(err.Error(), \"Godaddy\") {\n    return fmt.Errorf(\"regenerate GoDaddy production API key and verify DNS hosting: %w\", err)\n}","preventionTips":["Use production keys, not OTE/test keys","Store as apiKey:apiSecret in the correct order","Confirm the domain's DNS is actually hosted at GoDaddy"],"tags":["acme","dns-01","godaddy","credentials"],"backgroundTag":"dns-provider-auth-failed","analyzedSha":"fc36c76c050c3775c5e899faf7403cf0262d2744","analyzedAt":"2026-09-05T21:28:54.019Z","contentChangedAt":"2026-09-05T21:28:54.019Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}