How to use Salesforce Outbound Messages & Zapier to celebrate a closed won sale in HipChat 💸 🎉

I’ve always found Zapier to be a cool tool, but never thought of an application to use it at Industry Dive. My colleague had set up a few Zaps between Google Sheets & Salesforce and had showed me the gist of Zapier, which got my wheels turning.

Then, this happened in our sales chat:

I mean, #duh.

Spoiler Alert: This post is not about how I managed to get specific songs to play from Spotify to Sonos. We’re still using a human for that part of the equation — but if you have ideas, let me know in the comments! 🎵

We quickly polled the sales team to get everyone’s favorite song. Given that we didn’t want complete chaos on the Sonos we decided to limit playing a rep’s song to closed won deals over $15,000. This happens just infrequently enough that it would be special.

So here is where Zapier comes in: How could we notify the team in our HipChat room the second a deal was closed that met that criteria? A simple Workflow Rule in Salesforce would allow me to email the team, but a HipChat is exponentially more fun. 💬


Before following the below instructions, make sure you have the following or else you’ll just get frustrated.

  1. A paid subscription to Zapier. Salesforce is a “premium” application which means you can’t access it on Zapier’s free plan.
  2. A System Admin profile or Modify All Data permissions in Salesforce. Or, just send this to your friendly Salesforce admin, I’m sure she’d be happy to set this up for you. ☁️
  3. Ability to get the an Admin Auth Token from HipChat. This is what Zapier uses to “call” HipChat and access the HipChat room you want to message. This was the piece of the puzzle I didn’t have access to so I just hunted down one of our HipChat admins, asked them the generate the token and then send to me.

Step 1: Open up Salesforce & Zapier and set up the Outbound Message

If you have dual monitors, this will make it a lot easier so that you can flip between the two apps.

In Zapier create a new Zap and select Salesforce then type in “Outbound” into the Salesforce Trigger search. You’ll then be asked to connect your Salesforce instance to Zapier, so go ahead and do that if you haven’t already.

The next step will be to get this webhook, which is what allows Salesforce and Zapier to “talk.” Keep this page open and switch to a new tab to Salesforce.

In Salesforce, create an Outbound Message. The object you’ll want to create it on is Opportunity, because that where closed won sales happen! But you can see you can create an Outbound Message on almost any object.

Put the URL from the Zapier screen above into the Endpoint URL field in Salesforce.

The “Opportunity fields to send” section is important because that is the information you are sending back to Zapier, which will ultimately become part of the message you send to HipChat.

Side note: You’ll see that Account Name and Owner Name aren’t available options to pull over. This is why I’m bringing the IDs. We’ll convert them over to text in a later step.

Once you do this press Save on the Salesforce screen and save on Zapier. At this point, Zapier will want to pull in examples using the webhook you just added.

You’ll get something like this:

Allll the Salesforce IDs. 🔢

Step 2: Go back to Salesforce and set up a Workflow Rule

The Outbound Message is what sends all the relevant information to Zapier but something needs to kick off the Outbound Message. An Outbound Message on its own does nothing. Enter: Workflow Rule!

Create a new Workflow Rule that has the criteria you want to trigger to the Outbound Message. My criteria is fairly simple: Closed Won & over $15K.

Once you save your Workflow Rule, make sure to add an Immediate Workflow Action (choose: New Outbound Message) which is triggering your Outbound Message. Basically, you’re linking the two actions together. Otherwise, nothing will happen!

💡Admin Best Practice Side Note: I named both my Outbound Message and Workflow Rule “Over $15K for Zapier.” I also utilized the description field to explain what these actions do. When you’re stringing together different components within the system naming consistency is helpful because it shows you (and future admins!) that all these parts are related.

Before we delve into Step 3, let’s briefly cover what we did:

  1. Set up an Outbound Message from Salesforce to Zapier, which sends the relevant data from Salesforce to Zapier (which will eventually be passed to HipChat).
  2. Set up a Workflow Rule to push that information out of Salesforce based on specific criteria (since I don’t want to send a HipChat for every single sale!)

Next Steps: Use the IDs from the Outbound Message to get the text you want to include in your HipChat

This really puzzled me initially. In the screenshot above with all the Salesforce IDs you’ll note that that the only thing that is legible is the amount: 5000.00. Everything else is in Salesforce ID form. But when you go to set up your Outbound Message you don’t see an option to select “Account” just “Account ID.” Hmm. 🤔

So at first I just ignored this and plowed straight ahead into the HipChat portion of the Zap. This is what I got:


Okay, fine. I should probably figure out a more legible solution. At this point I hadn’t thought to read Zapier documentation, so I just turned to Twitter instead.

Initially I thought I’d create formula fields that would be hidden on the page layout in Salesforce so that I could pull the information over to Zapier. My heart secretly ached at the idea of creating extra fields for such a silly purpose. But then! A response!

Brilliant! Instead of creating these fields, I would just create steps in Zapier to search for the information I wanted in Salesforce and then bring it back to Zapier in the format that I wanted. I had to create a lot more steps in Zapier, but this way everything was self-contained in Zapier and I wasn’t spinning up random fields in Salesforce.

It does seem a little circular; you just called all this information from Salesforce to Zapier and now you’re sending it back to Salesforce just for the purpose of reformatting it. But since you only have IDs for these objects and nothing more, you need to query Salesforce so you can get all the fields so your HipChat message isn’t gibberish.

Step 3: Find Account

In Zapier, create a new step after your Outbound Message. Select Action, then Salesforce, and then “Find an Account.”

You’re searching by the Account ID you got in Step 1!

Select Account ID and then Notification S Object Account ID. Then follow the rest of the prompts.

Don’t worry about Account Name and other text yet! That will come later.

Step 4: Find User

This is pretty much the same as above, but instead of “Find an Account” you’ll choose “Find a Custom Object.” The User object is not a Custom Object, but that’s what Zapier calls anything that they don’t have in their system.

This is the User ID for the Opportunity Owner and how you’ll get their name.

This is what your steps in Zapier should look like so far:

Step 5: Format Currency

This is 100% optional but if you’re going to do a job you might as well do it well, right? In your Outbound Message Salesforce gives you the amount of the opportunity in this format: 50000.00. No dollar sign, no comma. Not ideal.💰

Luckily, Zapier has a solution for this called “Formatter” that will transform the number for you. Create a new Action and search for Formatter. Choose Numbers and on the next screen you’ll be presented with this:

The Currency Format part still confuses me a bit.

Your input is the amount that came over in the Outbound Message.

You’ll then get an option to test the results of the formatting. If it doesn’t look how you want it, go back to the previous screen and fiddle with the Currency Format options until you get what you want.

Step 6: String it all together to create your HipChat message! 💃

Okay, you’ve told Salesforce to send information to Zapier, you’ve searched Salesforce for the correct information you want to render in your chat and you reformatted the currency because you’re an overachiever. 💅 Let’s finally put it all together and send a HipChat message!

Back to Zapier: Create a new action, search for HipChat, and select “Send Message.”

You’ll need to connect HipChat and Zapier so this is where that Admin Auth Token will come in handy. Grab that and you’re ready to rock and roll.

Next comes the fun part: Setting up the template!

Room: The HipChat room you want to send the message to (when you are first setting this up and testing it, I recommend making a private room or sending the chats to a less populated room.)

From: This is just a free form text field and you can make it whatever you want. I thought Opportunity Bot was cute so that’s what I went with. 🤖 (Too bad I can’t add emojis in Zapier/HipChat because otherwise I totally would)

Message: Here is the what we all came for and the purpose of all those darn searches. You can now craft your message and pull information from each search step.

Basically an elaborate mail merge. 📩

I just wanted account name and user name but because you pulled in the entirety of the Account and User objects, you could pull in whatever you want — user title or maybe account phone? Really, the possibilities are endless.

Notify, Color, and Format: All pretty straight forward — make the choice that is right for you.

Before going live, I recommend sending a couple tests to a test HipChat room to make sure your chat is exactly how you want it.

Once you’re happy, change the HipChat room to real room you want to send the chats to and don’t forget to turn on your Zap!

Step 7: Wait for the sales to roll in

End of quarter sales has the Opportunity Bot working overtime. 😅

The best part of the Outbound Message is that it’s instantaneous! This is because Salesforce is pushing information to Zapier vs. asking Zapier to search your Salesforce instance. So the second a rep closes a deal, you’ll see it in HipChat.

Did you try this? Or have an idea on how it could be better? Leave a comment below or find me on Twitter. I’m always looking to meet other Salesforce enthusiasts. ☁️

In-Line Editing in List Views in Salesforce

I used to shy away from List Views because I thought of them as a less robust version of reports, so why bother with them? Recently I had a discovery that made List Views worth it: in-line editing.

Every week Industry Dive has a process where we confirm that the advertising placements we sold to a client actually ran. Our Ad Operations team confirms the placements ran and then communicates to our Accounting team that the placements can be invoiced.

In order to designate between a placement that we think ran vs. a placement that has definitely ran we have a checkbox on the record named “Reconciled?” Once this box is checked it means we’ve confirmed it has run and Accounting can invoice.

We usually run 80–100 placements a week, so checking that box for every placement would really suck. Enter: in-line editing! 🎊

Now a user can quickly reconcile placements without going into each individual record.

There are some important limitations and things to know about in-line editing and the permission to do so must be turned on by your Admin on your Profile.

If you have a situation where you are exporting a group of records to make a change on all of them that is the same, give in-line editing a try. It’s easier and less error prone than exporting and updating via Excel.

Why I haven’t blogged

Last night I started reading The Dance of the Possible by Scott Berkun. It’s a thin little primer on creativity — what it is and how to get more of it. I’ve always enjoyed Berkun’s no-nonsense, yet slightly humorous tone and this book is no different.

Berkun’s first chapter is called “The Source.” Where do good ideas come from? Aliens? Magic? No, it comes from action.

1. If there’s something you want to do, you must simply go do it.

2. If you want to be better at something, do it more often.

3. If you want to improve faster, ask someone who knows more than you to watch you and give their advice.

I’ve been in a bit of a rut. A rut where it’s hard to put my finger on exactly what is wrong but it’s nagging me nonetheless. I can’t articulate what I want or need, but the same phrase keeps running through my ahead, “Action defeats despair.”

His three point list was a perfect reminder for me.

Feeling sorry for myself is not going to make me feel better. Doing something, even if that something doesn’t turn out to be the thing that makes me feel better, is certainly better than doing nothing. And if I try something and it doesn’t work at least I’ll have an answer. The more things I try, the more things I’ll be able to cross off my list. Eventually I’ll narrow down the cause of this rut.

This rut will not go away by thinking about it. I need to go out and “simply do it.”

But as I just wrote above, I’m not really sure what I need to do! Cut my hair? Get a hobby? Learn a new software? Read self-help books? Your guess is as good as mine. Something I’ve always wanted to do, but never stuck with is blogging.

I follow so many interesting people online and the common thread across all of them is that they take time to write and share their ideas. And I get so much out of all of their thoughts. Writing is a great way to meet people and I’ve learned so much from their thoughts and experiences. I’d like to share my ideas and maybe meet more people or connect with people with similar interests.

So, what does the title of this post have to do with anything? After reading Berkun’s list I started generating a list in my own head. They “Why I haven’t blogged” list.

  1. No one will read what I write, and that will make me feel sad
  2. Too many people will read what I write, and criticize me and my ideas
  3. I have nothing to write about
  4. I have too many things to write about
  5. My ideas aren’t interesting
  6. I don’t know what platform I should use to publish my posts

As soon as I listed these out in my head, I laughed. Many of my list items conflict each other, which of course has led to paralysis and no action.

But today and with this post, I am putting an end to inaction.

Capitalism vs. Good Design

A couple days ago Scott Berkun tweeted that there is an “inherent tension” between good design and capitalism. As someone who has opinions on both topics (and a pledge to start writing more) I thought I’d offer my initial reaction to his tweets.

Put another way: why would anyone choose to be a designer if they thought the world we live in was good enough as is? #ux #design –@berkun

Why would anyone choose to do anything if they were happy with the status quo? What makes humans unique and incredible is our ability to think about our thinking and challenge those assumptions. Much of the actions we take in life are a direct rebellion against the status quo. We want to learn more, get in better shape, have deeper relationships, make more money, etc. All of these require a change. Design is no different.

There is an inherent tension between the aspiration of good design and capitalism. You profit more from not completely solving problems. — @berkun

There is a remarkable amount of hubris displayed by someone who would say, “Yes, I have designed the the answer to a problem but I am going to withhold it in order to make more money from you with a later release.”

Firstly, I have never met someone who has completely solved any problem. As Thomas Sowell said, “There are no solutions, only trade offs.” Secondly, I have never met a high achiever who purposely sandbagged their work in this way. People want to release what they believe is their best work into the world. After receiving user feedback, they will iterate and create and new and better version. As user interviews and research show there are always more problems to solve.

And the beauty of capitalism is that it rewards those who solve problems through value creation. I don’t see the tension at all.

Originally published at on August 24, 2017.

Writing it down

I am always delighted when I come across something I wrote in the past. Well, maybe not always delighted but definitely interested. I love reading something and thinking, “Ha! That’s not even a big deal anymore” and generally gaining insight from my past thoughts.

I have started (and abandoned) so many blogs. If I had just written a simple paragraph about my day instead of beating myself up for not writing, I would most definitely have a lot more things written down than I do today. But alas, I let the perfect be the enemy of the good. I have deleted lots of content off the internet (or thrown out half filled journals–why?!) simply because I was frustrated with myself.

This year I made a major step forward in my practice of writing. I committed to a “Monthly Summaries” in Dropbox Paper. On the first of each month I have a reminder set up to ping me to write a review of my previous month. I go through my work & personal emails, calendar, Camera Roll on my iPhone, tweets, and Facebook and put together a ~1000 word entry on what happened. Now that we are 8 months into the year I am REALLY appreciating that I committed to this seemingly small act.

Last night I read a blog post by Alice Goldfuss about imposter syndrome. I realized I have imposter syndrome about writing. “I’m not that interesting.” “I’m not a good writer.” “I have nothing to share” are all thoughts that have crossed my mind (and lips). Her post is what nudged me to finally say to myself, “Enough, just get it out there.”

I hope my writing will do the same for someone else. And if not? I’ve improved my writing skills, my coding skills, and documented my life. And that seems like a decent end in and of itself.

Originally published at on August 22, 2017.

How to Effectively Work for a Manager You Never See

Whether you work from home or your boss works remotely, the workplace today is much different from the centralized offices of the past. For many organizations, remote employees spread across the country are now the norm. Here’s how you can effectively work with your boss, even if you aren’t in the same place.

This post originally appeared on Levo League.

Between video conferencing, email, and instant messaging, physical proximity to the office is no longer a requirement. Companies are hiring based on talent and fit, not if someone can be in their chair 24/7. This change has led to entire teams being spread across time zones, states, and even countries. While it can be tricky to report to a remote manager, I’m here to tell you it’s possible.

I work for a non-profit in Washington, D.C., but my manager works from her home in southern California. I’ve been working with her remotely for over a year, and in that time have expanded the responsibilities of my role and received a salary increase. Here are the tips that have helped me succeed:

Establish Regular Communication

If you don’t have a scheduled weekly call or Skype session with your boss, set one up right away. My boss and I talk every Monday morning for about 45 minutes about my priorities for the week. I discuss what I finished from last week, what I have planned for the upcoming week, and also ask her if she has any projects or tasks that she would like me to work on.

While I personally think phone calls are the best if you can’t meet face to face, even a weekly update email could get the job done. The adage “out of sight, out of mind” rings true here: You don’t want to forget about each other just because you don’t see each other in the office every day. Another communication tip–send an email to your boss at the end of each week listing what you’ve completed. This is especially helpful if your relationship with your manager is new and you want to show them that you’re effective. Be sure to ask your manager their preferred methods of communication — you certainly don’t want to annoy them!

Build Trust to Avoid Micromanagement

My relationship with my manager succeeds because she trusts me, having already demonstrated my effectiveness. My boss isn’t a micromanager at all. This isn’t to say that she doesn’t communicate with me during the week,but she doesn’t constantly send emails asking for status updates.

Once a project is assigned she gives me the space to complete it. Building trust can take time, which is why communication is so important. In the beginning you’ll probably want to err on the side of more frequent communication and taper off as you see trust being built. Also, just because you manager isn’t in-office, or you work from home, with you doesn’t mean that you can’t come to them with problems or questions. Picking up the phone every five minutes is probably over the top, but go to your manager when you have issues with project prioritization or need help with a task. Showing your manager that you depend on them and view them as more than a person to take directions from will help build mutual trust. And being proactive when you have a problem or are stuck will show your manager that you tackle problems as they come — and aren’t too proud to ask for help.

Be Respectful of Each Others’ Roles

It’s easy to feel like you don’t have a boss if your boss isn’t in your office every day, but this doesn’t give you free reign to shirk responsibilities. I still ask my manager for permission on days I work from home, or if I plan to go meet a donor for lunch. It’s important to share your schedule and have transparency. Respecting your manager’s authority, even when they aren’t physically there, will help them respect you as an employee and ultimately lead to increased responsibilities and freedom.

Originally published at on September 30, 2014.