Our Blog.

I’ve been playing around with intercom.io recently as a way to track activity in apps and have been very impressed with it’s capabilities.  I imagine most people using it are running apps they’ve written so probably do a bit more customized integration, but we’ve been running it in WordPress apps, and it is an incredible tracking tool.  Here is how I do tracking of page visits in WordPress with Intercom.io.

Recently we wanted to track page views logged in member, and I thought I’d share how we did it to make this easy for folks in the future.

First off, I installed Code Insert Manager which is a great little tool that lets you add php and javascript code wherever you want on a page and on any page or set of pages (or all pages) on the site. Also – I should mention if it isn’t obvious, that I’m using the Intercom for WordPress plugin to do the Intercom.io integration in the first place.

Then, I went and activated a new code block sitewide, and put this in there:

That pulls the page slug and records it as an event – nice and simple.

So, I’m going to tell you a little story about PowerPay, First Data, and Stripe. Call it my Saga. I am publishing this in hopes that you read it and never, ever do business with PowerPay.

Let’s go back to square one.

PowerPay is a credit card processing company. They are recommended and pushed by Infusionsoft for some unknown reason – probably somebody is friends with somebody. In many ways it is too bad, because I love Infusionsoft, and I wish they had never introduced me to this friend.

To be fair, I’ve processed credit cards with PowerPay for years. It all started when I decided to get official and set up a corporation. To do that I needed a new merchant processing account. So I called my processor – PowerPay – and asked them if I could set up a second account. I explained in detail my situation. I explained I needed to keep processing on the old account until the new one was up. I explained I didn’t even have a bank account for the new business yet as it wasn’t starting until January 1st, and this was early December.

They assured me it was all fine. They then proceeded to create havoc. They created the new account. They shut down the old account. They started processing all transactions that should have been going into the old account through the new one, but they weren’t depositing them anywhere, because, as I had told them, that bank account wasn’t set up yet. So then, even though they told me it was impossible, they started depositing the new corporations funds into the old corporations bank account.

This is an accounting nightmare.

I called to explain to them that this was all wrong, and this is where it gets good. The guy on the other end yelled at me. I calmly told him exactly what had happened, and he yelled ‘You’re Wrong!’. I said ‘Really, I’m wrong? I don’t think so. I’m just telling you exactly what happened to my accounts. It is all trackable.’ and he yelled ‘You’re Wrong!’. This happened something like four times in a row (in a minute). I couldn’t really believe it.

Here I thought I was their customer. I’d been processing over $150,000 a year for years through their company. I had NEVER had a single chargeback – I’ve only had one chargeback in 15 years of business, and that was before I was with their company.

To cut a long story short, they also had been holding 10% of my funds as a ‘high risk’ business (with a history of zero chargebacks), and were supposed to be releasing it on a rolling 6 month basis, but weren’t. They were holding $14,000 of my funds when we talked. I asked how to get that – well, I had to cancel the account, and then they’d ‘review my file’ and let me know when I could have the money that was mine.

To sweeten the deal, it cost me $250 per account to cancel – so $500 down the tubes – half of it on a new account that I was never able to use because of their idiocy, and half of it on an account they cancelled when I asked them not to.

The saga continues.

I decided to move on with my life. My bank recommends First Data, and I called them to set up a merchant account. The sales process was smooth, the guy was really nice. I explained in detail my situation. I told him I process one high ticket item a month, and the rest is mostly $20 to $100 transactions. I explained I needed to be able to process the one high ticket item – he said no problem, the account was set up in two days, and I breathed a sigh of relief.

Then I processed the high ticket item – and it came through! And then two days later, after I’d paid people and moved money around – they pulled it back out! Awesome – so I called their security department, who then told me they had to cancel my account because I violated their terms. I have a contract with a high amount over the high ticket I processed. WTF? Not question – account cancelled.

Now, I asked what I thought was a reasonable question – you took money from my client, put it in my account, took it back out of my account- now what? Are you going to refund the client? Or are you going to settle it back into my acccount?

‘All I can tell you sir is you should call your bank and reject the withdraws we made’ says Colleen Lewis (oh yes, at this point I started taking names.

I said, but is that going to put me into a compromised situation? I want do do this above board – how can we handle that?

I can’t even begin to get into this – I tried to ask this simple question 8 times, really wanting an answer (any answer), but all I got was:

‘All I can tell you sir is you should call your bank and reject the withdraws we made’

Yep – eight times in a row, and then she hung up on me.

Next day, she calls me (I’d left a voicemail with her the previous day). Doesn’t really remember who I am. I say ‘remember me? we talked in some length yesterday.’ I’m almost crying. I say ‘Please don’t hang up on me, I have one question I really need answered. You took money from my client. I rejected the charges like you said. Are you going to refund my client, and have me owe you money, or are you going to settle this one charge?’

This is the same question I asked the day before. She says – we are going to settle that charge. I didn’t ask why she didn’t tell me that yesterday.

So now I’ve had three accounts closed by rude idiots in two weeks.

Enter Stripe. I had set up a stripe account and run a $4,000 transaction in the middle of this as a test. It went through without a hitch, and showed up in my bank account exactly when they said it would. Since then I’ve pushed several more through – no problem.

On the down side, there is no ‘built in’ integration with Infusionsoft, so I have to do a bit of manual labor to move into this system, which is why I didn’t in the first place. And I’m paying StripeyFuse $300 / year for their integration, which isn’t perfect, but is good enough.

But hey – this is a program you can sign up for in 2 minutes, their customer support answers your questions, and it works, and no one yells at you! Yaay Stripe.

May I recommend everyone go out, migrate to stripe, and close your traditional merchant account. I don’t know what makes these companies believe that they can act the way they do, but in my opinion, it is completely unacceptable. I am the customer. They are making thousands of dollars a year off of me. They should be treating me well. When they no longer believe that, they should be put out of business.

Sorry for the rant. If you want to move to Stripe and find it confusing, post a comment and I’ll help you.

What is version Control?

You aren’t a programmer.  You aren’t any sort of developer at all.  Somebody recommended you put your code under version control.  WTF?

Here is the short, plain English version of what that means.

Version control is a way of tracking
the history of changes to code.

Your website is made up of code.  The page you are looking at, if you click on ‘View Source’ in your browser, is a whole bunch of code.  To understand version control, let’s look at the typical non-controlled system.

  1. Your site lives on a server
  2. You ask your web developer to change something
  3. They download the relevant files via FTP, edit them, and re-upload them
  4. They forget to check the site, and not something is broken
  5. You call them after you notice it three days later because customers are complaining, and they look into it.
  6. Since three days have passed, they forgot where they were, and it takes them a while to find what they were even working on, not to mention fix it.  Meanwhile, your site remains broken.
  7. The developer finally finds it, fixes it, uploads it, checks your site (more thoroughly this time because they are nervous now), and it still doesn’t work.
  8. They tweak it one more time, upload it, and now it works – great!
  9. They get hit by a bus
  10. You hire a new developer and ask them to do one small tweak to that same change the last developer did.  It takes them three days to download all of your code, find the spot you are talking about, do the attempted fix and upload it.
  11. Return to step 4…

or something like that.

Or just recently, this really happened to me and a new client.  They asked me to look at their code.  They gave me FTP access.  I logged on to look around while talking on the phone with them at 10pm.

The next day they called me and told me that their entire registration process had been deleted by me!  Wow – I must have accidentally hit delete, not gotten any sort of confirmation from my FTP client.  Almost lost the client over that late night mistake.

So, that is the problem version control solves.

How does version control solve my problems?

This is how version control works.

Version control works with code repositories.  A code repository is a  cloud hosted version of JUST your code.  Not your site’s images or database, but the code that runs it.  Here is how version control works.

  1. You take your existing site, and push it into a ‘code repository’.  This is basically an exact copy of all of your code as it is right now.
  2. You invite a coder (like me) to work on your code.  You share access to your code repository with me.
  3. I work on the code on my local machine.  When I think I’ve fixed it, I push my changes back to the repository.  They are noted with my name, email, time of change, and the exact changes to the code.
  4. A designated code controller (or just the programmer if you are a small operation) then pushes those changes to a live test site.  This site is on the same server setup and is in every way a clone of your existing site.  If changes work here, they will work live.
  5. On the test site, we notice something not working.  I go back to step 3.
  6. Once the code is tested and working on the test site, we push it to the live site.
  7. IF it doesn’t work on the live site for some huge and mysterious reason, we instantly roll back changes with one click and go back to step 3.  If it does work – we are golden.
  8. I get hit by a bus.
  9. Your new programmer comes in, and can instantly see what lines of code I’ve changed, when I changed them, any notes I left on those changes, etc.  They instantly pick up where I left off.

Then, you NEVER ftp into your website again to make a change.  You have no possibility of deleting things by accident.

This still doesn’t hit your live site.  Then, a controller (usually you’ll have one person in charge of taking code live, but if you cycle through developers anyone with your login information can do it for you) will review the code, make sure it makes sense, and then…

Now, if at any point your code breaks, there is no ‘what did you do’ or ‘oh, a previous developer did that, do you have their contact info?’.  Instead, every change to your code is documented by date, person who made the change, and exactly what changed. If you take code live and even after testing it breaks something, there is a single command you can use to roll back to ANY previous state of your code, so you have very quick mitigation procedures if something goes wrong.

Is there a downside?

The only thing that can make this difficult to implement in a small organization is if you have staff that won’t comply.  Once a site is version controlled, everyone needs to use version control.  The second someone FTPs in and makes a ‘quick change’ things get messy.  The next time a real commit is made, it won’t be able to be taken live as the code bases won’t match.  Then your programmer has a big job on his hand pulling what you did from the live site, merging it into the code base, etc.

In my opinion this trade off is well worth the security you get from having properly secured code.

I recently had to tackle a difficult problem for a client, and thought I’d share the solution that I came to.

The issue: we wanted to be able to have a member’s only website with protected content.  This was ‘daily update’ type stuff, though, and so the client wanted to make sure that every time something new was posted in the member’s area the correct member’s group got notified.  There are about 5 sets of member groups, and each get’s their own unique notices.

To start with, we used Infusionsoft and iMember360 – by far my favorite way to handle membership sites.  iMember360 sits on top of Wordpres and allows you to build completely custom membership experiences.  I looked up Infusionsoft RSS to Email solutions, and I tried all of them, and none of them worked.

The issue was this – the content was protected.  So you had to be logged in to see it, and that includes in the RSS feeds.  Most ‘instant publishing’ solutions are RSS based, and if the content is protected, that means that the RSS reader can’t see it to pull it for mailing to the newsletter subscribers.  So the challenge was to get this protected content to syndicate through RSS so an RSS to email solution would work for it.

Big credit to both Bob Keen (creator of iMember) and Jeremy Shapiro (founder of Feedbolt) for the huge assistance, and sometimes custom programming that they did to help me achieve this goal.  So now, here is the simple solution.

You sign up for Feedbolt, and RSS to Email syndication service.  I’m assuming that if you are interested in this you are probably already running Infusionsoft and iMember – if not, and you need help getting set up, get in touch and I’ll help you out.  Once you have a feedbolt account, you have to define the RSS feed you want to use – this is where the magic comes in.

iMember360 has an AutoLogin feature.  Feedbolt has configured their software to work with this feature.  So here are the steps.

  • Go into Infusionsoft, and create a user that is tagged appropriately to have full access to your member’s area.  Get the ID of this user.
  • In Infusionsoft, under Application > Settings grab your API key – you only need the first six characters
  • Now put together your link.  It will look like this:


Things in caps / bold need replacing.  Your domain name is obvious, the XXXXXX gets replaced with the first 6 characters of your API key, YOURRSSURL/FEED gets replaced with the URL of the RSS feed you want to syndicate, and ID (the capital one, not the one like this – Id) gets replaced with the user ID of the user you created who has membership access.

This link allows Feedbolt to autologin to your site as that user and pull the RSS feed even though it is protected for member’s only.

Then you just set up a template in Feedbolt for your email, and post away in WordPress.  Your member’s will get notices when you post new content via email.  If they click on the ‘Read More’ link they’ll still be required to sign in – if you wanted to get fancy you could even code those to do an autologin for ultimate member ease.

I do have to say that I tried ALL of the competition for Infusionsoft RSS to email solutions, and none of them worked, and none of them came close to the level of support the Feedbolt offered.

So, this is a cool and easy way to run an ‘update’ style membership – where your readers want the latest news as it breaks via email, but also a secure member’s area to review all posts at their leisure.

As a note – it does mean you have to remember to do two things.  When running an iMember membership site, you check off the level of protection on an individual page.  RSS however, works by categories.  So I duplicated the structure – for the Gold membership level, there is a category called Gold – and it is the feed of that specific category that in Feedbold I send out to member’s tagged Gold in Infusionsoft.

I actually found that sentence confusing to type, so if any of this is unclear, please feel free to ask questions in the comments below!


So, this is something I’ve run up against with clients a couple of times this week, and I thought it was worth doing a couple of fast and dirty tutorials. So here they are.  I’ve included Chrome and Firefox.  If you develop in IE you aren’t my friend.  If you develop in Safari you are probably cooler than me, and will have to figure this out on your own.

How to Delete Individual Cookies in Chrome

Delete Individual Cookies in Firefox

A couple of weeks ago in a massive Google email security breach, over 5 million Google username and password combinations were posted publicly online.  Was yours one of them?

Without going into the details of why hackers do this, or how, at the root of it is poor password security practices by individuals.

I use a very good tool called Lastpass to help me create and remember highly secure passwords across devices.

It is a great tool – I don’t know what I’d do without it as I store literally hundreds of passwords that I need.

This week Lastpass released two cool things. One is a tool that lets you assess whether your gmail account was affected.

The second is this little analysis of the security of the emails that were compromised (below). Take a minute now to check your email, and if you don’t already have a good way of generating and storing truly secure passwords, check out Lastpass – it is free to almost everyone and only $12 / year for the premium version.

Stats on the Google Email Security Breach

Google Email Security Breach

Why do you redesign a site?  For many businesses, unfortunately, it is nothing more than a whim.  The answer to the critical question ‘what do you want to get out of a redesign?’ is often something like ‘ummm.. a prettier site?’.

OK, but pretty doesn’t put food on the table.

Most marketing savvy folks would redesign to optimize conversions – and many marketing geeks sit around all day coming up with new designs and split testing them against existing designs in the search for the perfect conversion rate.

But, there is another reason.  If you are in the business of any type of expertise (speaker, author, coach, consultant, trainer, etc), one of the first things that you want to do is get people to engage with you, learn about you, and fall in love with you and your ideas.  Because those are the people who will support your business over time.

A Content Engagement Case Study

I recently worked with Jennifer Bryan of Team Finch Consultants (the client) and Mitch Anthony of Clarity (a branding consultant, who I might say, is a master in his field and a joy to work with) on the redesign of the TeamFinchConsultants.com website.

We worked on incorporating a new font set and colors from a new logo that had been designed for this rebrand.  We focused on making the site more open and readable, and the content more engaging.  We also changed the site to be responsive, so it would be wider on standard screens, but fit nicely on tablets and mobile sites as well.  Here is a before and after.

Redesign for Content Engagement

The new site feels more expansive.  It also has a lot more opportunity to engage.  Images are used to pull the eye to main topics that then link to deeper information.  Video is presented right up front, and was worked in as a significant part of many of the pages.

More space and bullet points are used to draw the eye to critical points.

To my minimalist loving eye, this looks a world better than the old site.  But hey – that isn’t really why we redesign a site, right?  No.  This is why we redesign a site:

Content Engagement Statistics

This is a comparison of two months before and two months after the launch.  Page views are up 17%.  Pages per session are up 20%.  The average session duration has almost doubled – a 76% increase in time on site.  And the bounce rate has gone down by 23%.  Content engagement is the name of the game.  If you are a bit in the dark, the Content Marketing Institute has published a great little guide to content engagement and over 20 tools to measure it.

This is the kind of hard proof that you want to have on hand for a site redesign.  If you are considering a redesign and aren’t currently running analytics, install analytics first, and run it for at least 30 days before you take your new site live.  You’ll then have a benchmark of your current content engagement to compare against.

And if it doesn’t work out, don’t be afraid to turn back.  Serving your audience is never about looking cool or using the latest technology, it is about delivering value to them in a way they can use it.

Now, if you are a direct sales business, again, you’ll be tracking conversions as a more important metric than engagement.  But, for Jennifer, who engages PreK-12 schools (a hard audience) on the topic of gender and sexuality diversity in schools (a hard topic), the more people that read and engage deeply with her content, the more she establishes her expertise and credibility, and the more likely they are to pick up the phone and call.

September 14th is my birthday (and yes, please send presents). This year I’m giving myself a present too – I’m giving myself a raise. I’ve been charging $100 / hour steadily for years now, and it simply no longer covers what my time is worth. For any of my existing clients, you know my rates are cheap. I charge by the minute, and I’d say 99% of the tasks I do these days take me less than 20 minutes.

The problem is, now a lot of people want me to handle things because I’m fast, cost effective, and extremely reliable. But when 20 people want me to do 10 minutes of work, it actually takes me much longer. Switching between the little tasks takes time, getting my head into a new client’s project takes time. I considered just not taking on any small projects at all, but I have too many folks that rely on me for the little updates and fixes, so instead, I’m putting my rates up to $150 an hour.

That makes the little stuff worth it to me, and lets me keep serving the small business community that I love so much. This is unlikely to affect project based pricing, so if you have a bigger job you need done, just ask. While my rates go up every once in a while, so does my expertise, and what took me $5,000 to build in 1990 now takes me $300 to put together.

If you are an existing client and you know that you are going to be using me over the next year, right now you can lock in my old rates. You can buy any number of hours you want for the coming year at $100 / hour. I’ll put them down as a credit on your account, and then when you send things over I’ll just deduct from your credit. Fair enough?

Click Below to Lock In My Old Rates (Simply Change Quantity to what you want)



I just did a quick interview with Kevin Price of The Price of Business on WordPress as a platform for small businesses.

Over time the Infusionsoft Marketplace has grown into a vibrant and full community of consultants, developers, and web apps that all integrate with Infusionsoft.  If you asked me what my favorite app in the marketplace was, I’d probably have to say…

hmmm… Good question.

And then I’d think through it for a minute.

I think I’d have to go through a list of pretty good ones first.

Like iMember360 – I use that for every membership based website that I build, and I love it.  It has more features than you can shake a stick at, and if you ever manage to use it to it’s full extent, you are too smart for your own good.  But on a basic level, in a couple of hours you can have a membership area that displays content dynamically based on all sorts of different criteria in Infusionsoft, and that is awesome.  Way to go Bob!

And then there is the recent SNAP.  Seriously – take a picture of a business card and add it to Infusionsoft.  Easy, cool.  Takes the headache out of networking at events like #ICON14.

And then there is TimeFusion, that lets me forget about scheduling and make my clients pick a time – integrates with my Google calendar so it doesn’t double book, allows for rescheduling and cancellations – awesome.  And PlusThis – it’s like all the cool features Infusionsoft forgot to build.  Absolutely loving it!

But, this is about my favorite, and so, if I had to pick one that I absolutely couldn’t live without, the pinnacle of apps available in the Infusionsoft Marketplace, it would be…


Sync for Gmail does a couple of really cool things.  One is, even if I never open gmail, it checks my email and if I get a message from anyone who already has an address in Infusionsoft, it adds the message to their record.  Boom – an instant record of email communication with a client right on their Infusionsoft contact record.  Awesome.

Then, if you do log into gmail, you get a little bar on the right hand side of the page that takes relevant info from the email you are currently looking at and, if a contact record exists, pulls it up, and if it doesn’t, you can auto create one.  So let’s say someone emails you – a brand new lead.  Right from gmail I can add them to Infusionsoft, create an opportunity, and the email they sent will be auto synched to their record.  Amazing.

Now, I use Google Apps so that my email comes from my domain – it isn’t a gmail.com address.  I recommend this for any serious business.  But you still get to take advantage of the many great things Google’s email has to offer, and you can use Infusionsoft Sync for Gmail.

Want it?  Just pop on over to the Infusionsoft Marketplace  and look it up…

Not an Infusionsoft user yet?  Contact me and I’ll get you set up in the world’s most powerful CRM for small business!