defmodule SimpleshopThemeWeb.WebhookController do use SimpleshopThemeWeb, :controller alias SimpleshopTheme.Webhooks require Logger @doc """ Receives Printify webhook events. Events: - product:publish:started - Product publish initiated - product:updated - Product was modified - product:deleted - Product was deleted - shop:disconnected - Shop was disconnected """ def printify(conn, params) do event_type = params["type"] || params["event"] resource = params["resource"] || params["data"] || %{} Logger.info("Received Printify webhook: #{event_type}") case Webhooks.handle_printify_event(event_type, resource) do :ok -> json(conn, %{status: "ok"}) {:ok, _} -> json(conn, %{status: "ok"}) {:error, reason} -> Logger.warning("Webhook handling failed: #{inspect(reason)}") # Still return 200 to prevent Printify retrying json(conn, %{status: "ok"}) end end end