Sending replies (outbound email)

EmailConnect is inbound only: it receives email and delivers it to your webhook as JSON. It does not send email on your behalf, and that is a deliberate choice rather than a missing feature. Sending well is its own job (IP reputation, bounces, complaints), and a dedicated sender does it better.

To reply to the emails you receive, pair EmailConnect with a transactional email provider. We recommend Scaleway Transactional Email (TEM): a French, EU-hosted sender. Any sender that lets you set custom headers works the same way.

Full walkthrough: Reply to inbound email with Scaleway Transactional Email — domain layout, DNS records, code for sending and matching replies.

What you need from EmailConnect

Every webhook payload carries the fields a threaded reply needs, on every plan, even when "Include envelope" is off:

  • envelope.messageId — the Message-ID of the email you received. Put it in the In-Reply-To header of your reply.
  • envelope.references — the conversation so far. Send it, plus the messageId, as the References header.
  • envelope.inReplyTo — set when the customer replies to you, so you can match the reply to your conversation.

Store the Message-IDs of each conversation in your own app, including the ones of the replies you send: EmailConnect keeps an email only for your retention window.

Tag your reply address

Set a Reply-To with a plus tag naming the conversation, for example support+c_4821@in.yourdomain.com. When the customer replies, the tag arrives as message.recipient.tag, so you know the thread without parsing headers. Tags are free-form, so check that the conversation exists and belongs to the sender. See plus addressing.

Don't lose replies to a blackhole MX

Scaleway's TEM setup recommends an MX record on your sending domain and, if you have no mail server, suggests its blackhole MX (blackhole.tem.scaleway.com). Mail sent there is lost. Your sending domain already has an MX — your mailbox provider, or EmailConnect if you send from your in. subdomain — so keep it as it is.

Common questions

Can EmailConnect send the reply for me? No. Your app sends replies through your own sender account, from your own domain.

Which sender should I use? Any sender that lets you set In-Reply-To, References and Reply-To on what you send. Already sending your app's transactional mail somewhere? Use the same sender for replies if it supports these. Senders whose APIs accept them:

  • Scaleway Transactional Email (France): any header as a key-value pair in additional_headers, Reply-To included. Our guide uses it.
  • Lettermint (Netherlands): custom headers through headers, a reply_to field, and an option to keep a Message-ID you set yourself.
  • AhaSend (Netherlands): a conversational-message endpoint meant for reply-style mail, with custom headers through headers and a reply_to field. It always generates the Message-ID itself and returns it in the response, so store that one.

Check before you choose: some APIs accept only non-standard (X-) headers, Brevo's for example, which rules out In-Reply-To and References there. Sending over SMTP instead of an API usually avoids this, because you build the whole message yourself.

Will replies show up in the same thread? Yes, when In-Reply-To, References and a Re: subject are set. Send a test reply to a Gmail or Outlook address and check the original message before going live.

Related