Blog

Sharing WordPress tips and tricks as I find them

Genesis CRM for WordPress

» Download on Github

Since this is a child theme of Genesis, you must also have Genesis installed for it to run. If you don’t have Genesis, use CRM Press or build your own theme by porting the code.

Summary

About 6 months ago at WordCamp Phoenix I shared TwentyTen CRM, my first attempt at developing a Customer Relationship Management system. Andrew Norcross and Jared Atchison then contributed a ton of improvements to it, and it’s been mostly unchanged since then.

Just in time for WordCamp SF (and Genesis Connect) I’m sharing my lastest version, Genesis CRM. There’s a few reasons for me making the switch:

  • TwentyTen is no longer shipped with WordPress.
  • Genesis is my preferred development platform. I build all my client’s sites using it.
  • Most importantly, TwentyTen CRM was built specifically for managing prospective clients. Once I landed the project, it was no longer used. Genesis CRM has a screen for prospective projects, active projects, and completed projects, and is a tool I use constantly throughout the day to stay organized.

If you don’t use Genesis, no worries! You can use CRM Press, which Thomas Griffin built as a standalone CRM theme (ported from TwentyTen CRM just like Genesis CRM). Or you can just look at the code I’m using it and build it into whatever you’re comfortable working with.

Finally, I’d like to note that what makes this such a valuable tool is how easily (and often) I can modify it. I’m not building a CRM for everyone – this is specifically built for my needs. I highly recommend you take the concepts outlined in this theme and apply them in your own way. Get on Github, fork this project and build your own CRM.

Features

  • Custom taxonomies and metaboxes for collecting your data.
  • Prospects page template that is 3 widgetized columns. I’ve built a lot of widgets to analyze prospects, so choose the ones you want. Examples: Activity Graph, Source of Inquiry, Source of Projects, Outstanding Quotes… and more.
  • Active Projects page template. This lists all active projects in order of project status. It includes a status summary and budget. There’s also a “Needs Work” radio button when editing a project, and if marked the project will have a yellow background. This let’s you quickly see which projects need work. In the sidebar I list scheduled projects so you can be ready for those when they come up.
  • Completed Projects page template. This lists completed projects, the budget, time spent, and effective hourly rate. Use this to see what types of projects you over- or under-quote on to improve your estimates. Note: there is no timer built-in. I use Toggl and every Sunday I transcribe that week’s time data to the fields on each project.
  • Any time you click the name of a project it takes you directly to the Edit Post screen. Since I’m constantly editing projects’ status, this saves the extra step of clicking “Edit” and gives you a single interface for viewing this information rather than a single post screen and the edit screen.
  • If you’re using Gravity Forms, edit the Form page template with the appropriate form ID and you’ll be able to embed a contact form on your public site that automatically populates your CRM (tutorial here).
  • The design is responsive, so on a smaller screen (ex: mobile phone) it shifts to a single column layout.

Recommended Plugins

  • Gravity Forms and Gravity Forms + Custom Post Types, for your contact form
  • Registered Users Only, to limit site’s access to only you. I’ve also added a filter that excludes the contact form from this restriction (functions.php, around line 375).
  • Relevanssi, not only will you improve the search results, by going to Settings > Relevanssi you can specify all the post meta fields you’d like included in the index. This is absolutely a must since your CRM is built on post meta.

Sample WordPress CRMs

Have you built a CRM in WordPress? Share your code! Below are some public CRM themes. Leave a link to yours in the comments and I’ll add it to this list. Look through the code of these themes to get ideas for your own CRM.

55 Comments

  1. Thanks a ton, did not know that WordPress can also be used as CRM.

  2. As usual, great work. Can’t wait to compare CRMs in SF, lol.

  3. I swear my life gets more organized with each new thing you put out :-)

  4. Hi Bill. Thanks a lot for your work. I want to use with the SQL dump import method. Could you give use the password for the “admin” user. Like this it will be easier to start with all your test content.

  5. Ok great. It works. Thanks so much.

  6. Bill,
    Again, kudos for your work and dedication. This really is cool. I’ll be playing with it shortly.

    I’ve got a couple questions to run by you on this:
    1. For those Genesis users using a custom theme, what is the best way for them to make use of this CRM solution? I imagine as a separate install. If so, is it possible to host the CRM form (built with gravity forms) on your own website and have that form data posted to your CRM? Does that make sense?
    2. I know this has been built for your needs. However, has anyone mentioned a team project management piece to this as well? Something that will allow you to add tasks, milestones, team members etc. I’d be curious to know. =)

    Thanks again.

    • Bill Erickson says:

      Yes, this should definitely be run as a separate, private install. I have mine at crm.billerickson.net. Here’s a tutorial on creating the form in your CRM but having it on your public site: http://www.billerickson.net/contact-form-to-wordpress-crm/ The CRM already has the template page set up for this (see template-form.php). The other two developers of TwentyTen CRM, Andrew Norcross and Jared Atchison, both have their own versions of CRMs and I believe Norcross’ is built like basecamp with tasks, milestones, team members…. Now that I released this I’m encouraging them to publicly release theirs too :)

  7. Bill, perhaps you could discuss how you’re implementing responsive design using Genesis?

    • Bill Erickson says:

      Sure. The extent of responsive design in this theme is small. If you go to the bottom of this page you can see the relevant part of the stylesheet. Here’s what I’m doing

      - I’m using the CSS classes one-half, one-third, and two-thirds to make multi-column pages, but on smaller devices I wanted everything to be single column. So if the screen width is less than 960px It makes all those classes 100% width and no margin.
      - Then I go through and make sure all the large elements are full width (content-sidebar-wrap, content, sidebar…).
      - Then I set the title area and widget area (and the menu within it) to full width and centered. Normally the theme has the site name to the left and menu to the right. This stacks everything (just like my current site, try resizing this browser)

  8. Hello Bill. I love your CRM, and am currently setting it up to keep track of our leads from a tradeshow.

    However, is there a way to get it to show more than ten prospects when I click on a specific date to see that days entries?

    Sincerely,

    Matthew Reeves

  9. This looks pretty nice, except I must be doing something wrong in that I can’t seem to get any of the custom meta boxes going? I know the be_create_metaboxes() function is being called, but when I go to edit a Contact, I don’t see the Client Information, Project Information, etc. metaboxes. I’m not using Gravity Forms, would that have anything to do with it?

  10. Ok, I actually got it, but had to do add_filter( ‘cmb_meta_boxes’, ‘be_create_metaboxes’ ); and make sure that the $meta_box array was returned from be_create_metaboxes().

    • Bill Erickson says:

      Great catch! I just updated the metabox code in the CRM and forgot that it wasn’t already using the filter to add metaboxes (added in last version of metabox code, I must have been 2 versions off). Will update the theme today.

  11. Hi

    Thanks for this theme. I’ve got a client, who runs an employment agency and looking for a CMS solution, I know nothing about this kind of software at all, I am familiar with WordPress and remembered this post when looking for a solution.

    Is there a simple tutorial I can have access to help me get to grips with this kind of software. I’m meeting him in the week to discuss working on his site, and it would be great to go in with some idea how this theme works :)
    Thanks
    Haroun

    • Bill Erickson says:

      The easiest way to explore it is to actually install it. Do a blank installation of WordPress, upload Genesis and Genesis CRM, then activate it. If you’re comfortable with databases you can use the database dump to get a complete demo site setup; alternatively, you can use the WordPress export file to import just the content (Tools > Import).

      There aren’t any tutorials online, but once you install it you should be able to figure it out pretty easily. Go to Contacts > Add New to see all the fields you can add. Go to Appearance > Widgets to see all the contact related widgets you can add to the homepage. Go to Pages > Add New, and in the right column you can see the available page templates (Active Projects, Complete Projects, Download, Contact).

  12. Hi Bill,

    This is a great tool! But, you currently have it setup so that…
    Any time you click the name of a project it takes you directly to the Edit Post screen. Since I’m constantly editing projects’ status, this saves the extra step of clicking “Edit” and gives you a single interface for viewing this information rather than a single post screen and the edit screen.

    Is there a place in the code that I can easily change it back to Any time you click the name of a project it takes you directly to a single post screen, then we can click the [edit] if we need to edit? I have a need to mostly just view the project notes versus editing/adding to the project.

    Let me know…Thanks, Rich

  13. Hi Bill, thanks for releasing this. I’ve been searching for a lightweight CRM and am going to give yours a go. However the links to the sample data is broken. Where can I download the SQL dump please? Thanks

  14. Ross Teasley says:

    hi bill, very excited to try this out. the sample data .sql file, however, seems to be 404ing (for me at least). is it also available anywhere else?

    thanks for making this public!

  15. Awesome stuff…

  16. Hi, Bill! Thanks so much for providing this – I can already tell it’s going to be a huge help in keeping myself organized. It may have been my error, but when I installed the latest version of the theme it didn’t include the various metaboxes – so my “Add Contact” screen, for example, didn’t have the fields associated with it. (Screenshot: http://ScrnSht.com/ltyjuc). Brandon Kraft passed along the older version of the theme and that one seems to work just fine, with all of the metaboxes available. So, again – it may be my error, but I wanted to just pass that along to you. Thanks again!

    • Bill Erickson says:

      Hmm, that’s really strange. Inside functions.php you should see this: https://gist.github.com/2895881

      That links to /lib/functions/create-metaboxes.php which creates the metaboxes: https://github.com/billerickson/Genesis-CRM/blob/master/lib/functions/create-metaboxes.php

      • I have *no idea* why this isn’t working, because I do see those files inside the specified folders. I’ve tried deleting and then reinstalling the theme a couple of times, but it doesn’t seem to make any difference – but the old version still works (whether the new version has been uploaded or not). I even tried uploading the older version of create-metaboxes.php, but – no dice. I mean, the older version works great for me; I’m just letting you know that for at least one person out there in CluelessLand, an issue exists.

        • Bill Erickson says:

          Thanks for pointing it out. I’ll do some testing. I didn’t actually test this new version when I pushed it out – I just pulled it directly from my active installation. I gave a presentation at WordCamp Orange County last week on my CRM and wanted to make sure everyone could access the version I was using.

          • I was looking at the slides from your presentation, actually, to figure out where I could put things on the homepage. It’s very helpful to see screenshots of how you’re actually implementing the CRM theme. Thanks again!

        • Ditto! There aren’t any metaboxes on my admin screens either. I’ve been looking at this for hours and couldn’t figure out what I was doing wrong. So glad that I’m not the only one.

          Has there been any update to the theme? I’m anxious to get it up and running so I can get organized! Great work, thanks!

  17. Can someone point me to the slides from the Orange County talk?

  18. Hi Bill,
    Your CRM seems the ideal solution my company is looking for, thanks for sharing!

    We run WP as our company CMS, and so, many of our customers own an account on our WP instance.

    So, I would like to know if there is a way in your CRM to make directly a contact from an WP account?

    Thanks.

    • Bill Erickson says:

      Are you asking if you can associate a contact form submission with the user who submitted it if they are a WordPress user of your site? If so, yes, that’s a feature of Gravity Forms. When setting up your form, it will ask you who the post author should be. There’s an option to use the current user if logged in.

      • Thanks for this quick answer Bill. It seems to do the tricks. And yes, the idea is not to duplicate information but to use the ones already stored into the WP DB as much as possible.

  19. Hi Bill.

    I’m trying to figure out how Genesis CRM works indeed because I don’t even know how to install it. But I may misunderstand what Genesis CRM really is.

    As I said, my company is using WP as a CMS. We have more than 2000 user accounts, some are customers, some don’t. I thought Genesis CRM would install a new plugin, only on the backoffice side (in the WP dashboard), and would offer some features related to customers.

    Am I wrong?

    I tried to install it, I put the Genesis-CRM folder into my themes directory. I see Genesis-CRM in the list of available theme, but I don’t want to change my web side theme. I just need a WP dashboard CRM. So I guess Genesis is not for me, right?

    • Bill Erickson says:

      This should be installed on a completely separate WordPress installation. For instance, I have mine installed at crm.billerickson.net.

      This theme also does not use user accounts as clients. It uses “posts” as clients. The reason we don’t use user accounts is:

      • More time consuming to create
      • More difficult to create user meta than post meta
      • We don’t want them to have the ability to log in
      • Easier to query/sort posts than users
  20. Hey Bill, Just wanted to say thanks for sharing this, I’m currently using this system for one of my sites after watching your WordCamp talk!

  21. Hi Bill,

    Thanks for sharing this, this lightweight CRM really get me going in terms of managing client and work.
    I’m still trying to understand the thinking behind using this, how do you go about handling repeating/multiple projects from the same client ?
    Cause at the moment, one client is tied to one project/task ?…
    Thanks again :)

    • Bill Erickson says:

      I just create a new post with the client’s name as the post title, and the project name in the Project Name field. So the url is /client-name-2.

      If the majority of your work is coming from a few clients that provide a lot of projects, you might want to take a different approach. You could have a post type for Client and one for Project, then use Posts 2 Posts to link the two.

  22. Regards for posting “Genesis CRM for WordPress – Bill Erickson”.
    I actuallymight absolutely wind up being back for a lot more reading and commenting soon.
    Thank you, Karen

  23. Where do you input the number of hours spent on a project (ie. those you have recorded in Toggl, for example)?

  24. Hi Bill.
    If I want to add the ability to add dynamic metaboxes should I follow something like this: http://wordpress.stackexchange.com/questions/19838/create-more-meta-boxes-as-needed
    ?

  25. Hey Bill,

    Thanks for posting this, I’ve been using it myself for a bit.

    I noticed that the Result of Inquiry and Reason for Forwarding Away widgets weren’t working, and they are both looking for a meta key: _crm_old_project_status that doesn’t exist. None of the metaboxes create it. I’m guessing by the name this was something you used to store the Inquiry status in. I’m going to just modify it to work with my installation but was curious how you used it.

    Thanks!

    • Bill Erickson says:

      Yep, it looks like that was an old field I was using and isn’t in use anymore. To be honest I don’t really use the widgets anymore. I’m waiting for WP_Date_Query() to make it into WordPress core so I can update all those widgets and make them more useful (data for past 7, 30, and 60 days). Right now it has over 3 years worth of data in it so a lot of the information is stale. It still says like 15% of my inquiries come from DIYThemes and I stopped using Thesis over two years ago.

  26. Hey Bill,

    Thanks for posting this.
    I had actually worked on creating my own CRM from scratch, but then I found this post.
    I haven’t used it yet but from an overall it looks great!
    The only thing I really needed was a way to store customer info, for example where they domain name is registered, what’s the username and password to their account…

    Thanks again.

  27. Hi Bill, hope you are well

    Do you have sample data available to import? the link at top seem to give a not found…

    Thanks so much

Join the Conversation

If you'd like to include code in your post, please post it to http://gist.github.com and include a link.