Use Google Sheets to log data and grab the most recent value in other Zapier jobs

Basically, use Google Sheets as a hacky database.

Zapier doesn’t enable you to store an environment variable across jobs, but you can use Google Sheets to log your data and retrieve the most recent value (or any previous value).

[Edit March 8, 2016: Zapier now allows you to store variables within a job across runs.]

Requirements

  • a Zapier account with the multi-step editor (currently in beta)
  • a Google account

Keep reading

Create your own HipChat slash command with Zapier

This takes the input from a slash command, such as /slash this is a test message, and makes the input available for subsequent Zapier actions.

Requirements:

  • a Zapier account with the multi-step editor (currently in beta)
  • HipChat room ownership or admin account

Zapier

Make a new Zap. Select “Webhooks” (Catch hook) as the trigger. If prompted to “Pick off a Child key”, leave it blank and click “Continue”.

You’ll be presented with your new webhook URL. Copy to clipboard. Don’t click “OK, I did this” yet.

Keep reading

How to build HubSpot workflows that respond to clicks to offsite links in emails

HubSpot’s workflow tooling is simple and powerful, but there’s one thing it doesn’t do out of the box.

For every qualifying person, I’ll use a workflow to send a welcome email containing a unique registration URL. I also want to send an automatic reminder after a few days if he/she doesn’t click the link.

Simple, right? Well, no.

  • Even though it’s possible to see whether a user has clicked a link in a particular email, it’s not possible to build workflow triggers directly off those clicks.
  • I don’t have access to the destination domain, so I can’t track visits.
  • I can’t rely on CSS or HTML to identify the link.

To make this possible, I now do the following:

  1. Create a redirection page and link to that page instead
  2. Create an event that tracks any user’s visits to that URL pattern
  3. Create a smart list containing everyone who has experienced that event
  4. Use that smart list to trigger workflow unenrollment

Here’s an example.

Keep reading

Some of My Best Zapier Recipes (Zaps)

Zapier has become my answer to any quick project need, and a must-have for hack days. It’s “If This Then That” but dramatically more powerful, and for many more services—especially the tools we use at work. And it lets me scratch an itch without having to beg a developer to do it for me.

Here are a few of my favorite problem solvers from the past year.

1. Gmail -> HubSpot

Outcome: When replying to someone who wants to stay in touch, I can say “I’ll add you to our newsletter” and actually do so with a couple keystrokes.

How: In Gmail create a label called “newsletter”.

In Zapier, trigger on any new email in a thread. Mailbox/tag name is your new label. Search String is “from:<your email address” (without quotes). {{The Email}} to be added as a HubSpot Contact is {{To Address}}.

To trigger the Zap, apply the label to the thread.

2. Web Hook (Retrieve Poll) -> Email

Outcome: When a particular phrase is mentioned on Hacker News, email me.

How: There’s a third-party site that provides full-text search for Hacker News. You can poll it with your search. The Web hook URL is: http://hn.algolia.com/api/v1/search_by_date?query=“<search term>”&tags=comment

Key: hits

My email looks like this:

Subject: Hacker News mention of <phrase>

{{story_title}}

{{comment_text}}

{{author}}
https://news.ycombinator.com/item?id={{objectID}}

3. RSS -> Buffer

Outcome: When new jobs are posted in Resumator (our applicant tracking system), they are tweeted out on our jobs-specific Twitter feed, @knewton_jobs.

How: Resumator provides an XML feed. A web developer on my team built a simple script that translates it into a proper RSS feed. Zapier then posts new entries to Buffer, which sends the tweets.

Pretty straightforward. There are two delays: (1) Resumator only updates their XML feed once/day, (2) Buffer by nature won’t post things immediately. The Buffer delay is helpful because we don’t know exactly when Resumator will update its feed and we want tweets to go out when people are likely to see them (e.g., weekday mornings).

4. Gmail -> HipChat

Outcome: when someone (especially our security team) sends a critical email, they can include a keyword in the subject line will automatically blast a notification to everyone in chat.

How: We use Hubot, and the account has its own email address. We use that address for this Zap. First, we make sure it’s a member of any groups that are likely to need this email relayed to chat, such as all of the tech organization or the entire company.

Next, we create a Zap for every particular list mapped to a specific HipChat room. Here are the Zap’s Gmail rules:
Mailbox/tag name: INBOX
Search String: list:<group email address> (subject:“Broadcast” OR subject:“Outage” OR subject:“Alert”)

HipChat rules:
Room: <room of choice>
From: {{from_name}}
Message: @here Email Subject: {{subject}} - {{message_url}}
Notify: yes
Message format: text

(Note: the @here notification does not work if the message is sent in HTML format)

The {{message_url}} is the email’s unique URL in Gmail. Assuming the recipient is logged into the relevant Gmail account, clicking the link should open up the email directly.

If that turns out to be buggy because people are logged into multiple Gmail accounts, you can instead provide a link to a Gmail search of the message’s ID (the last part of message_url), which will return results showing only the matching message.

5. Web Hook router (Web Hook -> Web Hook -> many HipChat rooms)

Outcome: Notifications from our custom build system are filtered for matching rules and send to various HipChat rooms with color coding for success or failure. By doing it in Zapier we were able to test the idea, deploy, and validate, to the point where additional teams have started asking for them.

How: I created two Web Hook -> HipChat Zaps for every type of alert that needed to get sent, one for success messages (green HipChat background), one for failures (red background).

Each Zap filters for the message it needs (any necessary environment/stack restrictions plus a success message or lack thereof) and fires its notification.

Unfortunately, each Zap automatically assigns its own Web Hook as the starting point. Rather than have the developer keep adding a new endpoint for every new Zap I whip up, I created a Web Hook -> Web Hook Zap that acts like a router. The developer wired up the first POST endpoint. The second part of that “router” Zap relays the POSt message to _every other subsequent Zap_ I create.

So whereas a single Zapier Web Hook looks like this: https://zapier.com/hooks/catch/akfas903/

You can hit many of that once like this:
https://zapier.com/hooks/catch/fs9d8asff,asfjaf8,af89awf,asdf89/
Payload Type: form

(Those are all fake values. Don’t hit them!)

What is a junior marketing associate?

A few years ago I discovered something that seemed bizarre: marketing degree programs at well-known universities don’t teach online marketing, especially startup marketing. At the time I was interviewing recent graduates for a junior marketing role and discovered they had basically no idea what they were doing.

The person I eventually hired had studied the 4 Ps and learned about brand management but had never edited a website, looked at Google Analytics, paid for traffic, written original content for the web, or even used Excel.

In the last few years I’ve continued to look back and wonder what would make the ideal junior marketer. What does a company require of a graduate? What can a college student do to prepare for a job in online marketing, especially at a startup?

My guidelines

My general rule for a team member: you must be able to write, design, or code. If you are not designing or coding, you must be a first-class writer.

Why? Because I want to spend my time helping someone become a better marketer, and I can’t do that if I’m spending my time correcting everyday writing.

Prerequisites (before applying for a job)

There are some more things I would rather not teach someone. These are prerequisites.

  • What is the internet, what is a host/server, what is a web page?

Bonus points if you’re familiar with HTML and CSS. Tumblr and GA are free: if you’re really excited to work in marketing, why haven’t you tried it, yet?

  • SEO and SEM are different

Otherwise, this tells me this you don’t understand the Google search results page (SERP), and because you think all results are either the result of money or meta keywords, you don’t think things through very well. Yes, I could clarify in two seconds, but I shouldn’t have to.

  • How to use Excel (my go-to requirements: comfortable with pivot tables and vlookup)

Can you import messy data, clean it up, rearrange it, and analyze it? Can you create a model that lets you repeat this later with minimal effort?

  • How to articulate what you are hearing and thinking

What are our assumptions? What are we testing? What does success look like in a particular situation?

  • Good writing: grammar, spelling, minimal fluff. Strunk & White.

Marketing is about communication. Be good at the most basic form.

  • A sincere interest in getting people to want what you have

Too often people apply for marketing positions and talk about working on “strategy”. That sounds like lazy thinking to me. I need to trust that you will be excited in the weeds, where we spend a lot of time. Strategy is cool, and we’ll talk about it, but that’s not really what being a junior marketer is about.

  • A comfort with learning new tools

I get a little nervous when a resume lists out every analytics and social media tool the person has used. Learning new tools comes with the territory—it’s not an accomplishment and rarely worth listing.

What you’ll learn (after you’re hired)

Anyone can learn how to market. I (or any competent marketing lead) will mentor on things like:

  • How to work backward from company goals to marketing goals
  • How to think broadly about acquisition/engagement/retention
  • How to find traffic
  • How to attract traffic, both paid and organic
  • How to determine whether a click/ad/campaign/service is a good investment
  • How to write and design using best practices
  • How to build a funnel
  • How to write simple copy designed to move through a funnel
  • How to convert
  • How to A/B test
  • How to email
  • How to track everything you’re doing
  • How to report on what you’re doing
  • How to make decisions on what you’re seeing in reports

Assessing an individual’s progress

We measure progress down the generalist marketing path by anchoring discussions on eight functional areas:

  • Understands, articulates, and advocates for the company brand
  • Understands the market/space in which they are marketing and uses good judgment in delivering optimal materials
  • Thinks rigorously through all steps of a marketing funnel or campaign and connects the dots between components
  • Correctly collects, analyzes, and synthesizes data to provide insight and direction for the company’s marketing
  • Works independently and effectively in a fast-paced, agile marketing environment
  • Effectively balances creativity and constraints in driving projects to completion
  • Leverages the right tools, services, and people to be as effective as possible
  • Helps the company to achieve its goals faster by identifying opportunities for change and process improvements, generating solution options, and executing when appropriate

I’m curious how others think about hiring and mentoring junior marketers. What do you look for? How do you coach and mentor?

The online marketing tools starter kit

If I were building a marketing operation from scratch today, here’s what I’d use to run mission control. This technology setup is not free and assumes the business is ready to invest in marketing in order to generate revenue.

  • WordPress for website and blogging
  • Pagely for hosting WordPress
  • HubSpot for all-around marketing toolkit and automation, including email, landing pages, and analytics
  • Wistia for video hosting, embeds, and analytics
  • Optimizely for A/B testing on WordPress pages
  • Segment for one-to-many front-end JS
  • Heap for retroactive analysis of logs (clicks, pageviews, and custom events)
  • Google Analyics because duh
  • Formstack for misc. forms outside HubSpot
  • Zapier for stitching services together
  • Printfection for all merch (e.g., t-shirts)

What am I missing?

So you want to contact a startup?

At a startup–or any small company, really–dealing with the outside world is hard.

If you are not a customer (current or prospective) or a PR opportunity, startups often have no use for your email or phone call, and in that chronically understaff world, there’s likely no one assigned to “the public”. If you’re lucky, they have assigned an office manager or their customer support group to field incoming traffic. If not, you might be reaching a managerie of PR/BD/sales/marketing folks.

At some one point or another I’ve been privy to almost all our incoming traffic, including email, phone, chat, and social media. Due to my role, my personality, and my tenure with the company, I have a good sense for how to reply directly, where to forward various audiences, which are OK to ignore, and which deserve a snarky response.

Here’s my advice for specific groups trying to reach a startup.

Customers

  • First, email the company through the provided address or form
  • If necessary and possible, call the company
  • Tweet at them

Note: Twitter can be good for getting attention, but it also could also mean relying on the social media folks to get your info over to support, and also means you won’t actually have a ticket, which can actually drag out resolution. (Yes, some companies use something like desk.com and choose to monitor tweets as tickets, but it’s an exception to the norm.)

Prospective Customers

  • Take five minutes and read the actual text on the website. You’d be surprised how much time has gone into answering your questions.
  • B2B: Submit whatever marketing/sales form is provided. This will route you to someone whose purpose in life is to contact you.
  • B2C: Email your questions to support. They have better ticketing than a general inbox and are already equipped to answer product questions, even though it's not really their job to sell you.

Notes:

  • Send an actual, well-formed question which you will use to make a purchase decision, not something like “Tell me about your product, thanks.”
  • If you submit info and a B2B company does not get back to you, it might be because you’re not a good fit for the product (yet). There are many reasons this might be the case.

Press

In order:

  • Email a company executive directly with an interview request
  • Email a press inbox
  • Call a press inbox
  • Email a general inbox

Job Applicants

If possible, and in order:

  • Contact someone you know and have them refer you directly to the hiring manager and (if applicable) recruiting lead for the position
  • Apply for the job

We’re organized enough to handle applications as is. But if you’re feeling antsy and need to follow up, I suggest you:

  • Follow up directly with the recruiting lead or team
  • Follow up directly with the hiring manager
  • Follow up directly with the department head

Don’t:

  • Email the company’s general inbox asking for a response
  • Email the company’s general inbox asking to have coffee with someone to learn more about the company/position
  • Ain’t nobody got time for that.

Salespeople / Cold Calls

In general, you’re wasting your time. But if you must hit your rolodex, email someone directly, particularly the person likely to make a purchase decision.

I’m amazed how many salespeople skip their own research and email our general inbox expecting us to forward their pitch email to the right person.

Don’t:

  • Email the press inbox (immediate blacklist)
  • Email multiple general inboxes (ditto)
  • Email the same thing to 10 people (it’s a startup: we sit next to each other, we talk, we roll our eyes at you)
  • Try to connect with someone on LinkedIn out of the blue
  • Call the company

Do you know why you don’t call a startup to sell something? Because most people at startups don’t use company phones–they email, chat, and tap each other on the shoulder, or use their own cell phones. I only use my VoIP phone to dial out; the only people who call me at work are salespeople, so I literally never answer the phone.

“Buy my company or technology” Pitches

Unless you know someone at the company and contact him/her directly, it’s a total waste of time. Even if you do have something interesting, the company can’t risk the chance that you’re a patent troll lining up a lawsuit.

Recruiters Pitching Services or Applicants

  • Contact our recruiters directly (if you’re good at your job, you’ll figure out how)
  • Anything sent to a general inbox is deleted

If I’ve forgotten something, tweet me @superstrong

WordPress local development using WP Stack

I’ve been working with a local development extension of WP Stack for a couple months at Knewton, and this now my workflow. I can usually develop in local master, but when needed I’ll work in a local development branch first.

My point is, it’s much simpler to do this than it used to be–so easy a marketing guy can do it. I don’t know of many places where the marketing team has developed this level of self-sufficiency.

Development

  • Open iTerm2

    The dev guys told me this is better than Terminal. I use these three panes to manage my stuff. They use like 12.

  • cd projects/marketing-deploy/vagrant/knewton.com
    • “marketing-deploy” is a private repo (hosted on Github) that handles all our deployment configuration
    • “vagrant” is Vagrant, which handles virtualized development. I’m basically running a second computer on my computer.
    • “knewton.com” is a copy of our WordPress-based site, including database and server configs
  • git pull

    Fetch and merge from the repo’s origin (Github)

  • vagrant up

    Boot up the Vagrant virtualization

  • vagrant knewton:sync

    Sync the database from production to local

  • vagrant knewton:localdev on

    Change my hosts file to point www.knewton.com to my local version

  • Do some work
  • vagrant knewton:localdev off

    Revert hosts file

  • vagrant suspend

    Shut down the Vagrant virtualization

Deployment

  • ssh to the admin box

    The admin box is a separate instance hosted on AWS that handles deployment, rollback, restarting nginx/memcached/etc., and more with single-line commands

  • switch to the deploy user
  • cap deploy