# Extending BooleanSMTP

> The two contracts BooleanSMTP's transport and notification-channel systems are built on, and which one you can actually register from outside the plugin today.

BooleanSMTP's mail transports and notification channels are both built behind a small interface, so
the built-in ones (SendGrid, Amazon SES, Custom SMTP, … and Slack, Discord, Telegram) are just three
implementations of the same contract as anything you'd write yourself.

<table>
	<thead>
		<tr>
			<th>Contract</th>
			<th>What it's for</th>
			<th>Can you register your own?</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td><a href="/extending/custom-transport/"><code>TransportContract</code></a></td>
			<td>A mail provider or delivery method.</td>
			<td>Yes — the <a href="/hooks/boolean_smtp_transports/"><code>boolean_smtp_transports</code></a> filter.</td>
		</tr>
		<tr>
			<td><a href="/extending/alert-channel/"><code>NotificationChannelContract</code></a></td>
			<td>A destination for delivery-failure alerts.</td>
			<td>Not yet from outside the plugin — see that page.</td>
		</tr>
	</tbody>
</table>

## Next steps

- [Custom transport](/extending/custom-transport/)
- [Alert channel](/extending/alert-channel/)
- [Hooks](/hooks/) — everything either contract's implementations can hook into once they're wired up.
