# `DripDrop.Inbound`
[🔗](https://github.com/agoodway/dripdrop/blob/v0.1.0/lib/dripdrop/inbound.ex#L1)

Host-callable inbound email ingestion.

# `ingest_inbound_message`

```elixir
@spec ingest_inbound_message(Ecto.UUID.t() | map(), map()) :: :ok | {:error, term()}
```

Ingests a normalized inbound message from host-owned inbox infrastructure.

Requires a non-nil `:message_id` in the normalized payload — at-least-once
delivery from IMAP/Graph/Gmail Watch is dedup'd by `(provider, message_id)`.
Returns `{:error, :no_message_id}` for messages that lack a Message-ID.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
