How to Set Up Keyword Level Tracking with Marchex

Marchex is a great call tracking system. But their documentation isn’t as thorough as it should be, in my opinion. In fact, when it comes to keyword level tracking, there isn’t any documentation at all.

So, when I had to set up keyword level tracking for a client, I called Marchex’s support. Their support is great. They answer quickly, usually have an answer for you immediately and can take care of whatever you need instantly. But in the case of keyword level call tracking, they may not be as familiar with the system as perhaps they ought to be in order to help clients get everything set up right.

Anyway, after some trial and error, I got the keyword level tracking set up and working. Here’s how to do it.

How Keyword Level Tracking Works

With keyword level call tracking, Marchex gives you a “pool” of numbers that are dynamically assigned to each session. In other words, for each visit, Marchex pulls an available phone number (i.e. one that’s not already in use by another visitor) from your pool of numbers. You could think of it kind of like giving each visitor his own temporary phone number. When he lands on the site, Marchex gives him a phone number. The phone number is exclusive to him for as long as he’s on the site. Once he leaves the site, Marchex takes the phone number from him and returns it to the pool so it can be given to a different visitor.

Originally, I thought that Marchex would access the keyword (or more accurately, the search query) automatically from the referer HTTP header.

Sign Up for Keyword Level Tracking

I don’t think keyword level tracking is part of the Marchex standard contract that most people sign up for. So, if you didn’t add it into the mix when you signed up with Marchex, the first thing you need to do is call Marchex and get KWLT added to your contract. I don’t remember the details but it’s definitely a different pricing model.

Enable Keyword Level Tracking

It’s not enough just to sign up for keyword level call tracking, you also have to have them “enable” it on an account by account basis. If you don’t have keyword level tracking enabled for a client, you’ll see this when you navigate to the client’s account.

No Keyword Level Tracking Link

So, you’ll need to get on the phone with Marchex. Once they enable keyword level tracking for whatever client accounts you want, you’ll see a Keyword Level Tracking link.

Keyword level tracking link


Create the Ad Campaign

new-campaignAs you probably know, Marchex refers to phone number campaigns as “ads.” Navigate to your client’s account and click on the “Keyword Tracking” link. By default you should be in the “Campaigns” area. But if for some reason you’re not, go there. Create a new ad. Notice that all you need to do is choose the “Group” and give the ad a name. Unlike with a “standard” ad, you don’t choose a phone number.

Set Up the Javascript Rewrite

The next thing you’ll need to do is set up the JavaScript rewrite. While you’re still under the “Keyword Tracking” area, click on “Rewrite Rules.” Add a new rewrite rule.

Select your keyword tracking campaign.



Specify the “referring domain” for the _vsrefdom parameter. This is part of what will trigger the JavaScript rewrite.



In the last step, if you don’t want to use any of the URL parameters that Marchex looks for by default (q, p, kw, etc.) you can specify whatever URL parameter you want to use to trigger the JavaScript rewrite.



Of course, you’ll need to grab the JavaScript from the textarea at the bottom of the page and add it to your client’s site.

Add Query String to URLs

Just like with “regular” Marchex campaigns, you’ll need to add the _vsrefdom parameter to any URLs you’ll be tracking if you’re not going to use the actual domain of the referring site. For example, if you’re going to track traffic from Google AdWords, you might use something like:



What I didn’t know was that you also have to add the keyword parameter to your URLs. Marchex apparently doesn’t retrieve this from the referer HTTP header field. Fortunately, with AdWords it’s fairly easy to pass the keyword through to your destination URL. Simply use the ValueTrack parameter:



Google will replace the ValueTrack  parameter with the keyword that triggered your ad.

In your query string, set the parameter name to one of the names that Marchex looks for by default (e.g. “kw”) or, if you specified your own parameter name when setting up the rewrite, use the name you specified. Then set the value of the parameter to {keyword}.

So, your complete Marchex query string would look like:



Add that to the end of your URLs in AdWords and you should be good to go. Of course, you should test it by loading a page on your client’s site using your query string.


Related Posts

Leave a Reply