GoRunner docs
Search or askSearch⌘K

Troubleshooting

The embed won’t show, won’t sign in, or stops. Find what you see below.

Embed · Self-hosted 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

Why

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.

Fix
  1. Compare your page’s address with Platform › Partner keys › Allowed websites. The scheme, host and port must all match: https://www.app.example.com isn’t https://app.example.com.
  2. A wildcard https://*.example.com never covers https://example.com itself, and plain http works only for localhost.
  3. A page opened from a file has no website at all: serve it over http.
  4. 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

Why

The frame never answered. Most often, your page’s Content-Security-Policy blocks the installation.

Fix
  1. Allow the installation in frame-src, script-src (for /embed.js) and connect-src.
  2. Behind your own proxy, check that it passes /embed/ through and adds no X-Frame-Options or Content-Security-Policy of its own. See Behind your own proxy.

licence or unavailable

Why

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.”

Fix
  1. Check what the license includes on Platform › Settings › General.
  2. Check that the operator hasn’t turned sign-in off: AUTH_ENABLED must be true.
  3. Check the switches at all three levels.

A thin strip, or nothing at all

Why

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
  1. Give the element a height.
  2. Serve the installation over https.

version_mismatch

Why

Your SDK and the installation share no protocol version, such as a copy of the SDK from another major version.

Fix
  1. Load /embed.js from the installation: it always matches. See Versions and upgrades.

code_failed

Why

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.

Fix
  1. Call your login-code route by hand and read its answer.
  2. Read your server’s log for what the installation answered:
  • The 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.field names it.

  • The account is deleted. Restore it first.

  • 403ORG_LIMIT

    A new account would pass the license’s organization limit. WORKSPACE_LIMIT is the same for workspaces.

  • Too many this minute. Wait Retry-After seconds. X-RateLimit-Scope: person is one person’s 20 codes a minute, often a page reloading in a loop.

code_expired

Why

The installation refused the code twice: it was used already, or it was over 60 seconds old.

Fix
  1. Make sure your route makes a new code on every call, and nothing caches its answer.

access_ended

Why

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
  1. To put them back, give them a new code for the account, and add the website again if that was it.

“Couldn’t reconnect.”

Why

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.

Fix
  1. Keep your app’s session longer than the embed’s.
  2. Or, when your route refuses, send the person to sign in to your app.

“Workflows are paused.”, or everyone stops at once

Why

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).

Fix
  1. Resume the account from your server or its record. See Suspend an account.
  2. After a revoked key, people sign in again once your server uses another key.

“That isn’t available here.”

Why

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.

Fix
  1. 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

Why

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.

Fix
  1. If your page is in a sandboxed frame, give it allow-popups and allow-popups-to-escape-sandbox.
  2. Add the provider’s app on Platform › OAuth apps.
  3. 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

Why

A font didn’t load, or a color was moved so text stays readable. A flag says which.

Fix
  1. 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).
  2. A font service’s stylesheet is never loaded: upload the font’s files instead.
  3. 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.