Where am I going wrong here? I can only get the session to display the message if I use session()->put()->save() but then I struggle to clear it properly.
So you can't flash anything on an ajax request. An ajax request happens on the background and doesn't update the session of the webpage, so it also won't show the message on your page.
If you do an ajax request and want to show a flash message you should handle that on the javascript side