SecurityThe editor stays where it is licensed.
Most embeddable editors ship their code into your bundle and hope for the best. Mailblocks never leaves our servers, and the browser enforces where it may appear.
A loader, not a library
Your application includes a small loader script. The editor itself is never published as a package and is not part of your bundle.
Frame ancestors
When the frame loads we check the embedding site against your licence and tell the browser, through Content-Security-Policy, that only that origin may display it.
One-time boot tickets
An authorised frame receives an encrypted ticket that expires in minutes and opens exactly one editor session.
Signed, watermarked code
The editor script is served only to our own frames through signed, expiring URLs, and every copy carries the id of the licence it was served to.
Short-lived sessions
Uploads, AI generations and storage calls need a session token that ends when the licence is suspended or its keys are rotated.
Signed user ids
With signing on, only your server can open sessions for your users, because only it knows the secret key.
You see every refusal
Attempts from unauthorised domains, invalid signatures and blocked users appear in your dashboard with the origin and time, so a leaked key never goes unnoticed.
Security questions
Is the public key a secret?
No. It identifies your licence in the browser and only works on your authorised domains. The secret key is the one to keep on your server.
What if a key leaks?
Rotate both keys from the dashboard. Open editors close immediately and the old public key stops working.
Where are designs stored?
With you. The editor hands the HTML and design JSON to your page; Mailblocks does not keep copies of your users’ emails. A draft may be kept in the user’s own browser until they save.
Which data does Mailblocks process?
A hash of the user ids you pass, the embedding origin, and usage counts needed for billing. Images are stored only if you use the hosted library.