Compose Email

New Message
How to land in the Gmail Primary Inbox

Emails from onboarding@resend.dev automatically land in Gmail's Promotions folder. To land in the Primary Inbox: (1) Use simple personal conversational draft layouts, and (2) verify your own domain on the Resend dashboard.

Welcome Card
Newsletter
Receipt
Custom Draft
Hi there,

I hope you are doing well.

This is a custom email draft sent using our new Resend Hub dispatcher app. It uses clean formatting and text structure, which is designed to land directly in your Primary Inbox instead of the Promotions tab.

Best regards,
Sender

Live Email Preview

Sent Mail Log

Open Spreadsheet
Status Recipient Subject Date/Time Actions

No emails have been sent yet. Head over to the Composer to send your first email.

Resend API Configuration

To send emails, you need a Resend API Key. You can configure this key locally in your environment or enter it below to save it in your browser storage.

Your key starts with re_ and is stored only on your machine.

Google Sheets Logging

Save and read your sent email logs automatically using a shared Google Sheet. Enter your Google Apps Script Web App URL below.

Configure this URL to view and record sent history logs directly in Google Sheets.
How to setup your Google Sheet (Step-by-Step)
  1. Create a new **Google Sheet**.
  2. Go to **Extensions** -> **Apps Script**.
  3. Delete any existing code and paste the script below.
  4. Click **Deploy** (top right) -> **New deployment**.
  5. Select type: **Web app**.
  6. Configure:
    • Execute as: **Me**
    • Who has access: **Anyone** (Required for browser reads/writes)
  7. Click **Deploy**, authorize permissions, and copy the **Web app URL**.
  8. Paste the URL into the input field above and click **Save**.
Copy this Apps Script Code:
// Handles Reading logs (GET)
function doGet(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var rows = sheet.getDataRange().getValues();
    if (rows.length <= 1) {
      return ContentService.createTextOutput(JSON.stringify([]))
        .setMimeType(ContentService.MimeType.JSON);
    }
    var logList = [];
    for (var i = 1; i < rows.length; i++) {
      var row = rows[i];
      logList.push({
        date: row[0],
        to: row[1],
        subject: row[2],
        status: row[3],
        id: row[4],
        error: row[5] || "",
        body: row[6] || ""  // Added 7th column read (Email Body)
      });
    }
    logList.reverse(); // Newest first
    return ContentService.createTextOutput(JSON.stringify(logList))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({ success: false, error: error.message }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

// Handles Writing logs (POST)
function doPost(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = JSON.parse(e.postData.contents);
    if (sheet.getLastRow() === 0) {
      sheet.appendRow(["Timestamp", "Recipient (To)", "Subject", "Status", "Resend ID", "Error Detail", "Email Body"]);
    }
    sheet.appendRow([
      new Date().toLocaleString(),
      data.to,
      data.subject,
      data.status,
      data.id,
      data.error || "",
      data.body || ""  // Added 7th column write (Email Body)
    ]);
    return ContentService.createTextOutput(JSON.stringify({ success: true }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({ success: false, error: error.message }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

Sandbox & Delivery Optimization

Using the Free Resend Plan?

By default, Resend places new accounts in a Sandbox environment:

  • Sender Address: Must be onboarding@resend.dev (or a custom verified domain).
  • Recipient: Can only be the email address you registered your Resend account with.
  • Custom Domains: To send to any recipient or use custom email domains (e.g. hello@yourdomain.com), verify your domain in the Resend dashboard.
Landing in Primary Inbox

Gmail automatically sorts marketing and bulk emails into the **Promotions** tab. To optimize deliverability to the **Primary Inbox**:

  • Custom Domain: Set up a custom domain. Google filters the default onboarding@resend.dev aggressively.
  • Gmail-style Draft: Use our **Custom Draft** editor to send plain-looking emails instead of heavy HTML newsletters with lots of banners/links.
Go to Resend Domains Console