Getting Started with Conduit
Conduit is a hosted service that connects inbound email to HTTP webhooks. When an email arrives at your Conduit address, Conduit delivers it immediately as an HTTP POST to a URL that you configure. This guide covers how to create an account and how to set up your first webhook.
1. Create an account
Using the web UI
- Go to conduit.email/app/signup.
- Enter your email address and choose a password of at least 12 characters.
- Click Create account.
Conduit sends a confirmation email with a verification link and a plain-text fallback. Open that link before you sign in for the first time.
Sign up with Google or GitHub
You can also click Sign up with Google or Sign up with GitHub. Conduit then creates the account from the verified email address of your provider. No password and no email confirmation are necessary.
2. Sign in
Using the web UI
Go to conduit.email/app/signin, enter your email address and password, and click Sign in.
Sign in with Google or GitHub
You can also click Sign in with Google or Sign in with GitHub to sign in without a password. If your email address matches an existing account, Conduit links the OAuth provider to that account. Your password stays as it is and is not necessary for this method.
If two-factor authentication is on, Conduit asks for a code from your authenticator app before it opens the dashboard.
If your email address is still unconfirmed, the sign-in page also shows a form that requests another confirmation link.
3. Set up two-factor authentication
Two-factor authentication (2FA) adds a second layer of security to your account. After you sign in with your password, Conduit asks for a time-based one-time code from your authenticator app.
- Open the user menu (bottom-left on desktop, bottom navigation on mobile),
go to Two-factor auth (
/app/settings/account/2fa), and click Set up two-factor authentication. - Scan the QR code with an authenticator app, for example Google Authenticator, Authy or 1Password.
- Enter the 6-digit code from your app to complete the setup.
- Save your backup codes. Conduit generates 8 single-use backup codes. They let you sign in if you lose access to your authenticator device. Store them in a safe place.
From that point, every sign-in needs both your password and a code from your authenticator app.
3b. Register a passkey (optional)
A passkey signs you in with biometrics (Touch ID, Face ID) or with a hardware security key. No password is necessary. Passkeys resist phishing and work together with your existing password and 2FA.
Note: Passkeys are available only when the server has an
app_base_url. If the Passkeys item does not appear in your user menu (bottom-left on desktop, bottom navigation on mobile), ask your administrator.
- Open the user menu and go to Passkeys (
/app/settings/passkeys). - Click Register passkey.
- Give the passkey a name that you recognize, for example "MacBook Touch ID" or "YubiKey 5".
- Obey the browser prompt to authenticate with your device.
To sign in with a passkey, click Sign in with passkey on the sign-in page, then obey the prompt from your device. Conduit supports passkeys that are saved in a password manager, for example Bitwarden.
4. Create your first webhook
A webhook maps an email address to an HTTP endpoint. When an email arrives at the address, Conduit posts the message to your endpoint.
Public domain compared to custom domain
Conduit has one public domain (incoming.conduit.email). Every account can
create webhooks on it, and no verification is necessary. On the public domain
the local part (the part before @) comes from the webhook ID. You cannot change
it:
webhook-01HX...@incoming.conduit.email
For a memorable address such as orders@mail.yourcompany.com, first claim and
verify your own domain. For the details, see
Using a Custom Domain.
Using the web UI
- Go to Webhooks (
/app/webhooks) and click + New. - To use the public domain, leave the domain selector on Public. Conduit
assigns the address after you save. To use one of your verified private
domains, select Private domain and enter the full email address, for
example
alerts@mail.yourcompany.com. - Enter the target HTTPS URL that receives the webhook payload.
- Click Create webhook.
The webhook detail page shows the generated secret. Copy this secret now. Conduit does not show it again. You need it to verify the signature on your endpoint.
5. Verify the signature on your endpoint
Every delivery from Conduit carries an X-Conduit-Signature header. The header
holds an HMAC-SHA256 signature of the raw request body, keyed with your webhook
secret:
X-Conduit-Signature: sha256=<hex-encoded-digest>
Verify this signature in your endpoint before you process the payload:
import hmac
import hashlib
def verify_signature(body: bytes, secret: str, header: str) -> bool:
expected = "sha256=" + hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, header)
Reject a request when the signature does not match.
To rotate the secret, use the Rotate secret button on the webhook detail page in the UI.
6. Test your webhook
Using the web UI
The Simulate action is the quickest way to test that your endpoint is reachable. It skips SMTP and asks Conduit to POST a synthetic payload directly to your target URL.
- Open the webhook detail page (
/app/webhooks/{id}). - Click Simulate and confirm.
- Conduit posts a test payload immediately and records the result in Recent Deliveries.
Testing Webhooks covers the Simulate feature in detail, including how to set your own synthetic sender, subject and body through the API.
Sending a real email over SMTP
A real email through the Conduit SMTP gateway exercises the full inbound path. That path includes any attached SMTP security policy and the DNS routing.
The gateway listens at mx.conduit.email on port 25 and supports STARTTLS. Point
any mail client or sending system at that host, and address your email to the
webhook address.
Quick SMTP test with swaks
swaks is a command-line SMTP test tool
for most platforms (brew install swaks, apt install swaks):
swaks \
--to webhook-01HX...@incoming.conduit.email \
--from you@example.com \
--server mx.conduit.email \
--port 25 \
--body "Hello from swaks"
SMTP response codes
Conduit returns an SMTP status code for the delivery outcome:
| Outcome | SMTP code | Meaning |
|---|---|---|
| Success (HTTP 2xx) | 250 |
Message accepted |
| Transient failure (HTTP 5xx / timeout) | 450 |
The MTA retries |
| Permanent failure (HTTP 4xx) | 550 |
The MTA bounces the message |
To read the delivery attempts, open the webhook detail page in the UI and click Logs.
Password resets
Request a password reset at conduit.email/app/reset-password in the web UI. Conduit sends a reset email with a single-use link to choose a new password. After a successful reset, Conduit revokes all refresh tokens and all API access tokens for the account.
Next steps
- Using a Custom Domain. Verify a domain that you own, so you can use your own addresses.
- Configuring an SMTP Security Policy. Restrict who can send email to your webhooks.
- Using the API. Full reference for all API endpoints.
- Controlling SMTP Responses with HTTP Headers. Return your own SMTP codes from your endpoint.
Checklist
Use this checklist to track your progress through the setup steps:
- Created an account and confirmed your email address
- Signed in for the first time
- Set up two-factor authentication (2FA)
- Created your first webhook
- Verified the webhook signature on your endpoint
- Tested delivery (with Simulate or a test email) and read the result