404 Error Handling Inside Plug?

this is the right answer :slight_smile:

def call(conn, _) do
  case logics(...) do
    :ok -> conn  
    :error ->
      conn
      |> Phoenix.Controller.render(MyApp.Web.ErrorView, :"404")
      |> halt()
  end
end

Passing an atom to Phoenix.Controller.render will handle the content negation and render the html/json/etc template.