Troubleshooting
The embed won’t show, won’t sign in, or stops. Find what you see below.
This page needs your own installation with an Embed license.
Start with your page’s browser console. The SDK names what went wrong there, and mount() rejects with an EmbedError whose code says why.
not_allowed_here, “This can’t be shown here.”, or the frame refused byframe-ancestorsIt doesn’t showtimeoutIt doesn’t showlicenceorunavailable, “Workflows are unavailable right now.”It doesn’t show- A thin strip, or nothing at allIt doesn’t show
version_mismatchIt doesn’t showcode_failed, “Couldn’t sign you in.”It doesn’t sign incode_expiredIt doesn’t sign inaccess_ended, “Your access ended”It doesn’t sign in- “Couldn’t reconnect.”,
session_failedIt stops later - “Workflows are paused.”, or everyone stops at onceIt stops later
- “That isn’t available here.”, “This page isn’t available here.”,
not_availableIt stops later - A connection won’t sign in, or shows ExpiredConnections
- A font or color isn’t what you setThe look
not_allowed_here
Your page’s website isn’t on the allowed websites. Customers see “This can’t be shown here.” The browser says the same when it refuses the frame by frame-ancestors.
- Compare your page’s address with Platform › Partner keys › Allowed websites. The scheme, host and port must all match:
https://www.app.example.comisn’thttps://app.example.com. - A wildcard
https://*.example.comnever covershttps://example.comitself, and plainhttpworks only forlocalhost. - A page opened from a file has no website at all: serve it over http.
- On a website your server added for one customer, check the account your route asks a code for. Another account’s code is refused there.
A change applies to the next page load.
timeout
The frame never answered. Most often, your page’s Content-Security-Policy blocks the installation.
Fix- Allow the installation in
frame-src,script-src(for/embed.js) andconnect-src. - Behind your own proxy, check that it passes
/embed/through and adds noX-Frame-OptionsorContent-Security-Policyof its own. See Behind your own proxy.
licence or unavailable
licence: the license doesn’t include Embed, or it ended and the installation is paused. Customers see “Workflows are unavailable right now.”, and their work is kept. unavailable: the installation’s sign-in is off, or every page is switched off for this person. Customers see “This isn’t available right now.”
- Check what the license includes on Platform › Settings › General.
- Check that the operator hasn’t turned sign-in off:
AUTH_ENABLEDmust betrue. - Check the switches at all three levels.
A thin strip, or nothing at all
The element has no height of its own, so the SDK gives the frame 640 px and says so in the console. Or your page is on https and the installation on http, which browsers refuse.
Fix- Give the element a height.
- Serve the installation over https.
version_mismatch
Your SDK and the installation share no protocol version, such as a copy of the SDK from another major version.
Fix- Load
/embed.jsfrom the installation: it always matches. See Versions and upgrades.
code_failed
Your getCode threw, timed out, or returned something that isn’t a code. The message carries your error. Customers see “Couldn’t sign you in.”, with Try again.
- Call your login-code route by hand and read its answer.
- Read your server’s log for what the installation answered:
- 401
UNAUTHORIZEDThe key is missing, mistyped or revoked, or a rotated key past its grace time.
The key’s Allowed from doesn’t include your server’s address, as the installation sees it.
The license doesn’t include Embed, or the installation is paused.
A field is wrong;
details.fieldnames it.The account is deleted. Restore it first.
- 403
ORG_LIMITA new account would pass the license’s organization limit.
WORKSPACE_LIMITis the same for workspaces. - 429
RATE_LIMITEDToo many this minute. Wait
Retry-Afterseconds.X-RateLimit-Scope: personis one person’s 20 codes a minute, often a page reloading in a loop.
code_expired
The installation refused the code twice: it was used already, or it was over 60 seconds old.
Fix- Make sure your route makes a new code on every call, and nothing caches its answer.
access_ended
The person no longer has access, and sees “Your access ended”: they were removed, the account or workspace was deleted, or your server took the page’s website off the account’s list.
Fix- To put them back, give them a new code for the account, and add the website again if that was it.
“Couldn’t reconnect.”
The frame renews its session for up to 12 hours, then calls your getCode again. That call failed (session_failed), often because your own app’s session had ended and your route refused. The customer’s changes are kept, with Try again.
- Keep your app’s session longer than the embed’s.
- Or, when your route refuses, send the person to sign in to your app.
“Workflows are paused.”, or everyone stops at once
The account is suspended: everything is read-only, and your page heard an error with account_suspended. People stay signed in, and Contact support goes to Branding’s Support link. If everyone fails at once, a key your server still uses was revoked, so getCode fails, or the account was deleted (access_ended).
- Resume the account from your server or its record. See Suspend an account.
- After a revoked key, people sign in again once your server uses another key.
“That isn’t available here.”
A switch is off at one of the three levels, or the role doesn’t allow it, and something behind it was reached anyway, such as through an old link. The server answered 403 FEATURE_OFF with the switch in details.switch. A whole page switched off reads “This page isn’t available here.” (not_available): a key takes the person to the first page that is on, and unsaved changes in the builder are kept until it is back.
- Find the switch, then turn it on where it was turned off: What customers get, the account’s
turnOff, or the sign-in’s.
A connection won’t sign in, or shows Expired
The sign-in window can’t open from inside a sandbox, or the provider has no OAuth app here (not_configured), or the provider stopped accepting the connection.
- If your page is in a sandboxed frame, give it
allow-popupsandallow-popups-to-escape-sandbox. - Add the provider’s app on Platform › OAuth apps.
- For Expired, the customer signs in again. It happens after the person revoked access, or the OAuth app that signed it in changed.
A font or color isn’t what you set
A font didn’t load, or a color was moved so text stays readable. A flag says which.
Fix- A font your page proposes must be a WOFF2 or WOFF file on the page’s own website; one in Branding must be uploaded or on an allowed website (
font_origin_not_allowed). - A font service’s stylesheet is never loaded: upload the font’s files instead.
- A font that takes over 1.5 seconds gives way to the fallback for that page load (
font_unavailable).
Still stuck?
Write to GoRunner support. Send the code from the console, your page’s address, the time, and what your login-code route answered.