     :ok
   end
 
-  defp detect_tags(_old_device_cert_data) do
-    update_channel = Asset.fbos_config(:update_channel) || update_channel()
+  def detect_deployment_tags() do
+    update_channel = detect_update_channel()
     ["application:#{Project.env()}", "channel:#{update_channel}"]
   end
 
-  defp update_channel do
-    case Project.branch() do
-      "next" -> "next"
-      "staging" -> "staging"
-      "master" -> "stable"
-      branch -> branch
+  def detect_update_channel() do
+    if String.match?(
+         ~r/v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)-rc(0|[1-9]\d*)+?/,
+         Project.version()
+       ) do
+      "beta"
+    else
+      case Project.branch() do
+        "master" -> "stable"
+        branch -> branch
+      end
     end
   end
 end

  end

  def handle_call({:handle_nerves_hub_update_available, _data}, _from, state) do
    FarmbotCore.Logger.success(1, "Applying OTA update")
    {:reply, :apply, %{state | is_applying_update: true}}
  end


    FarmbotCore.Logger.debug(3, "Connected to NervesHub AMQP channel. Fetching certs.")
    old_device_cert = Asset.get_device_cert(serial_number: serial_number())

    tags = detect_deployment_tags()

    params = %{
      serial_number: serial_number(),
