Features Pricing Compare Cost calculator Guides Quickstarts Docs All systems nominal

A dashboard for your Amazon SES account

sendvia puts a dashboard in front of your Amazon SES account: send stats, a searchable log, and a health score for every verified domain.

Last reviewed:

What does the SES dashboard actually show?

Four screens: a stats overview, a searchable send log, a page per verified domain, and a webhook feed. None of it is the AWS console with a new coat of paint. It reads your SES account and your own send history and puts both in one place.

The overview counts sent, delivered, opened, bounced and failed messages for a 7, 30 or 90 day window (or all time), with a delivery rate, a bounce rate, and an open rate that only appears once open tracking is switched on. A second row shows average, fastest and slowest delivery speed, and a daily line chart plots delivered, bounced and (on the paid plan) opened counts against each other. Below that sits a table of your top 10 tags with a bounce column, and on premium your top 5 subjects by open rate, each requiring at least 10 sends before it is ranked at all.

The same page estimates your Amazon bill for the month: every email sent through the API, the SMTP relay or a newsletter counts toward it, split three ways by source, at $0.10 per 1,000. At 42,000 emails in a month that line reads $4.20, the AWS charge alone with no platform fee folded in, because that is what SES itself would bill you for that volume.

Why does a message show "delivered" before SES actually confirms it?

Because in most cases nothing ever tells sendvia it landed. The SNS subscription behind every verified domain listens for four event types: bounce, complaint, delivery delay and reject. It does not listen for send or delivery events, because at production volume those fire once per message and once flooded the webhook badly enough to stall the whole site.

So delivery is an inference. A background job runs every two minutes and marks any "sent" message "delivered" once two minutes have passed with no bounce, complaint or deferral recorded against it. A message that did get deferred, typically a Yahoo 421 while your mail sits in a retry queue, is held back from that inference until 24 hours after the last deferral, on the theory that SES will have either bounced it by then or genuinely delivered it. That is a reasonable guess dressed up as a status, not a confirmation, and it is worth knowing before you treat "delivered" as proof of anything.

Searching and filtering everything SES has sent

The history page runs one query across to-address, from-address, subject and both message bodies, then narrows by status, source, sending domain, tag and a date range, 50 rows per page. Status alone has eleven values to filter on: queued, sent, delivered, bounced, complained, failed, scheduled, cancelled, blocked, delayed and rejected, plus a twelfth, opened, once premium tracking is active. Clicking a row opens the full message with its click data, one line per link with a total and a unique count.

What you get to keep is set by plan rather than by choice: 7 days of history on the free plan, 90 on premium. A separate page holds the blocklist itself, the addresses that bounced, complained or unsubscribed and are now suppressed on every future send, with a manual add and a CSV import for lists you already keep elsewhere.

Per-domain health: DKIM, SPF, MAIL FROM, DMARC and BIMI in one score

Adding a domain asks for the domain name and an AWS access key and secret, then registers the identity with SES, pulls back three DKIM tokens, and wires up an SNS topic and a config set behind the scenes. Checking a domain re-reads its DKIM, custom MAIL FROM and DMARC status from SES and from a live DNS lookup run on every page load, and a "fix missing records" panel prints the exact CNAME, MX and TXT records still outstanding, each with a copy button.

Those signals roll up into one health score, worked out the same way for every domain:

How the domain health score is built. The five rows below cap out at 90; nothing pushes a domain past that.
SignalPointsWhat it takes
DKIM50All three CNAMEs resolving. This is the only record SES itself requires before it will send.
DMARC published15Any policy at all, including p=none
DMARC enforced+6 or +10+6 for p=quarantine, +10 for p=reject, on top of the 15 above
Custom MAIL FROM alignedup to 10SES's own status, the MX record and the SPF TXT on bounce.yourdomain.com all passing at once
BIMI published5Needs DMARC enforcement first, plus a square SVG logo in Tiny PS format

From there only subtraction happens. Send at least 50 messages from a domain in a trailing 30 days and a bounce rate of 1% or more costs 10 points, 3% or more costs 30, and 5% or more, the point at which SES itself will suspend the domain, costs 50. A complaint rate follows the same shape at tighter thresholds: 0.1%, 0.3% and 0.5% cost 15, 30 and 50 points, and 0.1% is also where SES's own suspension line sits. A domain that clears all five positive rows and carries no bounce or complaint penalty lands on exactly 90, which is graded Excellent; below that come Healthy, Fair, At risk and Critical, each a lower band of the same 0 to 100 scale.

Every verified domain can also carry its own webhook endpoints, delivered, bounced, complained, opened and clicked, over HTTPS only, with a signing secret shown once at creation and a seven day log of recent deliveries with a manual retry on anything that failed.

What you still have to do in AWS first

The dashboard sits on top of your own AWS account, and it does not create one for you. You make an IAM user with SES and SNS access, generate an access key, and paste both into the add-domain form; revoke that key from the AWS console at any time and sending stops immediately. A new SES account starts inside Amazon's sandbox, capped at 200 emails a day to addresses you have separately verified, until Amazon finishes a production access review that usually takes 12 to 24 hours.

The dashboard's own limits sit on top of that: 250 emails a day and 1 domain on the free plan, 100,000 a day and 10 domains for $19 a month on premium. There is no dedicated IP option here, no inbound mail parsing, and no separate teams or sub-accounts, so one AWS account and one sendvia login run the whole thing.