PigeonAtlas

FAQ

Frequently asked questions

Every answer describes what the product does today. If something here is not true when you try it, tell us — the page changes in the same commit as the code.

Getting started

What is PigeonAtlas?
An email sending service for applications: an HTTP API and an SMTP endpoint for the mail your product depends on — password resets, sign-in codes, receipts, notifications — plus broadcasts to a list on the larger plans. Requests use the same shape as Resend, every message is signed with a DKIM key for your own domain, and transactional mail runs on its own queue so a newsletter can never delay a reset.
Who is it for?
Developers and small teams who need reliable transactional email without running a mail server, and builders on platforms like Lovable, Bubble, Zapier, n8n and Make who want to send from their own domain instead of a shared address. There is a guide for each platform.
How do I send my first email?
Create an account, add a domain, publish the DNS records the domain page shows (DKIM, SPF and an MX for the bounce subdomain), wait for the green ticks, create an API key, and POST to /v1/emails. The dashboard's first-run checklist walks through exactly these steps; most people are sending within fifteen minutes of publishing the records.
Do I need a credit card to start?
No. The free plan is 1,000 emails a month from one verified domain, with no card and no time limit.
Can I send from a PigeonAtlas address while I set up my domain?
No, on purpose. Every message is signed with a key for a domain you have proven you control, so nothing from PigeonAtlas ever shows "via" in Gmail and no customer's reputation is shared with anyone else's. Verifying a domain takes a few minutes once the records are published.
I already use Resend. How much do I have to change?
The base URL and the key. Request and response shapes match, and error names match where the meaning matches. The Resend SDK pins its own host, so replace the SDK call with a fetch — it is fewer lines than the import. The migration notes list every difference.

Sending

What can a request contain?
from, to (one or more addresses), subject, html, text, reply_to and scheduled_at. Send both html and text and the message is built as a proper multipart alternative, which filters prefer. The response carries the message id; the same id appears in the dashboard and in webhooks.
Can I schedule a message?
Yes. Pass scheduled_at as an ISO 8601 time and the message is held until then. It counts against your allowance when it is accepted, like any other message, and shows as scheduled on the messages page until it goes out.
How do I avoid sending the same email twice?
Send an Idempotency-Key header. A retry with the same key and the same request returns the original message instead of creating a second one — a replayed webhook or a retried job cannot send a receipt twice.
Can I attach files or use CC and BCC?
Not over the HTTP API yet: it accepts the fields listed above. SMTP submission stores and sends the message exactly as your application composed it, attachments and custom headers included, and is reachable inside our network today while its public certificate is finished. The SMTP page says when it opens.
Is there an SMTP endpoint?
There is, and it is not yet open to the internet. Authentication sends your API key as the password, and putting that on the public internet without TLS would hand it to anyone on the path, so the endpoint stays private until its certificate is in place. Use the HTTP API until the SMTP page stops saying so.
Why can a newsletter never delay a password reset?
Transactional mail and broadcasts run on separate queues, on every plan. A broadcast is paced at your account's sending rate; a transactional message is claimed by the next dispatcher pass, whatever else is in flight. Fairness is per account too: one customer's backlog cannot claim the whole dispatcher.
What are broadcasts?
Mail to a list you uploaded — a newsletter, an announcement — sent to an audience with one-click unsubscribe headers on every message and an unsubscribe link that suppresses the address at once. Broadcasts are included from the Growth plan. They are kept apart from transactional mail in the queue and in the statistics.
Do you track opens and clicks?
Only if you turn it on, per domain. Both are off by default. Open tracking adds a pixel; click tracking rewrites links through pigeonatlas.com. Leave both off on the domain that sends password resets — the link in a reset should be exactly the link you wrote.
How do I know what happened to a message?
The messages page shows every message with its state — queued, sent, delivered, bounced, complained — and the event times. Webhooks deliver the same events to your endpoint: message.sent, message.delivered, message.bounced and message.complained, each signed with an HMAC over a timestamp and the body in the DP-Signature header. The webhooks page has the verification code.

Domains and deliverability

Which DNS records do I need?
Three to send: a DKIM TXT record with the 2048-bit key we generate for your domain, an SPF TXT record on a bounce subdomain, and an MX record on that subdomain so bounces come back to us. DMARC and BIMI are optional and checked too. The domain page shows each record, checks it on demand, and ticks it green or says exactly what is missing.
The page says a record is wrong but my DNS panel shows it. Why?
Usually one of three things: the panel appended your domain to a name that already had it, the panel cut a long DKIM key short (a key split across several strings is normal; a truncated one looks fine and fails), or the record was published on a subdomain when the organizational domain was needed. The check names the exact host it looked at and whether it found nothing there or a value that does not match, which is usually enough to spot which of the three it is.
What happens on a bounce or a spam complaint?
The address is added to your account's suppression list the moment the event arrives from the receiver, and any later message to it is refused at the API before it enters the queue. Bounce and complaint rates are shown per domain against the thresholds receivers apply: AWS reviews senders above a 5% bounce rate or 0.1% complaint rate, and Gmail expects spam reports under 0.3%.
Do you support DMARC and BIMI?
Yes. The domain page checks your DMARC record and warns about the common failures — two records at _dmarc, which receivers treat as none. For BIMI it validates your SVG against the required profile, hosts it, and writes the record for you; BIMI needs an enforcing DMARC policy, which the page also checks.
Can I get a dedicated IP address?
No. Mail is delivered through Amazon SES's shared pools, which are policed by AWS and carry a reputation a new dedicated IP would take months to earn. Your reputation is your domain's, and that is entirely yours to manage.
Should transactional mail and newsletters share a domain?
No. Reputation is per domain, and a campaign with a bad afternoon takes that domain's resets with it. Send transactional mail from one domain or subdomain and marketing from another; the plans from Growth upward include the domains for it. We wrote up why.
Can I send to anyone, anywhere?
Yes. Mail leaves from Frankfurt and reaches any address in the world; only the sending region is fixed.

Plans and billing

What do the plans include?
Free is 1,000 emails a month from one domain. Starter is $9 a month for 10,000 emails from one domain. Growth is $29 for 50,000 emails, ten domains and broadcasts. Scale is $79 for 200,000 emails and thirty domains. Every plan includes the API, webhooks, the suppression list, per-record verification and the transactional queue. The pricing page has the table.
What happens when I reach my monthly allowance?
You get an email at 80% of the allowance. At zero the API answers 402 quota_exceeded and the message is not queued, so nothing is silently dropped and nothing is sent you would be charged for. Any top-up credits are spent after the month's included emails, and the allowance resets on your billing day.
What is a top-up?
A pack of emails on a paid plan that never expires: 1,000 for $3, 10,000 for $15, 50,000 for $60. It is spent only after the month's included emails, so buying one for a busy month costs nothing in a quiet one.
Can I change plans in the middle of a month?
Yes, from the billing page. Upgrades take effect at once and are prorated. A downgrade to a plan with fewer domains gives you seven days to choose which domains stay, with reminder emails; the ones over the new limit stop sending after that, and their history is kept.
How do I pay, and in what currency?
Prices are in US dollars. Paddle sells you the subscription as merchant of record: it takes the payment by card, works out any sales tax or VAT that applies to you, and issues the invoice. You see the final price at checkout.
Can I cancel, and do you refund?
Cancel any time from the billing page; the period you paid for runs to its end with its full allowance. A first payment on a plan is refunded in full if you ask within 14 days and the account has sent fewer than 100 messages; renewals are not refunded; an unused top-up is refunded within 14 days. The refund policy is short and a person reads every request.

Data and security

Where is my data stored?
Application and database in Amsterdam, delivery through Frankfurt, archived message bodies in Frankfurt — all in the European Union, and mail reaches recipients anywhere. The data residency page lays it out the way a data protection officer asks for it.
How long do you keep message content?
Message bodies are deleted after 30 days. Delivery records — who, when, what happened — stay with the account so "did it send?" stays answerable. Closing the account deletes everything except suppressions, so an address that complained does not start receiving mail again through a recreated account.
Who else handles my data?
Five named sub-processors: DigitalOcean, Amazon Web Services, Paddle, Sentry and Google (Tag Manager on the public site and dashboard). The privacy page says what each one receives. No recipient address or message content goes to Google.
Is there a data processing agreement?
The privacy page forms the data processing terms between us: for the mail you send we are the processor and you are the controller, and the page states what is held, where, and for how long. A test in the codebase fails the build if it ever promises a retention the code does not enforce.
How are API keys handled?
A key is shown once when created and stored as a hash; keys are prefixed pa_ so a leaked one is recognizable in a log. Revoke a key from the dashboard and it stops working immediately. Keys issued under the old dp_ prefix keep working.
What stops someone using PigeonAtlas for spam?
Nothing sends without a DNS-verified domain, which a throwaway account does not have. Sending is rate limited per account, bounces and complaints suppress addresses automatically, sign-in and password reset are rate limited, and staff can suspend an account instantly. The acceptable use and anti-abuse pages say what is allowed and how to report abuse to abuse@pigeonatlas.com.

The company

Who runs PigeonAtlas?
Golux Group, a small company in Belgrade, Serbia, with a solo founder who reads every reply. Support is support@pigeonatlas.com; security reports go to security@pigeonatlas.com.
What does PigeonAtlas run on?
Ruby on Rails and Postgres on DigitalOcean, with Amazon SES for delivery. SES gives the account production sending limits granted by AWS; we published the whole request.
How do I get help?
Email support@pigeonatlas.com from the address on your account. Questions about a specific message go faster with its id.

Still have a question?

Write to support@pigeonatlas.com. A person answers, usually the same day.