mailglass stores tenant_id on deliveries, events, and suppressions from day one. This guide shows the minimum setup and one custom resolver shape.
Prerequisites
Mailglass.Configpoints to your repo- You choose a tenant resolution strategy (
SingleTenantor custom)
Single-tenant default
config :mailglass, tenancy: Mailglass.Tenancy.SingleTenantCustom tenant behaviour
defmodule MyApp.Tenancy do
@behaviour Mailglass.Tenancy
@impl Mailglass.Tenancy
def scope(query, %{tenant_id: tenant_id}) do
Mailglass.Tenancy.scope(query, %{tenant_id: tenant_id})
end
@impl Mailglass.Tenancy
def resolve_webhook_tenant(%{path_params: %{"tenant_id" => tenant_id}}), do: {:ok, tenant_id}
def resolve_webhook_tenant(_ctx), do: {:error, :missing_tenant_id}
endRun tenant-scoped delivery
Mailglass.Tenancy.with_tenant("acme", fn ->
%{email: "ops@acme.example"}
|> MyApp.UserMailer.welcome()
|> Mailglass.deliver()
end)End-to-End Example
Mailglass.Tenancy.with_tenant("acme", fn ->
{:ok, delivery} =
%{email: "owner@acme.example"}
|> MyApp.UserMailer.welcome()
|> Mailglass.deliver()
delivery.tenant_id
end)