SendGrid Inbound Parse alternative
Keep SendGrid for sending. Route replies with application context.
SendGrid Inbound Parse is a capable general-purpose inbound webhook. Choose Linje when the main job is to attach every reply to the correct order, claim, case, or workflow without maintaining your own address-to-object mapping.
Different abstractions
Parsed email webhook or application-aware reply route?
SendGrid receives mail for a configured hostname and posts parsed fields and
attachments as multipart/form-data. It supports webhook security policies
and retries unsuccessful 5xx requests. Linje starts one level higher: your application
creates an opaque reply address with immutable metadata, then receives normalized JSON
carrying that same context.
Read the official SendGrid Inbound Parse setup documentation.
Application context
Create one reply route for one real object.
curl -fsS \
-H "Authorization: Bearer $LINJE_PROJECT_TOKEN" \
-H "Idempotency-Key: 018f47d2-89ab-4cde-8123-456789abcdef" \
-H "content-type: application/json" \
-d '{
"inbox-id":"support",
"metadata":{
"ticket_id":"ticket_4821",
"account_id":"acct_91"
}
}' \
https://api.linje.systems/v1/reply-routes
{
"reply-route": {
"id":"route_...",
"address":"r+012345...@in.linje.systems",
"metadata":{
"ticket_id":"ticket_4821",
"account_id":"acct_91"
}
}
}
No outbound migration
Use the route as Reply-To in your SendGrid message.
{
"personalizations":[{
"to":[{"email":"customer@example.com"}]
}],
"from":{"email":"support@example.com"},
"reply_to":{"email":"r+012345...@in.linje.systems"},
"subject":"Ticket ticket_4821",
"content":[{"type":"text/plain","value":"Reply with the requested details."}]
}
Your SendGrid templates, sending domains, reputation, and delivery workflow stay in
place. Only the Reply-To value changes for messages that need a correlated
response.
Reply to application event
Receive JSON with the original route metadata.
POST https://app.example.com/linje/inbound
x-linje-inbound-id: ...
x-linje-delivery-id: ...
x-linje-timestamp: ...
x-linje-signature: sha256=...
{
"schema":"linje.inbound-email.v1",
"route":{
"id":"route_...",
"metadata":{
"ticket_id":"ticket_4821",
"account_id":"acct_91"
}
},
"content":{"text":"Here are the requested details."},
"attachments":[]
}
Decision guide
Use the boundary that matches the job.
You want general inbound parsing and are comfortable owning routing state and delivery operations.
You want to keep SendGrid outbound while replies arrive with managed object context.
You want one API boundary for transactional sending and inbound application email.
Pricing
Free during preview. Paid plans start at $5/month.
Create an account and test the complete reply flow without entering payment details. Creating and keeping reply routes does not consume message usage. Each customer reply counts once when Linje accepts it; webhook retries and replay are included. After preview, choose 500 messages free, 5,000 for $5/month, or 50,000 for $25/month.
Self-service quickstart
Add replies to one real SendGrid email flow.
Create one route, use it as Reply-To, and verify that a real response reaches the correct application object.