Developer guideMigration
Migrate from Locaweb SMTP
Guide to move from Locaweb SMTP, a Brazilian hosting and email provider, to Couryo. SMTP credentials, mapping of the REST API to POST /v1/emails, care with the MX and SPF of mailboxes hosted at Locaweb and the safe order of the switch.
Senders on Locaweb, a Brazilian hosting and email provider, almost always use its SMTP (server, username and password in the system) and often keep the company mailboxes at Locaweb too. Moving to Couryo changes only the sending: the mailboxes stay where they are. Follow the safe migration order and use this guide for the details.
Over SMTP (no code change)#
Change the credentials in your system (ERP, store, WordPress, Laravel, PHPMailer):
| Field | Before (Locaweb SMTP) | After (Couryo) |
|---|---|---|
| Server | the SMTP server of your plan | smtp.couryo.com |
| Port | the one of your plan | 587 (STARTTLS), 465 (direct TLS) or 2525 |
| Username | the SMTP username | couryo |
| Password | the SMTP password | the Couryo API key (ck_live_...) |
| Sender | an authorized address | an address on a verified domain at Couryo |
Each message gets an id (250 2.0.0 Ok: queued as msg_...) and shows up under Emails with the timeline, the answer of the receiving server and a plain-language explanation. Tags and the marketing stream go by header (X-Couryo-Tags, X-Couryo-Stream), see SMTP.
Over the REST API#
If you call the Locaweb SMTP API (JSON with subject, body, sender and recipient, and the token in a header), the equivalent Couryo call is:
curl https://api.couryo.com/v1/emails \
-H "Authorization: Bearer $COURYO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-confirmation" \
-d '{
"from": "Shop <orders@example.com.br>",
"to": "ana@example.com.br",
"subject": "Order 1042 confirmed",
"html": "<p>Thanks, Ana!</p>",
"text": "Thanks, Ana!"
}'| Locaweb | Couryo | Note |
|---|---|---|
subject |
subject |
|
body (with the type in headers) |
html and text |
send both parts: the text part helps delivery |
from |
from |
"Name <email>", on a verified domain |
to, cc, bcc |
to, cc, bcc |
a string or a list, up to 50 recipients |
headers |
headers |
platform headers are ignored |
| token in a header | Authorization: Bearer ck_live_... |
one key per project, with scope and allowed IPs |
| (no equivalent) | Idempotency-Key |
repeating the call never duplicates the email |
| (no equivalent) | tags, metadata, scheduled_at, template |
filters, your data in webhooks, scheduling and saved templates |
DNS: careful with the mailboxes#
- Do not touch the MX. If the company mailboxes are at Locaweb, the domain MX keeps pointing there. Couryo does not use the root domain MX.
- Do not touch the root domain SPF. The Locaweb
include:stays while the mailboxes send through it. Couryo passes SPF through thebouncessubdomain, which points to it by CNAME. - Publish Couryo's records in the DNS panel where the domain is (Locaweb, Registro.br or Cloudflare):
couryo1._domainkey,couryo2._domainkeyandbounces, all CNAME. The domain page at Couryo shows each record name the way your panel expects it. - DMARC: if you have one, keep it and add
mailto:reports@dmarc.couryo.comtoruato get the reports in the deliverability agent; if you do not, publish the one Couryo suggests (it starts atp=none). - Wait for the domain to be verified and move the sending little by little.
Good to know#
- Hotmail and Outlook are the top pain of senders in Brazil. Microsoft's rule for bulk senders (SPF, DKIM and DMARC, otherwise
550 5.7.515) is met by Couryo's records, and the deliverability agent tells you when something is missing. - UOL, BOL and Terra show up apart in the stats by provider, so you see where delivery is good.
- Addresses that bounced or complained at Locaweb: add them as suppressions before the first send (copy the suppressions).
- Bank slips (boleto) and invoices: send them as a link, not as an attachment. A boleto attachment is a scam pattern spam filters know.