I used to advertise in the local paper which was quite costly but I'd get 4-5 jobs (usually bread and butter jobs like overfilling cisterns/dripping taps) from each ad I put in.
Recently I tried Google Adwords, for the first month it was costing me £4-6 per day (£150/month!!) and I wasn't getting any calls at all from it.
I have refined my campaign recently which seems to be having a decent effect. I'm down to £1-2 per day and beginning to get calls.
When I first set it up I trawled the internet for advice and found almost nothing, there were some sites that wanted me to pay them to manage the campaign, and the other 'help' sites were either too confusing or too simple to be any help.
The main thing is to think what would a customer put into google if they wanted a plumber, and to not use words/phrases that would put your ad up against the big sheds.
For example, I had the word 'bath' as one of my keywords and it got clicked nearly every day, on some days a single click could cost £4.50, it took me a month to figure out why - b+q and other big sheds were competing for that word and they have the money to throw at advertising so it cost a bomb to go up against them and people wanting to buy a bath were clicking my ad, not people wanting a plumber. So I changed 'bath' to 'bath installer', I get a lot less impressions but only someone looking for a plumber will actually see my ad now so the clicks I get from it are far more likely to make the phone ring.
The same goes for all the basic keywords, like toilet, basin, shower, radiator etc. Before running any keyword on your campaign, Google that keyword and see if it brings up toolstation, b+q etc. If it does then change it.
You can also include negative keywords, which means that if one of those words is in the search query - your ad doesn't show. It's worth having a good think about those words and including as many as you think will prevent your ad coming up when the searcher is not wanting a plumber.
An example of some of my negative keywords is 'stockist, supplier, DIY, myself, easy to install, trainee'. That last one 'trainee' took me a while to figure out, I was getting increased calls from people on NVQ's etc. wanting me to take them on, I doubt they realised that every time they clicked on my ad it was costing me a couple of quid, so I included negative keywords to try and limit that.
There's also a 'cost to call' budget, that is where a potential customer is searching on a smartphone and calls you directly from the google ad, it's worth setting that to a higher price, the reason being that you don't pay unless the customer actually calls you, my call conversion rate is probably close to 100% meaning that I will generally get the job if the customer calls me, so it's worth paying for that call.
One thing I have a problem with is missed calls on my landline when I'm out working, almost every day when I get in - my answerphone is flashing but the caller didn't leave a message, I reckon they just moved on to the next plumber when I didn't answer, so I'm planning to get calls forwarded to my mobile from my landline, it's not cheap though and I'm trying to think of a way to limit calls from advertisers/trainees etc.. first.