Hey Tyson,
How we do call tracking depends on the client. If there's enough budget and we're running PPC, I like dynamic number replacement, which allows you to track calls based on the source, keyword, ad, etc that triggered the visit. Mongoose Metrics is a good one. The other one I've heard good things about but haven't used is CallRail (
CallRail Call Tracking Pricing & Sign Up | Call Tracking and Analytics). Mongoose pricing starts around $120/month. CallRail is around $30, I think the dynamic call tracking from CallRail is likely not as "dynamic" as Mongoose just because it comes with 10 numbers and you may need more than that to track to the keyword level.
If we want something simpler, we're using HostedNumbers.com for several clients and tracking paid vs non-paid only. Specifically, all our PPC ads have a query string attached that causes the site to plant a cookie. From that point on the visitor will receive a PPC-specific phone number everywhere on the site. HostedNumbers.com does have a basic dynamic number replacement implementation that's fairly cheap but I haven't used it yet.
Dynamic number replacement uses JavaScript to replace phone numbers on the site, but if you're not using that, consider writing some JavaScript to do it or using an image to show the tracking number to prevent any data issues. We have used plain text tracking numbers on site along with the real phone number and I've never seen any problems with it, but you may want to play it safe if at all possible.
I don't think those traffic numbers are abnormal for a local client. I'm looking at one of our clients now who got 580 visits in Sept, 13 form submissions, and 26 phone calls. I suppose it completely depends on the site, industry, location, etc, though.
We do have several local clients with much higher traffic numbers...3-5k+ per month. Mostly that's because they're doing offline advertising and they're more well known.