Documentation menuTroubleshooting

Troubleshooting

The symptoms customers report most often, what causes them and how to fix them.

On this page

Start with the reason #

Every refusal carries a reason, in one of two places:

  • In the browser, a refused issuance rejects execute with a BlockAltError whose reason says why (for example origin_denied). Log error.code and error.reason in your page while you debug. BlockAlt counts these refusals per site, minute and reason instead of logging each request.
  • On your server, every siteverify answer carries a reason and an id, and the console's decision log keeps these decisions for seven days.

If neither shows a refusal, the request never reached BlockAlt: look at your page's console (CSP, network) or your server's logs (timeouts, wrong URL).

Symptoms #

SymptomLikely causeFix
Browser error refused, reason origin_deniedThe page's exact origin (scheme, host, port) is not listed for the siteAdd it in the site settings and publish
Browser error refused, reason domain_unverifiedThe hostname's TXT record is missing or not checked yetAdd _blockalt.<hostname> with the console's value and select Verify
Browser error invalid_configconfigPublicKeys is outdated or mistyped, or the action is not configuredCopy every key again from the console or GET /v1/keys; check the action name
Nothing happens on submit; a CSP report in the browser consoleYour Content-Security-Policy blocks the script or its requestsAdd the CSP entries
Every verification is invalid_tokenThe token field is not sent, or is renamed on the wayLog the length of the received token (never the token) and compare names
expired_token after a slow formThe token was requested at page loadCall execute in the submit handler, or use prepare
already_used on a double click or a retryThe same token was verified twiceDisable the button while submitting; retry with an idempotencyKey
wrong_hostnameThe server sends a different hostname, upper case, or with a portSend the page's bare hostname in lower case
wrong_actionBrowser and server use different action namesUse one constant per route on both sides
stale_config right after publishingTokens issued before the new versionExpected for a few seconds; the visitor retries
HTTP 401 invalid_secretWrong, revoked or whitespace-padded secretCheck the environment variable; create a new key if needed
HTTP 429 rate_limitedToo many verifications from your server, or a visitor over the site's rateBack off; raise the site's rate setting if real visitors hit it
Everything passes with unpaidThe workspace has no credit leftTop up; see billing
Everything passes with pausedProtection is paused for the siteResume it in the console
Everything fails with rule_blockedA rule blocks the action, or all issuance (lockdown)Lift the rule in the site settings
Everything fails with suspendedBlockAlt support suspended the site or its workspace for abuseRead the note in the console and reply to support's email

Still stuck #

Write to support@blockalt.click with the site's public key, the time, and the id of a siteverify answer or the reason shown in the decision log. Never send a secret key or a visitor's token.

Something unclear or missing on this page? Write to support@blockalt.click.