Test and live keys
Every project has two environments. Build in test; your users use live.
| Test | Live | |
|---|---|---|
| Keys | lt_pk_test_…, lt_sk_test_… | lt_pk_live_…, lt_sk_live_… |
| Opens on | localhost (any port), and the sites on your Test list | Only the https sites on your Live list |
| Billed | Never | Yes |
| A mistyped option | Stops the editor with options_invalid, so you find it now | Dropped with a config:adjusted warning; the editor still opens |
| Release candidates | Open | Never open |
Designs made with test keys and live keys live side by side in the same project: they are kept by the same end-user ids.
Making live keys
lettrove.com → Settings → Embed → your project → Keys. Under Live, click New publishable key and New secret key. The secret key is shown once: put it straight into your production server's environment.
The go-live checklist
- Live keys made; the live secret key is in your production server's environment, not in code or a repository.
- Your production site is on the Live list (Settings → Embed → Sites), as an origin:
https://app.acme.com. - Your token route is behind your login, uses each person's own id, and answers with
Cache-Control: no-store. - Your page uses the live publishable key, and its Content-Security-Policy allows
frame-src https://lettrove-embed.com. - You keep each
designIdwith your own record, so people can reopen their work. - Errors are handled: you show or log the editor's
errorevent andcreateEditor's rejection, and your server handlesLettroveApiErrorcodes. - Webhooks (if you use them) point at your production endpoint, with its own signing secret.
- Your branding is set (Settings → Embed → Branding), if you want your name and logo in the bar.
- You chose a release policy: follow
1(the default) or pin (release: '1.2'). - Erasure is wired into your own account deletion:
lettrove.users.erase(userId). - Opened the editor once on your production site with the live key, made a design, exported it.