Integrate Quickbooks with

If there is one request that seems to get asked more than anything else here at Snapptraffic Consulting, it is integrating with Quickbooks. We have implemented the Quickbooks to Salesforce integrations over and over in lots of different ways for years. Our typical integration is custom; meaning, it it unique to the way the client has configured.

There are third party applications that can integrate Salesforce and Quickbooks using the standard opportunity and product objects in Salesforce, but we find that most of our clients have a some small issue that renders those options not desirable. For example, maybe they aren’t using the products database.

In order to have maximum flexibility of objects on the Quickbooks side and Salesforce side, a custom solution ends up being the only way to go. 

Building a custom utility as described below, allows us to pull any Quickbooks data, including Estimates, Invoices, Sales Orders, Purchase Orders, or Payments. It also gives us the ability to write this to any Salesforce object - Accounts, Opportunities, Products, Custom Objects, etc.

In one of our recent integrations we wrote a C#.Net utility that pulls data via the Quickbooks Webconnector. We could have also pulled data directly from the Quickbooks API (this choice depends on how Quickbooks is hosted.)

The same utility sends the data to Salesforce via the API if the client is on Enterprise edition of If they are on a lower edition of Group or Professional, then we can use Jitterbit to pass the data into Salesforce.

The utility can reside on the same server that Quickbooks resides on, or be put on another server. The server must be a .Net Framework 4 installed, with SSL.

This is just one of the many ways we’ve found ourselves integrating Quickbooks and 

Are you facing a to Quickbooks integration? Want some help? We’d be glad to have a conversation about your project and tell you your options and likely costs to make it happen. For more information about how Snapptraffic Consulting can help you implement a solution like this, feel free to contact us at Document Generation with Drawloop

For years we've been suffering through the creation of documents for our clients. The tool sets available just weren't that great. Initially, the only tool available was the built in Salesforce Mail Merge. This made it possible to create a word doc and merge data from a salesforce record into the document. This technique had serious limitations, a few of which are:

- there is no inherent functionality to store the created document back into salesforce in association with the originating record.
- there is no inherent functionality to send the created document via an email or to simply have the rendered document loaded as an attachment against an email
- Salesforce Mail Merge didn't work on a MAC!
- You can't draw data from records not in direct association with the originating record.
- You couldn't easily choose to have the document rendered as a PDF.

Once Visualforce was released, we generally solved these problems by writing Visualforce pages, invoked from a record like an opportunity, that would create the needed document, store it against the originating record, load it as an attachment against an email, and render the document into a new window. This worked really well, but for one document at a time. Meaning, if a client needed a stack of documents, or many different documents (insurance companies for example), then producing these various documents was normally too expensive to do via Visualforce.

A while back we started hearing more and more about Drawloop. When we finally started digging into it we learned that Drawloop made it easy to produce many documents, and without ANY of the limitations inherent to Salesforce Mail Merge. It can produce any document type, works from any platform, can store rendered documents as attachments against the originating record, plus it can email the documents or email them preconfigured for e-signature.

We learned later that they even have tools that will produce "Dynamic Document Packages" which are essentially packets of documents that are dynamically created based on the needs of the user. What really blew us away was that the system could incorporate information from salesforce to determine various conditions that would determine document requirements. For example, an insurance agent may need to include a particular form when a home owner has a pool. Drawloop logic could be written to see if that condition exists and then automatically include the form when needed.

Our biggest problem was trying to learn how to use all of the features! We started talking to the Drawloop folks and decided to get certified as Drawloop Support Partners.

If you find yourself in a situation where you need document generation out of, Drawloop is probably for you. Produce as many documents as needed of any format populated with merge fields from your database while storing the documents back into and sending the documents via email or for e-signature. It's a winner.

If you need help getting Drawloop configured to do all of these things for your company, we'd be glad to help. We are a Consulting Partner and can help you with just about any dilemma you might have, including document creation, storage, and delivery. You can reach out to us at for more information about consulting help with Drawloop or anything else Salesforce related.

Salesforce Drip Marketing - an Inexpensive Application

We wrote a blog a while back describing how you might design and build your own Salesforce Drip Campaign system (also known as a touch marketing campaign, email autoresponder, or automated email marketing). You can read that blog here.

Given the interest in that topic, we decided to just go ahead and write the application and make it available to our clients. Here is a link to our website where you can purchase that application if you are interested. I thought I would take this opportunity to explain the application, more of the technical side.

What is Drip Marketing?

In case this term is new to you, let me provide a quick explanation of what a drip marketing campaign is. The main idea behind drip marketing is a steady “drip” of scheduled prospect touches based on a start date. A “touch” might be an email, a call, a direct mailer, a visit – whatever you think might help the prospect take a step towards buying your product. It may also be referred to as a "Touch Campaign"or "Automated Email Marketing" or even "Auto Responder". Many terms have been applied to this concept, but the main idea is the same: send emails to your prospects automatically on a schedule. Since it is easy to do so, our application also includes, in the same process, the means to schedule tasks for your users.

Drip Marketing Methods

There are a few different ways that a Salesforce Administrator could provide their marketing team with the means of sending out emails or scheduling calls for their reps automatically based on a given start date. The least expensive approach is to use time based workflow rules which are already built into While this is possible, it is cumbersome and not very versatile. You end up having to create a lot of rules and if you want more than one "track" into which a given lead/contact is associated, it gets doubly complicated.

There are several third party applications available via the app exchange that have a built in capability to do drip marketing. The main downside of these is their complexity, the fact that they are not native to, and their cost.

The Snapptraffic Drip Marketing Application

Which brings us to the idea of the custom application. We have written this application in various forms many times over the years. Sometimes it was geared toward an opportunity, sometimes it was used to create jobs that internal reps would do on behalf of their clients - but the main idea was the same: schedule the auto creation of tasks and the auto sending of email notifications.

If we were going to make an application more universally useful, then we figured it should be based on the Campaign object and be able to create emails and tasks for Salesforce Users against Leads and Contacts which they own.

To this end, we made a custom object called "Autostep" which has the Campaign object as its parent. This autostep object has two record types: Email and Task. It also has other fields relevant to their respective type. Relevant to both types is the "Day" field. This field is the day upon which the step will be executed, resulting in either the creation of a task or the sending of an email.

If the campaign is active and their are properly formed autostep records under the campaign, then when a lead or a contact is added as a member of that campaign, the associated steps will be executed on the relevant day.

Salesforce Scheduled Batch Process

The Salesforce system utilized that makes the task or sends the email is scheduled batch apex. We have written a script of code that looks at all the active campaigns, determines if there is an autostep record associated with the campaign, then finds all leads and contacts that were made members of the given campaign. The day field of the autostep is used to find the member creation date, which is simply the date that the lead/contact was added to the campaign. The leads/contacts with that member creation date are the targets for that autostep. In the case of tasks, we also incorporated the means to provide a user with "work days", which means that the task is created a certain number of days before its due date to give the user time to accomplish the work.

Then based on the record type, the appropriate action is taken. If the autostep record type is email, then the system retrieves the email template noted on the autostep record, populates the merge fields for the target leads and contacts, then sends the emails. We also have the system create an activity history at that time. When the record type is task, the system creates the task, uses the subject line of the autostep to populate the subject of the task. Comments in the task come from the comment field of the autostep. Notification of the new task is made to the user if that is selected on the autostep record. These tasks are created as open tasks initially and when completed by the user are moved into history.

Power of this Method

Using this simple approach (autostep object and batch process), we can easily add and remove leads and contacts from any drip campaign by adding them as a member to the appropriate campaign. The system will automatically take care of the rest. You can use any automated or manual method to move your leads and contacts into and out of these campaigns. Web to Lead forms can be configured to do an auto association to a campaign, and once configured that way, can allow your leads to automatically be dropped into the drip campaign. Once a user makes contact and begins the sales conversation, a trigger could be written to automatically pull the lead from the campaign. This could also be done manually by the sales rep if desired.

It might be desirable, for example, to associate a lead on a certain "track" (Campaign) until someone is able to make contact with them, then upon initial contact, assign them to a different track. This method makes it simple to move your targets from track to track as their relationship with you changes.

Get the Application

If you would like this application, please contact us. Again, you can reach us here. We will install the application for you and even spend some time on the phone teaching you how to use it.