PigeonPost
27A 27Communication product

The email API for your app

Every inbox.
One API.

Connect your users’ mailboxes, Gmail and any IMAP provider, with one REST API. PigeonPost keeps them in sync, tells your app the moment mail arrives, and sends replies from the user’s own address.

  • Webhooks in under a second
  • Any IMAP mailbox
  • Unipile-style API

Everything your app needs from email

Skip the IMAP plumbing.
Ship the feature.

Syncing mailboxes, keeping connections alive, threading replies and storing attachments takes months to get right. PigeonPost does it, and gives your app clean JSON and webhooks.

Connect any IMAP mailbox

Gmail and Google Workspace with an app password, Yahoo, iCloud, AOL, Zoho, GMX, Fastmail, hosting companies and your own mail servers.

  • Server settings filled in for well-known providers
  • Login checked before the account is saved
  • Passwords encrypted, never returned

Webhooks the moment mail arrives

New mail, changes and account status reach your endpoint as signed events, retried until your server answers.

  • email.new, email.update, email.delete, bounces
  • Drafts, folders, opens and clicks, account status
  • HMAC-SHA256 signatures, automatic retries

Send and reply in the thread

Send from the user’s own address. Replies carry the right headers, so the conversation stays together for everyone.

  • Replies, Cc, Bcc and custom headers
  • Saved in the user’s Sent folder
  • Drafts you can create, edit and send

Attachments, ready to download

Files are copied to your storage in the background, so downloads stay fast even when the mail server is slow.

  • Inline images and files
  • One API call per download
  • Sync never waits for large files

Import recent mail when connecting

Bring in up to the last 30 days when a mailbox connects, without flooding your webhooks with old mail.

  • Choose 1 to 30 days
  • Progress on the account and as events
  • New mail during the import still arrives live

Open and click tracking

Know when a sent email is opened or a link is clicked, with the time, device and the link that was used.

  • tracking.open and tracking.click events
  • Labels to group your campaigns
  • Per-email on or off

Threads, folders and contacts

Emails come with their thread, folder and role, and every mailbox has the list of people it has emailed with.

  • Thread ids across folders
  • Inbox, Sent, Drafts, Trash, Spam roles
  • Contacts with the last email date

A dashboard for your workspace

Add accounts, watch their status live, read synced mail, manage webhooks and API keys, and follow every delivery.

  • Live account status
  • Webhook delivery log
  • API keys and webhook endpoints

From inbox to your app

Mail lands.
Your app already knows.

Four steps between your user’s mailbox and your product, and PigeonPost runs three of them for you.

  1. 01

    Connect

    Send the address and password with one API call, or add the mailbox in your dashboard.

  2. 02

    Sync

    PigeonPost keeps a live connection to the Inbox and checks the other folders every 30 seconds.

  3. 03

    Notify

    Your endpoint gets a signed email.new webhook with the full email, usually in under a second.

  4. 04

    Reply

    Send the answer from the user’s address, in the same thread, with one call.

Built for developers

One call to connect.
One webhook per email.

Plain REST and JSON, an API key header, and the same shapes as Unipile’s v2 API, so ids, lists and events look familiar from the first request.

  • Prefixed ids and clean listsacc_, email_, att_ … and cursor paging with has_more.
  • Signed, retried webhooksVerify X-Email-Engine-Signature; failed calls are retried with backoff.
  • Docs you can followQuickstart, provider guides and a full API reference.
Connect a mailbox201 Created
curl -X POST $PIGEONPOST_URL/api/v1/auth/intent \
  -H "X-API-KEY: $PIGEONPOST_KEY" \
  -d '{ "provider": "imap", "email": "support@acme.com",
        "password": "app-password" }'
POST your-app.com/webhooks email.new
{
  "type": "email.new",
  "account_id": "acc_3c9e4f1a7b2d…",
  "data": { "email": {
    "subject": "Order #1042 arrived damaged",
    "from_attendee": { "identifier": "ana@customer.com" },
    "thread_id": "c0a8f3…@customer.com",
    "has_attachments": true
  } }
}

Fast, and light on resources.

Measured in a 30-minute load test: 100 mailboxes, 1,000 emails an hour, API reads, sends and every webhook event delivered to a real public endpoint.

from mail arriving to webhook delivered (p95)
0.78 s
from mail arriving to webhook delivered (p95)
of 1,175 webhooks delivered on the first try
100%
of 1,175 webhooks delivered on the first try
API errors in 13,714 calls
0
API errors in 13,714 calls
engine memory for 100 mailboxes
< 30 MiB
engine memory for 100 mailboxes

What teams build with PigeonPost

Email inside your product,
where your users work.

Helpdesk and ticketing

Turn a support mailbox into tickets: each new email opens one, replies join it, and agents answer from the support address.

CRM and sales tools

Log every email with a contact, send from the rep’s own mailbox, and see when it was opened.

AI assistants

Read recent mail, draft answers for a person to approve, and send them in the right thread.

Recruiting and operations

Keep candidate, supplier or booking emails, with their attachments, next to the record they belong to.

Answers before you build

Questions before
your first mailbox?

The answers people ask first. The documentation covers the rest.

What is PigeonPost?

An email API for your app. Your users connect their mailboxes once; PigeonPost keeps them in sync, sends your app a webhook for every new email and change, and lets you send and reply from their own address.

Which mailboxes can I connect?

Any mailbox with IMAP and SMTP: Gmail and Google Workspace (with an app password), Yahoo, iCloud, AOL, Zoho, GMX, Fastmail, hosting companies and your own mail servers. For well-known providers, only the address and password are needed.

How fast do I hear about new mail?

PigeonPost keeps a live connection to each Inbox, so a new email usually reaches your webhook in under a second. Other folders are checked every 30 seconds, and you can ask for a sync at any time.

Can I import the mail that is already in the mailbox?

Yes. Turn on initial sync when connecting and PigeonPost imports the last 1 to 30 days. Imported mail does not send email.new webhooks; you get account.initial_sync events and read it through the API.

Is it compatible with Unipile?

PigeonPost follows Unipile’s v2 API shapes: prefixed ids, lists with has_more, auth intents, webhook endpoints and v2 event names, so moving an integration over takes little work.

How do I know a webhook really came from PigeonPost?

Every call is signed with HMAC-SHA256 using your endpoint’s secret, in the X-Email-Engine-Signature header. Calls that fail are retried with growing gaps, and every delivery is visible in your dashboard.

Where is the mail stored?

In your workspace’s own database, with attachments copied to your storage. Mailbox passwords are encrypted and never returned by the API or written to logs.

How much does it cost?

Pricing is per connected mailbox. Talk to us about your volume and we will set up your workspace.

Let the bird carry it

Bring your users’ email into your product.

Connect the first mailbox in minutes. Your first webhook arrives right after.

  • REST API + webhooks
  • Dashboard included
  • Docs for every step