I set up an account with thingspeak.com - and created a single channel with one data field (Field 1) (WaterLevel) This also has a channel id - which I feel comes into play somewhere?
I also set up a MQTT device (LoftMonitor) Which has a long Id, password and is authorised to write to the channel data.
I wrote a small program that 'connects' both to the internet and to the thingspeak server (using IOTMadeEasyConnect()) It then attempts to write some data using PublishInteger.
This returns without error - however then nothing shows as entered on the thingspeak channel view (entries stays resolutely at 0)
I feel the issue is the Manufacturer\Series\Data1 entry in the IOTMadeEasy properties - but no combination of LoftMonitor, ChannelID, Field1, WaterLevel etc seems to work. (I've also tried forward and backward slashes as a separator

Ben's example uses a Raspberry pi -- and just has 'value' for this (and no WaterLevel on it's own doesn't work either)
Any suggestions - or should I repurpose a Pi?
I've replaced the password with password - but left the Client ID.. If you guess the password correctly then feel free to post some data

Oops left my SSID and password in there though - if you are passing please drop in and steal some data! Ok - removed them, but feel free to drop in anyway for a cuppa.
The eagle eyed will spot that I also tried using MQQTClient - and did leave a password in it's properties. Sorry - it's changed since then though.
Martin