Skip to main content

Troubleshooting

The editor never leaves an empty box: when it cannot open, the box says why, with a code. Your createEditor call rejects with the same code (error.code), and @lettrove/node throws a LettroveApiError with it. Find the code below, or start from what you see.

By what you see​

The box is empty, or stays on its loading shimmer​

  • The container has no height. The editor fills its element; give it one (height: 720px or 100vh).
  • createEditor was never called, or threw before it ran: check your browser console.

The box says frame_blocked​

The editor's frame did not answer. In order of likelihood:

  1. Your site is not on the project's list for this key's environment. Settings → Embed → Sites. (A test key allows localhost already.)
  2. The publishable key is wrong, revoked, or from another project.
  3. Your page's Content-Security-Policy blocks the frame: add frame-src https://lettrove-embed.com. When this is the cause, the message names the rule.
  4. The release you asked for does not exist, or is a release candidate opened with a live key.

The box says token_invalid​

Your getToken did not give the editor a token. Look at your server's log for the token request: its answer has the real code (key_invalid, origin_not_allowed…). Also check getToken resolves with the token string, not the whole JSON answer.

The box says origin_not_allowed​

The token was minted for another site than the page showing the editor. Mint it with the page's own origin: the Origin header of the request your page made.

The box says key_invalid​

The publishable key in your page and the secret key on your server belong to different projects (or one is test and the other live). Use the pair from the same project and environment.

Edits are not saved​

The editor saves as your user works and fires design:saved. If it stops: check your browser's network tab for /api/embed/v1/editor requests. A token_expired answer is normal and renewed automatically through getToken; if getToken fails then, saving stops until it works again.

A webhook does not arrive​

Settings → Embed → your project → Webhooks → Deliveries shows every attempt and your server's answer. Usually: the address is not reachable from the internet (localhost never is), your server answered something other than 2xx, or took longer than 10 seconds.

An exported email shows {{…}}​

A merge tag was not filled. Check mergeTags in the export: fill those through merge, or with your email service. See Merge tags.

Every error code​

The full list, with what each means and what to do, is in Error codes.

Still stuck​

Write to support@lettrove.com with the requestId from the error (every API refusal has one): it lets us find exactly what happened.