diff --git a/app/Desktop/Portal.hs b/app/Desktop/Portal.hs
--- a/app/Desktop/Portal.hs
+++ b/app/Desktop/Portal.hs
@@ -13,7 +13,7 @@
 import Control.Concurrent.MVar (newEmptyMVar)
 import Control.Exception (onException, throwIO)
 import Control.Monad (when)
-import DBus (BusName, InterfaceName, MemberName, MethodCall, ObjectPath)
+import DBus (BusName, InterfaceName, IsVariant, MemberName, MethodCall, ObjectPath)
 import DBus qualified
 import DBus.Client (Client, MatchRule (..))
 import DBus.Client qualified as DBus
@@ -30,7 +30,7 @@
 data GetUserInformationResponse = GetUserInformationResponse
   { userId :: Text,
     userName :: Text,
-    userImage :: Text
+    userImage :: Maybe Text
   }
   deriving (Eq, Show)
 
@@ -84,10 +84,10 @@
       resMap
         | Just userId <- DBus.fromVariant =<< Map.lookup "id" resMap,
           Just userName <- DBus.fromVariant =<< Map.lookup "name" resMap,
-          Just userImage <- DBus.fromVariant =<< Map.lookup "image" resMap ->
+          Just userImage <- optionalFromVariant resMap "image" ->
             pure GetUserInformationResponse {..}
-      _ ->
-        throwIO (DBus.clientError "getUserInformation: could not parse response")
+      resMap ->
+        throwIO . DBus.clientError $ "getUserInformation: could not parse response: " <> show resMap
 
 openFile :: OpenFileOptions -> IO (Request [Text])
 openFile ofOptions =
@@ -100,8 +100,8 @@
       resMap
         | Just (uris :: [Text]) <- DBus.fromVariant =<< Map.lookup "uris" resMap ->
             pure uris
-      _ ->
-        throwIO (DBus.clientError "openFile: could not parse response")
+      resMap ->
+        throwIO . DBus.clientError $ "openFile: could not parse response: " <> show resMap
 
 sendRequest ::
   InterfaceName ->
@@ -181,3 +181,11 @@
   where
     escapeClientName =
       map (\case '.' -> '_'; c -> c) . drop 1 . DBus.formatBusName
+
+-- | Returns @Just Nothing@ if the field does not exist, @Just (Just x)@ if it does exist and
+-- can be turned into the expected type, or @Nothing@ if the field exists with the wrong type.
+optionalFromVariant :: forall a. IsVariant a => Map Text Variant -> Text -> Maybe (Maybe a)
+optionalFromVariant key variants =
+  case Map.lookup variants key of
+    Nothing -> Just Nothing
+    Just var -> Just <$> DBus.fromVariant var
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,6 +1,7 @@
 module Main (main) where
 
 import Data.Default.Class (def)
+import Data.Maybe (fromMaybe)
 import Data.Sequence (Seq)
 import Data.Sequence qualified as Seq
 import Data.Text (Text, intercalate, pack, unpack)
@@ -133,7 +134,7 @@
         [ label "Request successful.",
           label ("User Id: " <> response.userId),
           label ("User Name: " <> response.userName),
-          label ("User Image: " <> response.userImage)
+          label ("User Image: " <> fromMaybe "[none]" response.userImage)
         ]
 
     openFileAlertContents files =
diff --git a/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml b/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
--- a/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
+++ b/assets/io.github.Dretch.MonomerFlatpakExample.metainfo.xml
@@ -23,6 +23,7 @@
   </screenshots>
 
   <releases>
+    <release version="0.0.5.1" date="2023-04-10"/>
     <release version="0.0.5.0" date="2023-04-09"/>
     <release version="0.0.4.0" date="2023-04-07"/>
     <release version="0.0.3.1" date="2023-03-11"/>
diff --git a/monomer-flatpak-example.cabal b/monomer-flatpak-example.cabal
--- a/monomer-flatpak-example.cabal
+++ b/monomer-flatpak-example.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.12
 name:          monomer-flatpak-example
-version:       0.0.5.0
+version:       0.0.5.1
 license:       MIT
 license-file:  LICENSE
 maintainer:    garethdanielsmith@gmail.com
