Tracking Email Campaign Click Throughs in Salesforce.com

As you already know, Salesforce.com has a pretty good system for managing campaigns. You can send emails from those campaigns, among other things. They even have the native capability to track opens when the email is an HTML formatted email.

However, as great as all that is, there is no native capability in the Salesforce.com campaign system to track click-throughs (or "click-thru" depending on your preference). Now what I mean by that is that when you send an email to your list of recipients, you'll frequently have links in that email, inviting the reader to click through to your website or to various landing pages. The marketing manager is always going to want to know how many people clicked on a particular link. This is useful for testing and improving the marketing message. What do you do though if Salesforce has no native capability to track this?

There are some third party applications that can do this for you, but price a few of them - they'll run thousands and thousands of dollars - PER YEAR!

An Inexpensive Alternative

There is a better way! Well, by better I mean easier and less expensive.

Salesforce.com has what they call  "Sites." It is a system that lets you publish anything you desire from your Salesforce org publicly to the web. We use it for forms, for portals, for applications - for anything where you want to interact with individuals who are not license holders in your Salesforce.com org.

By virtue of that powerful system we can setup a method of tracking click-throughs. Here is how we do it. We setup sites so that you have a domain (like yourcompany.force.com). Then we deploy a page to your site, named something like "tracking", and on that page we have some code to manage the tracking of a view and a redirect to where you really want them to land.

So the site address would be:

http://yourcompany.force.com/tracking

Now, the key is what comes as a parameter on that page.

Use Salesforce Campaigns and Sites

In Salesforce, in a new separate object under the Campaign, we setup an object called "Email Link" or something similarly named. The main field on that object is an auto number field. After that we have two other fields, one is an input field where you enter the link that you want to put in your email. The other field is a formula field that returns the link you'll actually put in your email - which is completely different than where you want to send your reader. Let me explain.

In the email, there will actually be placed a link to your sites page, that link is similar to what I showed above. That link will also contain a parameter, so fully formed it looks like this:

http://yourcompany.force.com/tracking?LinkID=0004

The link ID is the auto number in the Email Link record that you setup.

So let's say you wanted to place a link in your email to www.greatcompany.com, but you want to track the click throughs. You'll make a record in your Email Link object under the campaign. One like this:


Now, instead of placing http://www.greatcompany.com in your email as a link, you place http://yourcompany.force.com/tracking?LinkID=0004 as a link instead.

Track Click-Thru Rates in Salesforce

On the sites page, when someone arrives there with the URL populated with that LinkID, the code can find the email link record associated with that number, find the actual destination link, and redirect them to the actual http://www.greatcompany.com link. BUT - while they are there, we'll track the fact that they arrived there and were redirected. Plus, while they are there we can pick up a few details about them such as their IP Address and Browser. All these details we save into a Click Through record. This record is in another custom object that lives under the Email Link object.

So the data model looks like this:

And then after people receive the email and start clicking through, you'll see those Click Through records appearing in Salesforce.com.


(You can see my example near the bottom of the picture above).

Report On the Click Throughs to Your Campaign

Those links can now be easily reported on using a custom reports that you can easily make in Salesforce.com.

Would you like to have this system? If you have a developer, then they can fairly easily build you such a sites page, the logic shouldn't be too difficult for them to figure out.

 If you'd like us to do it, we charge a flat rate of $1500 to install this system into your Salesforce org (an enterprise level org or above) and give you some training on how to use it and build you some reports to show those click throughs per campaign. We can even make some minor tweaks to the code if you need those. Most likely we could include that in the price quoted above. For more significant changes, we'll estimate those separately.

No Subscription Required!

That is a one time charge for our effort to install this system and get it setup for you - that means NO ONGOING SUBSCRIPTION FEES!

Would you like to discuss having us install this click through tracking system into your Salesforce.com org? If so, reach out to us at the contact us page at www.snapptraffic.com. We could have this installed and working for you in just a few hours.

Google Maps in Salesforce

A very common requirement for Salesforce.com subscribers, and our clients who we help to set it up, is to implement maps that incorporate data from their Salesforce org. Most clients meet this requirement by subscribing to a mapping application that is installed into their org.

The Downside of Subscription Based Applications

While these applications are powerful and generally have a boatload of features, they also come with a hefty monthly subscription that goes on and on for as long as you need those functions. Over time, the total subscription cost could far far exceed the cost of simply having the features you need developed instead.

Further, you are very likely buying features that you'll never need or use. You might want to consider another approach.

The Power of Custom Development

A recent project we did is a good example of why a company might want to have an application developed rather than buy a subscription. Our customer finds recruits to work in their client's business locations. The people they are looking for need to be in close proximity to the business.  They needed a Google map to show their Salesforce data in two specific situations:


  1. They needed to be able to find workers when a new job came up. When this happens they need to see a Google map centered on the business location with pins surrounding that showing the closest consultants, recruits, and leads. This required finding and displaying data from 4 different Salesforce.com databases on a Google map.
  2. Their second requirement was to see a Google map, again centered on the relevant business, showing possible replacement consultants and recruits near the business when someone doesn't show up. Again, this required finding and displaying data on a Google map from multiple Salesforce.com objects

To satisfy this requirement, we built several components into their Salesforce system. First we wrote a trigger on each Salesforce object (database) from which addresses would be mapped. These triggers would geocode (a number that represents the latitude and longitude of the address) the address found on the particular record. The trigger executes whenever a new record is created or the address is edited. This process speeds up operation and reduces the number of API calls made when the map is generated.

To display the maps, we gave them two options. The first option displays the map right in the page layout so that they see it whenever they look at the relevant record. The second option makes a link that opens the map into a new window when clicked. That link can be placed almost anywhere so that they can put the link in various relevant locations such as lists or reports.

Is Custom Development Expensive?

This project, built specifically to solve the specific requirements that this client had, cost about $2000 to have developed. This might seem like a lot at first glance, but a key thing to remember is that this is a one time development fee. We gathered the requirements with the client, wrote the scope, conducted feasibility, developed the code, tested it, and deployed it to their team.

They now own this code and will incur no further costs with regard to this system going forward.

If you have a requirement to place Google Maps into your Salesforce.com org to display data unique to your organization and want to have it made to suit your specific requirements without ongoing subscription costs, you may want to consider custom development. We can take advantage of any of the features provided by Google Maps while displaying your map either right in your salesforce org or on external pages launched from Salesforce.

The options are nearly limitless, but the key is that they are built to your specific needs.

If this sounds like something you require in your Salesforce system, we'd be happy to speak with you, listen to your requirement, and give you an idea of the cost to have us do it for you. You can reach us via the contact us page at www.snapptraffic.com.


Native iOS Mobile Applications Connected to Salesforce.com

The existing Salesforce1 application makes creating and deploying mobile applications super easy and we've done a lot of them at Snapptraffic. You can see a blog post we did about that a while back here. But Salesforce1 has many limitations, and in most cases we can write a native iOS or Android application for a mobile device to overcome these limitations.

Overcome SF1 Limitations by Going Native!

One of the biggest limitations to Salesforce1 for a mobile device is that for the most part it needs an internet connection to function well. There are a few offline capabilities, but they aren't very strong.



One of our clients has technicians that spend much of everyday in locations that do not have an internet connection. Their job assignments are made in Salesforce by a person working in the office and logged into Salesforce the typical way via browser, but the technicians are out on the road and logging into Salesforce from a computer is impractical, especially when they have their phones with them all the time (even if they don't have service much of the time).

Provide Offline Capability with Salesforce Native iOS Application

Not only did the technicians need a convenient way to see the jobs that they needed to do, they needed to a way to:

- Accept the job and confirm that they were going to take it
- See the details of the job and the assets against which they would be working
- Be able to log their conversations with on site personnel
- Log their travel and work time
- Update their status to indicate that they had completed the work or provide other feedback
- Perform inspections and fill out various forms

All this would frequently need to be done while offline.



To provide these capabilities we wrote a native iOS application designed for the Iphone since that is the device that their technicians have been given. (doing this for the Android is done the same way)

Salesforce Mobile SDK 

Salesforce provides a Salesforce Mobile SDK which gives us the tools to use Salesforce as the backend server to the Mobile device. So whenever we want to retrieve data from Salesforce and bring it to the mobile device or write data from the device back up to the Salesforce.com org, we can do so using the tools provided in the Salesforce Mobile SDK.



If you've used other mobile applications that sometimes expect to query data on the internet, you know how frustrating it can be when waiting for the application to make a connection attempt. It's like it never occurred to the designer that the device wouldn't have a connection at some point! We wanted to specifically avoid this frustration and instead built the Salesforce native mobile application from the ground up to only attempt a sync after testing that there was a connection or when the user specifically requested a sync.

Working off the Grid

So we wrote the application pictured in the images posted above that would let a technician sync their phones at whatever point during the day that they had a connection. Then as they worked throughout the day, both with and without connections, the phone would work without pausing to check for connections. The rep could do any work needed on the device. Making status updates, logging conversations, logging time, making notes for their work, doing inspections, filling out required company forms - all of it, from the convenience of the device without needing an internet connection.

Later when "back on the grid" they can open the app, go to the sync page, and see a summary of work completed offline that is waiting for sync, then by clicking sync the device will login to Salesforce and upload all the work done while offline. At that time it will also pick up any new assignments or changes to affected records and bring them down from Salesforce to the Mobile Device.

Are Mobile Applications Expensive?

A mobile application is generally going to be more expensive than writing a Salesforce1 application delivered to the device via visualforce - those are easy and cheap to produce, but again, with the limitations noted above. For a simple application with a few pages involved, the cost will probably be in the range of $10k-$15k. And obviously, as complexity and size go up, so will the effort and cost involved in producing it.

Get an Estimate for your Project

If you have a project that you're thinking of, we'd be happy to discuss it just to give you an idea of the costs involved. If you'd like to tell us your ideas and get a feel for the costs involved, visit www.snapptraffic.com and fill out the contact us form there. We'll schedule a call to discuss your project.

Zip Code and Time Zone Lookups in Salesforce.com

One of the projects we've built over and over in many forms in salesforce.com is the zip code lookup to return a city and state or the time zone lookup to get the timezone from a state or area code. These are similar projects in many respects.

In a nutshell, you have some input parameters, a custom object that contains those input parameters and the needed output, and a trigger on the target object that takes the input parameters, does a query against the custom object to find a matching record, and returns the needed data to the target object.

To get you past that gobbledygook I'll give a specific example of the city and state lookup from a zip code. The ideal place to put this functionality is on the lead object, but it could also be done from account or contact addresses.

So lets say that your reps are on the phone with a prospect and they need to enter the prospect's address. They'll get the street address, but instead of asking for the city and state, they could instead just ask for the zip code and leave the city and state fields empty.



Then when they save the record, a trigger from the lead object in salesforce will use the zip code to do a lookup against a zip code salesforce custom object. That object would contain a table filled with all the zip codes in the country, their state, and their city. Once the trigger found a match it would bring the city and state back to the lead object and populate those fields.

Another common request along these lines is a small visualforce page, either as a standalone page or a component that rests in the lead page layout where the address is entered. In this method, as soon as the zip code is entered the system grabs the state and city and populates those fields on the fly. The previously mentioned technique doesn't populate until the lead record is saved. As you can imagine, the salesforce visualforce zip code lookup component is more convenient and user friendly, but it would take a few more hours to implement given the need to create a visualforce page. If you're on a tight budget, you could get by with just the trigger, if you want the function to be a bit more seamless, then the visualforce component for the zip code lookup would be a better choice.

Another common need in salesforce is to determine the time zone automatically from whatever inputs you have available. Normally when speaking with a prospect you have a state and frequently you also have a phone number. From either the lead, account or contact addresses in salesforce, the state can be used to determine the time zone in most cases, but there are a few states out there that contain more than one time zones, like Florida, which enters the central timezone around Panama City. The area code can be used to fine tune the result. Zip codes can also be used to determine the time zone, you just need to obtain a database that contains the timezones by zip code. I found a few pretty quickly via google.

This project would be implemented using the same methodology as the zip code to city state system described above. In this case, the custom object would be called Time Zone and have fields for the inputs, so state, or area code, or zip code. A trigger on the lead object could take the inputs on save and find the matching time zone record and bring back the time zone into the appropriate field on your target object.

Likewise, a visualforce component could also do this if you wanted the timezone lookup to be populated on your lead page layout dynamically right as the inputs were populated. Again, this technique is going to cost more to implement, but it provides for a nicer user interface.

The beauty of salesforce, visualforce, triggers, apex, and the like is that via custom development we can solve these problems in whatever way suits you and your business processes best - and it doesn't have to break the bank. A trigger like described above would cost about $500, the visualforce component might reach $1200 or so. It all depends on the exact requirement, but that gives you an idea of what you might have to spend (with Snapptraffic anyway) to get this built.

If you're doing a project like this, or just need to have this done for you and would like our help, feel free to reach out to us via the contact us page on our website: www.snapptraffic.com. We'd be happy to help with this or any other custom development project or salesforce.com assistance you may need.






Using Salesforce to Leave a Voicemail Call

On-Demand Voicemail Drops

We're just finishing up a cool project where we wrote an integration to a third party call drop system that can leave a voicemail in a client's voicemail box. The third party call drop system is a super sophisticated calling platform that has the means to make a call and leave a voicemail at any phone number.

Our client was already using this third party calling platform and having good success with various campaigns of automated calls. But he wanted to take it to the next level.

Leaving Automated Voicemail Messages from an Opportunity

His goal was to be able to record messages that were pertinent to prospects at various points in their opportunity pipeline. For example, maybe they had delivered a proposal to a client and wanted to leave them a voicemail 3 days after doing so to ask them to take the next step. My client had many scenarios where they wanted various messages left.

The key idea: these calls and voicemails were relevant to where the prospect was in the sales process, and since the sales process is managed and tracked in Salesforce.com Opportunities, tying the voicemail call drop to opportunity stages and days in those stages was a critical component of the system.

Custom Solution for Salesforce Voicemail Drop

The third party voicemail call drop system had an API, so it was a simple matter to write code in Salesforce.com that would be able to pass the necessary details to the call drop system. We had to pass the phone number to call and the voicemail message that was to be dropped.

We also wanted to be able to control the time of day that a call was dropped so that we could leave voicemails at appropriate times throughout the business day and also to spread out the calls so that they weren't all dropped at the same hour of the day.

To accommodate all of these requirements, we wrote a process in Salesforce.com that would execute every hour from 9 am eastern through 9 pm eastern, it would evaluate all the open opportunities and compare those to a configurable table of stages, days in stage, the call hour, and the timezone of the prospect. That process would assemble a list of contacts and their phone numbers to call. These phone numbers would be passed into the calling platform and a response would be received from the platform acknowledging receipt of the call request.

After the system received a response indicating the call was successfully passed into the calling platform, an activity would be created stating who was called and the message that was left.

On-Demand Voicemail out of Salesforce.com

To take this system even further, we wrote a visualforce page that would allow for the creation of an activity containing the command to drop a call. This allowed reps to drop a voicemail on demand. They would request a voicemail to be left and the salesforce system would immediately drop that voicemail to the selected prospect.

Salesforce Workflow Rule Initiated Voicemail Messages 

By using activities in this way, it also opened the door to using workflow rules to drop calls. Now whenever my client has an idea for a new voicemail message, maybe to ask the client for some missing information on a deal for example, he can create the voicemail, create a workflow rule, and have that voicemail message dropped whenever that field is empty. Using these techniques the possibilities are endless.

In a nutshell, our client can now leave a voicemail message initiated by Salesforce.com based opportunity stages, the creation of activities by a rep, or just the use of a workflow rule.

Your Custom Salesforce.com Voicemail Drop Solution

Do you have a similar requirement, or even a completely different set of requirements around the dropping of voicemails? Note that this was an entirely custom solution based around his exact requirements, but due to the power that Salesforce.com gives us to write custom solutions, this was an inexpensive system to build. We can do the same for you.

Low Cost Solution with NO Long Term Subscriptions

While we've found a few other automated systems that can do some of these similar functions, they normally come with an expensive subscription. Our custom solution will probably be in the price range of a single year of those other off-the-shelf solutions - after that you own it. So pay us once to build the system you need, then you own it forever with no ongoing subscriptions. Further, since its a custom solution, you are only buying what you need and you're getting exactly what you need rather than paying for functionality in the off-the-shelf solution that you won't be using.

Snapptraffic Consulting is Here to Help!

If you'd like to discuss the possibility of having something like this built for your Salesforce.com system, reach out to us at www.snapptraffic.com. Interacting with us is easy and our solutions are cost effective. We'd love to hear about your project, discuss your ideas, and give you a quote.

Salesforce and the Internet of Things (IoT)

The Inevitable Advance of IoT

If you haven't yet heard of the Internet of Things (IoT), you will be soon! The movement in that direction is inevitable. With the propagation of wifi and cellular networks, and the fact that an internet connection point is available at almost any point on the planet, it is now possible to connect devices to the internet almost anywhere and have those devices either reporting to or being controlled by office computers in distant locations. It is expected that there will be 20 billion "things" connected to the internet by 2020.

IoT Devices Now Talking to Cloud Based Systems like Salesforce.com

Further, with the incredible momentum of cloud based software systems like Salesforce.com, we are now at the point where devices out in the field, attached to any type of equipment, can be controlled via these cloud based systems or collect data and report that data back into that cloud based system. This means that a person from a laptop or any mobile device can monitor or control devices anywhere they might be physically located.

As Salesforce.com Partners, we spend every day using the capabilities of Salesforce.com to solve the business problems of our clients. We've been watching the market carefully for the emergence of the various tools, services, devices, and methods needed to make the IoT a reality for our clients.

Measure, Record, and Report on Any Parameter

The technology has advanced to the point now where we can install inexpensive devices on nearly any kind of equipment and have that device be controlled by systems in Salesforce.com or have the device measure nearly any parameter such as temperature, motion, location, air quality, or vibration - just to name a few, and have those parameters be received by Salesforce and have action taken in Salesforce based on the data received.

Further, given the powerful reporting and analytics tools available in Salesforce.com, we can build intuitive reports and charts of nearly any type, providing insights and information from connected equipment never before possible.

Great Customer Support & Increased Sales!

One of the most likely scenarios where this might be used is to have a sensor installed on a piece of equipment that a company sold to their client. By placing various sensors on this equipment, the company can now monitor its performance and automatically create cases in Salesforce.com if certain limits are reached.

A company that sells conveyor belts might measure motor vibration, and when a vibration limit is reached, open a case in Salesforce and send a technician to the location to perform maintenance.

This can also be an important way to increase sales given the fact that when limits are reached, billable service work can be initiated or new equipment or parts can be sold, in many situations long before the customer would have had a breakdown, with the ensuing downtime and frustration, and sought out a replacement, possibly from a competitor.

Custom IoT Solutions Against Salesforce.com

The key tools are now in place and we're using them to connect devices (or "things" in the IoT vernacular) to the internet via wifi signals and routing the input or output to Salesforce.com.

The data from these devices can be recorded in Salesforce against an Asset (or any database) so that a record of its performance is kept. We can test that data against any limit established on the Asset and take any action upon the passing of that limit.

Given the extreme customizability of Salesforce.com, we have the tools to develop nearly any page, database, process, or function needed and have it operate, analyze, and respond to the data being received. We're already developing custom user interfaces in Salesforce that give users the means to control remote devices in far away locations as well as measure and respond to the data collected by sensors, all in a completely custom way, based on the needs of the business and their clients.

Even Insert Human Intelligence

Another super exciting development that we are starting to explore is the incorporation of human intelligence into IoT Solution. For example, let's say a business owner in a retail setting wants to send an SMS/text to his backup staff if the number of patrons on the retail floor exceeds 30. We deploy a wi-fi or 4g enabled camera facing a retail floor that takes snapshots at specified intervals - say every 5 min, pictures are sent to real time crowdsourcing platforms to analyze, and the crowd answers a question of Y/N - does the number of patrons exceed 30. Then these values are programmatically returned to the system in order to trigger alerts - say a text message or a Salesforce Case. These crowdsourcing platforms can actually be programatically incorporated into salesforce visualforce systems, so our code asks the crowd this question, a few people from the crowd answer the question, the answers are returned to salesforce, which then takes the appropriate action.

Get Help with Your IoT Project

Do you have a "thing" you want to control or monitor from your Salesforce.com instance? We'd love to hear about your project and discuss how we might be able to assist you with an IoT setup to communicate with Salesforce. You can reach us through our website at www.snapptraffic.com


Lightning Has Struck – Introducing the New Salesforce Lightning User Interface


They say lightning doesn’t strike the same place twice, but that single lightning bolt sure makes a huge impact! Here at Snapptraffic, we work with Salesforce all day long, and it isn’t often that we learn about something new that makes us all say “WOW!” But that’s truly the case with the new Salesforce Lightning User Interface (UI). We’re excited to share some of these new features with you.

So, what exactly is Salesforce Lightning?

The Lightning Experience is not new. It’s been a multi-year mission for Salesforce that started with the Salesforce1 Mobile App and its underlying Lightning framework, which are the building blocks for the new Salesforce Lightning UI. The new Salesforce Lightning UI will include a new skin, system, and set of functionalities. It brings a reimagined, modern and efficient design to Salesforce users across every device – desktop, tablet and mobile.

Why the upgrade?

This upgrade isn’t just a flashy new skin, but it also aims to improve ease of navigation, data entry, and usability for everyone. The new interface helps users get a more comprehensive snapshot of their work progress without having to analyze the data piece by piece. For example, the new view of Opportunities is great for moving prospects through the sales pipeline and analyzing work stage by stage.


What will be new in the Salesforce Lightning UI?

New Navigation Tools

Instead of the tab bar across the top, you’ll see an intuitive navigation bar, complete with a new Assistant menu on your homepage to help you pick up right where you left off.

Customizable Dashboards

Salesforce really took customer feedback to heart, because there are huge enhancements to the dashboards, including a completely responsive interface with more attractive colors. We’ll even have up to 9 columns instead of only 3!

Activity Feed

Salespeople want to know two things – what just happened in an Account and what they need to do next. The new Activity Feed will do just that.

Opportunity Enhancements

With huge enhancements to the Opportunity view, take a quick glance at your entire pipeline by stage, and even drag and drop Opportunities from one stage to the next!

Usability and Contextual Hovers

The advanced hover functionality allows for editing within the hover pop-up, allowing the user to avoid navigating away from their primary work page. Even drag and drop people and deals from stage to stage. You can see everything going on with a customer without going to different pages in the application.

Let Snapptraffic help you get started with Lightning

Our team of developers is well-versed in Lightning App Builder, Lighting Components, and the Lightning Design System to customize Salesforce to meet your company’s specific needs and take advantage of all of these new features. If you’re ready to get started with Salesforce, now is an ideal time. Here at Snapptraffic, we’ll be excited to get you up and running on Salesforce so you can take your CRM to the next level, including the new Lightning UI. Feel free to contact us at http://www.snapptraffic.com/contact-us.html