# Send emails with Sendy

> Point a Sendy brand's SMTP settings at PostShiba.

## What you'll build

A Sendy brand that sends its campaigns and autoresponders through PostShiba over SMTP. Sendy keeps your lists, templates, and unsubscribe links. PostShiba delivers the mail and suppresses addresses that hard bounce or report spam.

## Before you start

- A **Marketing** cluster. Newsletters belong on a bulk cluster, not a transactional one, and the type is locked after create. See [Clusters](/docs/dashboard/clusters/introduction).
- An SMTP username and password. Open your cluster in the dashboard, go to its SMTP credentials, and choose **Create SMTP credential**. Copy the password right away, because it is shown once. You can also use the [SMTP credentials API](/docs/api-reference/smtp-credentials).
- A verified sending domain. See [Add and verify a domain](/docs/add-a-domain). The brand's **From email** must be on it.
- A cluster that is ready to send (`sending_ready` is `true`).
- Sendy 6.0 or later, so campaigns carry one-click unsubscribe headers.

## Install

Nothing to install. Sendy has SMTP support built in.

## Pick a plan for your largest list

PostShiba caps each cluster per hour and per rolling 24 hours. Sendy sends a whole campaign in one go, so the 24-hour cap must cover your largest list plus anything else the cluster sends that day.

| Plan | Emails per hour | Emails per 24 hours | Sendy sending rate (per second) |
| --- | --- | --- | --- |
| Nano | 100 | 600 | Test sends only |
| Micro | 4,000 | 24,000 | 1 |
| Small | 40,000 | 240,000 | 11 |
| Medium | 100,000 | 600,000 | 27 |
| Large | 200,000 | 1,200,000 | 55 |

When a cap is full, SMTP answers `451 4.7.0 hourly send limit reached` or `451 4.7.0 daily send limit reached` and does not keep the message. Select **Resize** on the cluster page before a campaign that would go over. See [What happens at your cap](/docs/dashboard/clusters/what-happens-at-your-cap).

## Send your first email

1. In Sendy, open the brand and select **Edit brand**.
2. Set **From email** to an address on your verified domain.
3. Under **SMTP settings**, choose **Other** and enter these values. The username starts with `smtp_`.

```text sendy-smtp.txt
From email:  hello@mail.example.com
Host:        smtp.postshiba.com
Port:        587
SSL/TLS:     TLS
Username:    smtp_9
Password:    YOUR_PASSWORD
```

4. Save the brand.
5. Open Sendy's main **Settings** and set **Sending rate** to the value for your plan in the table above. The hourly cap divided by 3,600 keeps a long campaign under the hourly cap.
6. Create a campaign, then use **Test send this campaign** to send it to your own address. The message shows under Events in the PostShiba dashboard.

If the test fails, open the page where you choose lists for the campaign, add `&display_errors` to the end of its URL, and send the test again. Sendy then shows the full SMTP reply. Every SMTP setting is on [Send emails with SMTP](/docs/send-with-smtp).

## Bounces, complaints, and unsubscribes

Sendy reads bounces and complaints only from the providers it integrates with directly. With a PostShiba brand, Sendy does not learn about them, so PostShiba stops the mail instead.

| Event | What happens |
| --- | --- |
| Hard bounce | PostShiba suppresses the address. Later sends to it are refused with `550 suppressed`. |
| Spam report | PostShiba suppresses the address the same way. |
| Soft bounce | PostShiba retries delivery. Nothing is suppressed. |
| Unsubscribe | Sendy adds its own `List-Unsubscribe` header and footer link, so PostShiba leaves them alone. Sendy marks the subscriber as unsubscribed. |

Suppressed addresses still look active in Sendy. PostShiba refuses them, so they never reach a mailbox, but they stay in your subscriber counts. Copy them into Sendy now and then to keep your lists clean.

## Copy suppressions into Sendy

1. Export every suppressed address to `postshiba-suppressions.csv`. Follow [How do I export my suppression list?](/docs/knowledge-base/how-do-i-export-my-suppression-list). It takes a read-only Support key and one script.
2. In Sendy, open the brand, go to **Blacklist** → **Suppression list**, and import `postshiba-suppressions.csv`. Sendy then skips those addresses in every list of the brand.

Run it again after each large campaign. Importing an address that is already on Sendy's list does no harm.

## Troubleshooting

| What you see | What to do |
| --- | --- |
| Authentication fails | Check the username and password. Use port `587` with `TLS`. Port 465 with `SSL` is not offered. PostShiba accepts `AUTH PLAIN` only. |
| The test send never shows under Events | The brand is not sending through PostShiba. Open **Edit brand** and check that the SMTP settings were saved with **Other** selected. |
| `550 unverified domain` or `550 from header not aligned with verified domain` | Set the brand's **From email** to an address on your verified domain. |
| `550 kyc_required` | Your team is pending production approval. Until then, send only to team members, live inbox addresses, and inbox forward-to addresses. See [Does PostShiba require production approval?](/docs/knowledge-base/does-capsule-require-production-approval). |
| `550 suppressed` | The subscriber hard bounced or reported spam. Copy suppressions into Sendy as shown above. |
| `451 4.7.0 hourly send limit reached` or `451 4.7.0 daily send limit reached` | The cluster is at its cap and did not keep the message. Lower Sendy's sending rate, or resize the cluster before the next campaign. |
| `451 4.4.5 too many sessions, slow down` | Sendy opened too many SMTP connections on one username in 10 seconds. Lower Sendy's sending rate. |

## Next steps

- [What happens at your cap](/docs/dashboard/clusters/what-happens-at-your-cap)
- [How to manage suppressions](/docs/dashboard/emails/email-suppressions)
- [How do recipients unsubscribe?](/docs/knowledge-base/how-do-recipients-unsubscribe)
- [Send emails with SMTP](/docs/send-with-smtp) for every setting and reply.
