Archive for April, 2006

My Householding app on Appexchange

Thursday, April 27th, 2006

My app for Householding joins my Rapid Lead Converter and Online Donation Importer and my Functional Documentation Embedded in Salesforce.com as publicly available on Appexchange. While Housedholing is a continual work in progress, it’s exciting to make it publicly available to people who might find it valuable.

What is Householding?

  • It is the grouping of multiple people together based on a shared physical address
  • It facilitates direct mail, allowing you to send one piece of mail per physical address, even if the family has multiple Contacts in your database

What does my Appexchange setup do?

  • Gives you the Household custom object
  • Gives you a form that creates up to two Contacts, a Household, and relates them together all at once
  • Gives you some helpful ways to keep Contact and Household addresses in sync

If you want to implement Householding, it’s actually fairly complex. It’s a way of thinking about your Contacts, how they relate to each other, how you track Opportunities, and what all your reports look like. Getting this app set up is fairly straightforward, but doing Householding, as anyone who has done it will tell you, is kind of a pain. But if you need to do it, you need to do it!

As always, I love feedback! Take a look. Check out the test drive!

Initiating Actions from Reports

Wednesday, April 26th, 2006

Reports in Salesforce.com are great because you can query Contacts. And then you can drill down to a Contact’s record to do things like edit them, or add an Opportunity, etc.

But “drilling down” is really just a euphamism for “you have to click again.” And I think the goal of a web app is to remove as many clicks as possible. So I drive events from reports where it makes sense.

On this report, I can edit or delete any Opportunity that is listed. This is a pipeline report that shows all my CRM projects. I can easily move them from one stage to another without having to drill down.

This report is a list of Contacts. With one click I can start the process for adding each one to a Campaign. Again, no drill down. No extra clicks necessary.

I created two custom fields that can now be included on any Report or View that I have. Salesforce.com lets me add action links all over the place, which is freakin’ cool.

Edit Delete Link

In this example I created this field on the Opportunity object, but the same notation should work on any object.
Field Data Type: Formula
Field Label: Edit Delete
Formula Return Type: Text
Formula:
HYPERLINK("/" & {!Id} & "/e", "Edit") & " | " & HYPERLINK("/setup/own/deleteredirect.jsp?delID=" & {!Id}, "Del")

Add to Campaign Link

This only works on the Contact object
Field Data Type: Formula
Field Label: Add To Campaign
Formula Return Type: Text
Formula:
HYPERLINK("/00v/e?retURL=%2F" & {!Id} & "&parent_id=" & {!Id} , "Add to Campaign")

CRM is about looking up information, but it’s more importantly about action. Enable your users to act in as many places as possible.

Update: We had some earlier problems with copying and pasting the hyperlink fields causing syntax errors in Salesforce.com. Kingsley pointed me to the fix, and all is well now. If you ever want to post formula fields on the web, wrap them in CODE tags!

Databases and Web Services

Tuesday, April 25th, 2006

Tim O’Reilly has started a series on what’s up with databases in the web2.0 world. One quote from Cory Ondrejka struck me. He’s moving all the internal communications of the online role playing game Second Life to web services.

I don’t think anyone really groks what’s going to happen when we fully connect to the web this way…

And I think when he says anyone, he means anyone–himself included. We’re all delving into web services and integration and delighting at what we find is possible, but does anyone get this stuff fully? We’re trying to grok this new world where apps are Internet aware and can integrate any many levels. Heck, sometimes it doesn’t even feel right to call them apps anymore–they’re like data platforms on which we can build apps, but not in the historical sense of the word.

As you can tell from my thoughts, we haven’t figured it out yet! Anyway, I look forward to being enlightened further–keep your eye on the series!

Getting Started with the Salesforce.com AJAX Toolkit

Monday, April 24th, 2006

I use the Salesforce.com AJAX toolkit. It is an incredible tool for ironing the kinks out of Salesforce.com for use by nonprofits. Need to create a Household when you create a Contact? Use the AJAX toolkit. Need to associate a Gift with a Contact, no just an Account? Use the AJAX toolkit. With the AJAX toolkit, and only with the AJAX toolkit, can you provide a truly customized application to your end users. Without it, you’re stuck with Salesforce.com’s UI and logic.

Want to get started? Check out Dave Carrol’s Getting Started with the AppExchange AJAX Toolkit (interesting choice to publish it on Writely…), and then move on to the description of the Beta 3 product, which I use every day and had no idea some of these features existed!

ONE/Northwest gets grant from Salesforce.com to integrate with Plone

Friday, April 21st, 2006

The Salesforce.com Foundation announced today that a plucky band of techno-strategists up in Seattle will get a $25,000 grant to build integration between the open source Plone content management system and Salesforce.com.

We’re very thankful to the Foundation for funding this project, and really excited about what this means to the nonprofits we work with (and anyone else using Plone and Salesforce.com!). What does it mean? With Plone and Salesforce.com integrated:

  • Someone who signs up for your Plone website will be automatically dropped into your Salesforce.com database
  • Any data you collect (interest area, newsletter signup, etc.) on your website will be recorded in Salesforce.com
  • You can use all that data, and the constituent’s email address, to drive communication through any number of email marketing services that integrate with Salesforce.com
  • If you desire, you can allow your constituents to view and change the data you have in Salesforce.com

We are going to be working with Enfold Systems on this project–they are some of the smartest Plone minds out there. We’re shooting for an October release, with lots of milestones along the way. If you are interested in this project, let me know in the comments. We’re very interested in getting input from a variety of folks along the way.

We now get to integrate the leading hosted CRM solution with the leading enterprise-grade open source CMS. We’re pretty darn excited about it!

My Lead Conversion Application on Appexchange

Wednesday, April 19th, 2006

I just published my applicaiton for Rapid Lead Conversion and Online Payment Importing. Check it out!

What is Lead Conversion? Leads is a holding area in Salesforce.com. You can import people as Leads, and then decide if you want to make them real Contacts. You may have a lot of names from a petition, where many of them won’t turn out to be real Contacts for you organization. You may also drop people from your newsletter sign up page on the web into Salesforce.com with the very cool Web-to-Lead functionality.

If you do any of this, you have used the Lead Conversion functionality in Salesforce.com. It’s great functionality. It checks to see if there are existing Contacts and Accounts that match the Lead you are brining in. But it’s slow, and you have to go through 3 server round trips to convert a Lead. I’ve built a faster interface based on AJAX, so you can convert 100+ leads without having to refresh the page.

In adition to just making things faster, I’ve built a way to import online donations from a service like PayPal. Download your donations in Excel, import them as leads with donation date and amount, and then with a couple clicks, create the Contact or merge to an existing Contact, create an Account or merge to an existing Account, and create the Opportunity. And if you use my Householding setup (to be published to Appexchange this week) it will create the Household, too.

Check it out. If you do lead conversion, it might make your life a whole lot easier. On the Appechange listing there is a presentation and a set up document. It should be all you need to get up and going.

Crystal Reports for Appexchange [not] Out

Wednesday, April 19th, 2006

I haven’t looked at this in detail, but Crystal Reports for Appexchange came out today. Might be interesting…

Update: This is a report pack for sf.com data, not the full Appexchange product. Expect that before Q3.

New mail merge facility coming soon in Appexchange…

Tuesday, April 18th, 2006

In a comment today on a post about Word mail merge in Salesforce.com over at Salesforce Heretic, it was announced that Salesforce.com is releasing a new mail merge system via the Appexchange in the next few days.

I’ll post a link when it goes live.

Crystal Reports for Appexchange

Monday, April 17th, 2006

Seems like everyone is creating their own “for Appexchange” application right now. But this could be a very interesting one. Crystal Reports for Appexchange could provide the next level of reporting complexity for our Salesforce.com data. Wouldn’t it be nice to have a query builder solution for folks who need more power than the current report/dashboard framework? I’m working on getting more info. Let me know if you know anything about this product…

dotproject and Salesforce.com: the code

Saturday, April 15th, 2006

Earlier, I stumbled on a use case for integrating external data into Salesforce.com: one-way, read-only data pulls from external systems to take advantage of Salesforce.com’s superior analytics. I’ve had a number of requests to publish the details, and now I’ve gotten the code to the point where I’m not embarrassed to share it.

dotproject dashboard

Here’s the PHP script, which I run as a scheduled job. And here is the salesforce.com custom object I write to.

I’d lin to thank all the folks over on the dotproject open source project. They’ve done great work and I’ve obviously borrowed heavily from their work in getting this integration going.

Enojy. I hope it spurs some great ideas. I always welcome comments on how I could clean up the code.