IP Pool Requirement
The IP Pool name in your SendGrid requests (ip_pool_name) must match an IP Pool in SendPost that is configured to route traffic to your SendGrid provider. This ensures proper routing of emails through SendGrid.
Setup Steps:
- Note the IP Pool name you use in SendGrid (e.g., “transactional” or “marketing”)
- Create an IP Pool in SendPost with the exact same name
- Configure the SendPost IP Pool to route traffic to your SendGrid provider
Quick Migration Steps
Configure IP Pool
Create an IP Pool in SendPost with the same name as your SendGrid IP Pool, configured to route to SendGrid
Update the API key header
- From:
Authorization: Bearer SG.xxxx - To:
X-SubAccount-ApiKey: YOUR_SENDPOST_API_KEY
Migration Example
- Before (SendGrid)
- After (SendPost)
The
ip_pool_name in your request must match an IP Pool configured in SendPost that routes to SendGrid. Without this, the SendGrid-Compatible API will not know where to route your emails.Supported SendGrid Features
| Feature | Supported | Notes |
|---|---|---|
from / to / subject | ✅ | Direct mapping |
content (text/html) | ✅ | Supports both plain text and HTML |
reply_to | ✅ | Single reply-to address |
headers | ✅ | Custom headers preserved |
custom_args | ✅ | Merged into headers |
categories | ✅ | Mapped to SendPost groups |
ip_pool_name | ✅ | Required - Must match an IP Pool in SendPost configured for SendGrid routing |
attachments | ✅ | Base64 encoded attachments |
personalizations | ✅ | Multiple recipients with personalization |
substitutions | ✅ | Mapped to custom fields |
| Open tracking | ✅ | tracking_settings.open_tracking |
| Click tracking | ✅ | tracking_settings.click_tracking |
Unsupported SendGrid Features
| Feature | Alternative |
|---|---|
template_id | Use SendPost’s native template API or include content directly |
reply_to_list | Use single reply_to address |
send_at (scheduled sending) | Not available through this endpoint |
batch_id | Not supported |
asm (suppression groups) | Use SendPost’s {{unsubscribe}} template variable |
mail_settings | Not supported |
subscription_tracking | Use SendPost’s {{unsubscribe}} template variable |
ganalytics | Not supported |
attachments.disposition | All attachments treated as standard |
attachments.content_id | Inline images via CID not supported |
Response Mapping
| SendGrid Response | SendPost Behavior |
|---|---|
| HTTP 202 Accepted | SendPost returns 202 with empty body on success |
| HTTP 400 Bad Request | Validation errors in SendGrid format |
| HTTP 401 Unauthorized | Invalid or missing API key |
| HTTP 413 Payload Too Large | Request exceeds 30MB limit |
Next Steps
- Understand event types for tracking email status
- View analytics for your SendGrid emails
- Troubleshoot issues with the compatible API