Skip to content

Quickstart

The short version for people who just want the checklist. Each point links to the matching step of the Tutorial, which explains it with screenshots.

  • Sign up at app.frontmail.dev with email and password, Google or GitHub. Confirm your email address – until then you can look around but not send.
  • Create your organization: fill in Organization name, Billing country (sets VAT and currency) and What will you send? (Contact form, Transactional emails or Something else), then click Create organization.
  • You’re on the Free plan with 300 requests for this month. Frontmail shows your first private key – only once. Copy it to your password manager or server secrets; you only need it for sending from a server. Then click Continue to setup.

The Get started page walks you through six steps. You can skip any of them (Skip this step, Skip setup) and come back later.

  1. Connect an email service – Email services → Add service, pick a provider, fill in the credentials (or Connect with your account for Gmail / Outlook), Verify & save. → Tutorial step 1
  2. Create a template – Templates → From gallery → Contact form → Use template. To is preset to your address, Reply-To to the visitor. → Tutorial step 2 (and step 3 for an auto-reply)
  3. Allow your website – Security → Allowed websites → Add domain, e.g. example.com, *.example.com or localhost:3000, then Save. Recommended: add the keys of your own free Cloudflare Turnstile widget in Bot protection (Turnstile) and click Turn on CAPTCHA for all templates. → Tutorial step 4
  4. Send a test email – in the editor, Send test. Free, 20 per day. → Tutorial step 6
  5. Add it to your site – copy the code from the template’s Snippets tab (HTML / JS, React, Vue, Svelte, Node.js, cURL). → Tutorial step 5
  6. Secure and invite – optionally turn on two-step verification and invite colleagues (Team).

The Snippets tab fills in your public key and IDs. Browser code uses the public key (pk_…), servers use a private key (sk_…):

Terminal window
npm install @frontmail/browser
import { init, send } from '@frontmail/browser';
init({ publicKey: 'pk_…' });
const result = await send('svc_…', 'tpl_…', {
name: 'Jane Cooper',
email: 'jane@example.com',
message: 'Hi, I would like a quote.',
});
console.log(result.status); // "queued" (or "held" if you are out of credits)

A template with Require CAPTCHA (Turnstile) also needs a Turnstile token – see Build the form for a complete form with sendForm().

The API answers 202 Accepted with a message_id; follow the email in History.