January 26, 2015

Video Content MarketingIn 2017 video will account for 69% of all consumer Internet traffic (Cisco). Content marketing via video is growing rapidly and having a video content marketing strategy is necessary.

According to DigitalSherpa, videos help to increase people’s understanding of your product or service by up to 74%. Video is not only growing – it’s effective. Below is a list of everything your marketing team needs to create stellar video content in 2015 – helping you gain a competitive advantage in your industry.

The Right Camera and Lens

Your iPhone camera won’t cut it. Neither will that outdated digital camera. Research and purchase a high-quality camera for your marketing team and think of it as an investment. It may cost several thousand dollars up front, but the return on investment will be quick. Once you have the camera (and additional equipment listed below) your team can produce video at little to no additional cost. Things to consider when researching and purchasing a camera:

  • Find a camera that can record video without timing out after 30 minutes (if you want to shoot something longer than 30 minutes, you don’t want it to time out)
  • The lens is arguably more important than the camera – it can make or break the quality of your video – so don’t be afraid to go big on the lens decision
  • For the lens – consider focal length, maximum aperture and of course lens mount (this determines whether the lens will fit on your camera or not)

Professional Lighting

That fluorescent lighting in your office will not do the job, as overhead lights can create bad shadows on the face. Three solid, professional grade lights should do it. Set them up strategically throughout your studio (see more about the studio below) to get the lighting just right. Avoid glares and excessive shadows.

  • Block out light from outside sources as much as possible
  • Reflect light off of the ceiling, additional walls, etc. to get the lighting and shadows just right

High Quality Audio Recording

If you buy a really nice camera for recording video, you may also be able to use that for recording the audio. This eliminates the step of purchasing several additional pieces of audio equipment and also eliminates the need to edit sound and images together.

If you aren’t satisfied with the audio quality of your camera, consider a portable digital recorder. You’ll also need connectors, mics, and software to edit your video and audio together (i.e. Final Cut Pro).

  • Empty room? Not good. Sound will bounce around and create a low-quality finished product
  • Make sure the presenter(s) is close enough to the microphone (or wearing the mic on their person)
  • Test audio levels (whether using camera audio or portable recorder) prior to shooting your video

A Studio

Makeshift or not, it’s important to have a room that can function as a studio for shooting professional looking videos. It’s best if this room becomes a dedicated studio in your office to simplify the production process. Having a dedicated room also helps encourage your team to take video often – the studio is there waiting, why not go make a video?

  • Backdrop should be a solid color. Avoid using an off-white wall; you can use paper or purchase a custom backdrop
  • Install sound dampening panels on the walls or bring in additional things to prevent that empty-room sound
  • Turn off vents in your studio to reduce fan noise
  • Purchase a tripod that has multiple ways to adjust height and angle, and keep it in your studio

Good Talent

Good talent goes without saying – you need people on your team who are willing, able, and excited to get in front of the camera and present. Start by using free teleprompter software off of the Internet to get scripts read aloud and shot on camera. Then graduate to memorized/improvised scripting to improve video flow and make it more engaging.

Budget and Buy-In

None of this is possible without budget and buy-in from directors and executives. Below are a few stats about video content marketing that may help you get the approval needed:

  • 64% of marketers expect video to dominate their marketing strategies in the near future (Nielsen)
  • 90% of users say that seeing a product video is helpful in the decision-making process (DigitalSherpa)
  • Using the word “video” in email subject lines boosts email open rates and CTR, while reducing unsubscribes (Brainshark)
  • Video appears in about 70% of the top Google listings (Marketingweek)
  • People who view product videos are 85% more likely to make a purchase (Comscore)
  • 1 million smartphone users watched video on their devices at least monthly in 2013, and this is projected to rise to 86.8 million in 2014 (Brainshark)

Now how do you know if your video content is actually generating leads? One way to tell is by including a call tracking number in each video and encouraging users to call your business to learn more. 66% of sales managers rate phone leads as excellent (BIA/Kelsey) – better than any other lead type – so encouraging your audience to call you is smart.

What other tips do you have for producing creative video content marketing? Please leave tips in the comments section below!

The post How to Create Stellar Video Content for Marketing in 2015 appeared first on Ifbyphone.


Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 23, 2015

Twilio Support TwitterWhen you reach out to us for help, we want to help as quickly as possible. We’re here and we’re listening no matter what communication channel you use: fax, carrier pigeon, telegram, or Twilio Bat-Signal. Today, we’d like to introduce to a new handle on a very familiar channel. @TwilioHelp is the new Twitter handle that connects you to Twilio Support directly.

Whether your issue can be handled in 140 characters or less, or you need more in depth support, @TwilioHelp is the place to go. @TwilioHelp is monitored 24/7 by Twilio’s Support team. When your question requires a little more TLC than we can offer on Twitter, we will create a ticket, follow up with you via email, and ensure your issue is solved promptly.

So when will @TwilioHelp launch? It’s already live! Blam, we told you were doing things fast. You can always ask a question, say hi, and send your favorite GIFs to our main Twitter handle as well, @Twilio.

Let us know if you have any questions or comments, we’re here to help.

Introducing @TwilioHelp: A Twitter Handle For Twilio Support

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Feature Friday is a bi-weekly blog featuring a new video brought to you by our Customer Success Team (CST). CST focuses on tutorials and feature enhancements that help our customers gain a clear understanding of how exactly they can make their Ifbyphone experience perfect. After all, we strive to be the easiest company you’ll work with!

Voice broadcasts are one of our most used applications, and for good reason. Calling out to thousands of customers would take too long! But when you’re utilizing this application, there are several different options available. What makes sense for you?

The options to select might seem obvious to seasoned Ifbyphone pros, but might appear confusing to someone just getting used to the applications. That’s why we’ve created this video explaining the various broadcast types. It’s easy to know what you want to get accomplished, and now you’ll be able to know which broadcast type pairs up with your expectations.

Have another idea for a video? Tweet us at @IfbyphoneCST or let us know at support.ifbyphone.com today!

The post Feature Friday: Choosing Your Broadcast Type appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 22, 2015

inshopAutomotive shops are focused on hardware, and rightly so. A few lines of code, or a new app won’t fix a blown transmission or a dented door. Nevertheless, BOLT ON TECHNOLOGY founder Mike Risich, saw an opening in a local automotive shop’s workflow he thought he could improve using his software.

When a service request comes in to an automotive shop, technicians have to log all the data: license plate, work requested, date, time, etc. Typically, there’s one computer at the shop where all of this data lives in a shop management system. The busier the shop is, the longer a line there is to enter the data. Technicians end up entering in the same information twice, once on paper and once in the shop management system. This wait time holds up customers and technicians alike, and ultimately costs the shop business while they’re waiting to do something really, really simple.

Mike Risich founded BOLT ON TECHNOLOGY as a one stop shop any and all automotive information needs.

BOLT ON TECHNOLOGY helps shops automate systems so they can make vehicle checks faster and easier. Risich actually founded the company while teaching software development night classes for aspiring developers. As luck would have it, a few of his students worked at an automotive repair shop and needed help fixing their shop’s software. There, Mike saw the window of opportunity for BOLT ON TECHNOLOGY’s Mobile Manager Pro software.

MessageManagerUsing Mobile Manager Pro, service repairmen and women can increase their repair orders, take pictures of repairs, and text customers using Twilio SMS and BOLT’s Message Manager product (pictured right).

When a technician sends texts to customers, 85% of the time, the customer responds within a minute. Before Twilio SMS, the customer’s average response time was 1 hour and 17 minutes via phone call. This time is critical. The faster service repairmen get an approval from the client, the faster they can get to work.

Everything repairmen can do with a laptop, they can do with an android tablet using BOLT ON TECHNOLOGY’s Android compatible software. They don’t have to enter the same information in a system twice because BOLT ON TECHNOLOGY syncs all the information they enter on any device with the shop management system

BOLT ON TECHNOLOGY Software Automates Repair Industry, Streamlines Customer Communications

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Welcome to the final part of our series on integrating Twilio with your Rails 4 app. In Part 1 we walked through signing-up for a free Twilio developer account, getting a phone number and processing an inbound phone call. In Part 2 we secured the webhooks, used Twilio’s REST API to send outbound SMS and MMS and processed delivery receipt notifications. In this post we are going create a contextual VOIP experience for your users by learning how to:

  • Create a TwiML app
  • Integrate the Twilio Client JS SDK
  • Generate a Capability Token
  • Connect the VOIP call

Contextual VOIP

In our previous blog posts we used Twilio to make phone calls and deliver text messages. These capabilities are quite powerful but they are often siloed away from the context of the application that the user is interacting with. With Twilio Client WebRTC you can embed a VOIP experience directly into your Rails 4 web application. This way the user has all of the context of your application in front of her as she’s engaged in a voice conversation.


For the purpose of this blog post, we’re going to build a simple web page that a customer service agent could use to contact a customer who has requested a call back. The customer service agent will initiate the call on the web page and the customer will receive the call on their mobile phone. Be warned, the page we’re going to build won’t look nearly as beautifully designed as the image above but you’ll learn everything you need from a coding perspective to build a page like that in the real world.

If you haven’t worked through Part 1 and Part 2 of this tutorial series, go ahead and clone this Github repo so that your code base is up to speed. Run the following commands and you’ll be ready to go!

git clone https://github.com/crtr0/twilio-rails-4.git
git checkout part2
bundle install

Create the TwiML App

To get started building a VOIP experience using Twilio Client, we need to learn about TwiML apps. Log-in to your Twilio account and click on “Dev Tools”.


You’ll see a list of handy tools that you can use when you’re building or debugging your app. Click on “TwiML Apps” and then click on “Create TwiML App”.


You might notice that this configuration form looks quite similar to the form you fill-out to configure a phone number. In place of a phone number there is a field called “Friendly Name”, which you can think of this as the name of your app. When your app needs to initiate an outbound VOIP call, the Voice Request URL will point to a route in your Rails 4 app that will generate TwiML and tell Twilio what to do regarding that call. Go ahead and fill-in the Friendly Name and click Save. You’ll be taken back to a list of your TwiML apps and the one you’ve created will be at the top. Click on that link for the new app.


Your TwiML app has a unique identifier called a Sid. Copy the value for that Sid and open up the file

  in your text editor. Add the following highlighted lines.

 secret_key_base: 'XXX'
 twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
 twilio_auth_token:  <%= ENV["TWILIO_AUTH_TOKEN"] %>
 twilio_twiml_app_sid: <%= ENV["TWILIO_TWIML_APP_SID"] %>


 secret_key_base: 'XXX'
 twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
 twilio_auth_token:  <%= ENV["TWILIO_AUTH_TOKEN"] %>
 twilio_twiml_app_sid: <%= ENV["TWILIO_TWIML_APP_SID"] %>

In your terminal, create a new environment variable to store this value:

export TWILIO_TWIML_APP_SID=<replace with your TwiML app Sid>

Build an Agent View

Now that the TwiML app has been created, let’s turn our attention to creating a view for the customer service agent who is using the web application. Create a new file called


require 'ostruct'

class CustomerServiceController < ApplicationController

 def agent
   # Hard code a default customer to display. In production, this
   # would come from a database.
   @customer = OpenStruct.new(
     'id' => '123',
     'first_name' => 'Jane',
     'last_name' => 'Doe',
     'city' => 'Seattle',
     'state' => 'WA'


This controller defines a single action called agent. At the moment the action simply initializes a hard-coded customer object. In a real application this information would be fetched from a database or queue of customers that require a call back.

Next create a new directory:

 . In this directory, create a file called

<h1>Agent Dashboard</h1>
<p>Status: Customer has requested a callback.</p>
 <tr><th>Name</th><td><%= @customer.first_name %> <%= @customer.last_name %></td></tr>
 <tr><th>Location</th><td><%= @customer.city %>, <%= @customer.state %></td></tr>
<button onClick="call()">Make Call</button>


 , add the following line:

get 'customer_service/agent' => 'customer_service#agent'

Start your Rails server and navigate to

  to verify that the web page looks like this:


This is the view for our agent and it helpfully displays information (context) about the customer that she is about to call.

If you see the page above, you’re well on your way. If you don’t, make sure to check out the output on the command line from the rails server command. It may have some useful information for debugging the problem. Now let’s get that “Make Call” button to work.

Integrate the Twilio Client JS SDK

The first step when getting started with the Twilio Client JS SDK is to include a JS file. Open

  and add the following line to the bottom:

<script type="text/javascript" src="https://www.twilio.com/blog//static.twilio.com/libs/twiliojs/1.2/twilio.min.js"></script>

There are two steps to getting an outbound call initiated:

  1. Initializing the SDK
  2. Connecting the outbound call

To initialize the SDK, call Twilo.Device.setup. Add a <script> block at the bottom of the view file to do this.

// works on IE9 and above
document.addEventListener("DOMContentLoaded", function(event) {
  Twilio.Device.setup("<%= @token %>");


  method requires a 
  parameter to be passed-in, we’ll return to that in a minute. To connect the outbound call you call
 . Define a function called
  that does this:

// works on IE9 and above
document.addEventListener("DOMContentLoaded", function(event) {
  Twilio.Device.setup("<%= @token %>");

function call() {
  Twilio.Device.connect({id: 123});

Ok, we are now done integrating the Twilio Client JS SDK. Let’s discuss this mysterious token.

Generate a Capability Token

In part 2 of this tutorial you learned how to use the Twilio REST API to send outbound SMS and MMS messages. This code required the use of your security credentials (Account SID and Auth Token) but the code was server-side, so you didn’t have to worry about your users sniffing your authentication credentials.

Making a phone call from a browser is a bit different. You want a web page to be able to connect to Twilio and initiate (or perhaps receive) a phone call. But it’s clear that embedding your authentication credentials in JavaScript on the web page is unacceptable. Somehow your Rails app needs to grant the browser the capability of making a phone call without leaking any credentials.

That is where the Twilio Capability Token comes in. A capability token is  a JSON Web Token that you embeds one or more capabilities that your app is granting to the browser, for a limited period of time. Creating a capability token is easy, just open up

  and add the following lines to the bottom of the agent method:

capability = Twilio::Util::Capability.new Rails.application.secrets.twilio_account_sid, Rails.application.secrets.twilio_auth_token
capability.allow_client_outgoing Rails.application.secrets.twilio_twiml_app_sid
@token = capability.generate()

Dial the Customer

Now that you’ve generated a capability token you have satisfied the requirements for setting-up the Twilio JS SDK. The user’s browser is now authorized to make phone calls. However you now must generate some TwiML that tells Twilio what to do once the VOIP connection is made between the browser and Twilio. In this scenario you want to dial the customer who requested the call back.


 . Create a new action called

def connect_customer
   # mocking a db of customers, connect to real db in production
   customers = {
     '123' => {'phone_number' => '<your phone number here>'},
     '456' => {'phone_number' => '+15553333'}
   # accessing mocked customers db
   customer = customers[params[:id]]
   response = Twilio::TwiML::Response.new do |r|
     r.Say 'Hello. Connecting you to the customer now.', :voice => 'alice'
     r.Dial :callerId => Rails.application.secrets.twilio_phone_number do |d|
       d.Number customer['phone_number']

   render_twiml response

Please make sure to use your personal phone number in the code snippet above. It will help greatly with testing.

Now, there are three interesting things happening in this action:

  1. An id parameter is passed-in and we use it to do a lookup in a database of customers.
  2. TwiML markup is generated that dials a particular customer’s phone number.
  3. The callerId of this call references a new configuration setting

To create this new configuration setting, open

  and add the following lines.

 secret_key_base: 'XXX'
 twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
 twilio_auth_token:  <%= ENV["TWILIO_AUTH_TOKEN"] %>
 twilio_twiml_app_sid: <%= ENV["TWILIO_TWIML_APP_SID"] %>
 twilio_phone_number: <%= ENV["TWILIO_PHONE_NUMBER"] %>


 secret_key_base: 'XXX'
 twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
 twilio_auth_token:  <%= ENV["TWILIO_AUTH_TOKEN"] %>
 twilio_twiml_app_sid: <%= ENV["TWILIO_TWIML_APP_SID"] %>
 twilio_phone_number: <%= ENV["TWILIO_PHONE_NUMBER"] %>

Create the corresponding environment variable:

export TWILIO_PHONE_NUMBER=<replace with your Twilio number>

Finally, edit

  and add the following line:

post 'twilio/connect_customer' => 'twilio#connect_customer'

You can test your progress by starting your Rails server and running the following curl command on your local machine:

curl -X POST http://localhost:3000/twilio/connect_customer --data id=123

You should see the following TwiML document returned:

<?xml version="1.0" encoding="UTF-8"?><Response><Say voice="alice">Hello. Connecting you to customer support now.</Say><Dial callerId="your Twilio number"><Number>your phone number</Number></Dial></Response>

Connect the VOIP Call

The last thing to do is to return to Twilio.com and edit your TwiML app to point the Voice Request URL to the route you’ve defined to dial the customer. Remember that Twilio needs a publicly-addressable URL, so feel free to use Ngrok as we did in the past tutorials or simply deploy your Rails 4 app to the public internet. Once you have a fully qualified URL for your route (i.e.

 ), please paste it into the Voice Request URL field and hit Save.



Now it’s the moment of truth. Navigate to

  and click the “Make Call” button. If you’re using Chrome or Firefox, you will see a browser dialog appear asking for permission to access your microphone. Please click “Allow”.


If all goes well, you’ll hear the message “Hello. Connecting you the customer now.” and then your phone will start to ring. Feel free to have a friend answer your phone and have a chat with them via your web browser.

BOOM! Contextual VOIP in the Browser

In this blog post we explored how to create a contextual VOIP experience using Rails 4. In addition to some core Rails concepts like creating controllers/actions/views, we learned how to:

  • Create a TwiML app
  • Integrate the Twilio Client JS SDK
  • Generate a Capability Token
  • Connect the VOIP call

We also just scratched the surface of what you can do with Twilio Client. Here are some fun exercises to build on what you’ve learned:

  1. Create a new web page that lets the agent answer incoming calls
  2. Create a new web page that handle a browser-to-browser call (all VOIP)
  3. Use the audioConstraints parameter to tweak Chrome features like auto gain control

All of the code for this part of the tutorial has been posted to Github. Hope you’ve enjoyed this Twilio on Rails series. Happy hacking!

Twilio on Rails Part 3 – Adding Contextual VOIP Using WebRTC to Your Rails 4 App

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Every now and then there’s a commercial that captures the public’s attention and inserts itself into mainstream thought and humor. If the company who created that commercial is (very) lucky, it becomes “household:” a theme, image, or concept that everyone understands and relates to. It’s more than going viral, as viral videos or memes on the Internet are often a flash in the pan and fade until the next big thing comes along. For a commercial to become household, something about the writing or the images must capture something that the general population claims as true, that resonates with us for a variety of reasons, and sticks.


One such commercial is State Farm’s standalone spot “Jake from State Farm,” in which a woman comes downstairs at 3am to find her husband on the phone having a hushed conversation and interprets it to be less innocent than her husband claims. As it turns out, he is actually on the phone with Jake from State Farm, getting information about a discount on insurance.

The commercial is funny for a number of reasons: the writing, the delivery, the actors, the pauses. It’s hard to pinpoint the exact reason for its success, but successful it certainly was: memes, parodies, and even Halloween costumes appeared because of it, and even now, over three years later, I still see this commercial pop up on my screen. This tweet from a Twitter user just days ago illustrates the depth with which Jake from State Farm has penetrated the cultural landscape:

Screen Shot 2015-01-22 at 8.39.39 AM

But it’s more than the comedy that turned this commercial into a household concept. It’s funny, to be sure, but there’s something more timeless that makes it stick; a relatability that appeals to audiences in a broad way and reflects our interests back to us in a way that resonates. In the case of Jake from State Farm? That resonance lies in the phone call.

One of the things that customers across industries are most frustrated with, studies show, is the inability to speak with a live service representative when they have issues that need to be addressed. We are a nation on hold, and buyers are sick of it. In their Jake commercial, State Farm proves their awareness of this frustration and shows customers that any time—day or night—you want to contact them about insurance, they will have someone there waiting by the phone. Even at 3am. And even when your wife is yelling at you. They put a phone number right there on the screen, communicating to viewers everywhere that if they have questions, all the have to do is call.

More recently, other companies have picked up on buyers’ need to contact a live representative—wisely: after all, 69% of customers rank live assistance as the best kind of service they can receive. Discover, for example, has rolled out a series of commercials that highlight their live service with the line, “We treat you like you’d treat you.” The commercials feature a customer calling with a question, being answered by themselves on the other end. In one case, twin sisters Lisa and Julie find themselves on the phone, one asking a question and the other providing the service. Like with Jake from State Farm, viewers are shown that if they have questions—no matter how small—a friendly, helpful representative will be by the phone ready to answer it.


These successful commercials serve not only to highlight their excellent customer support and service; they also humanize the call center environment, putting a pleasant face on the aspect of calling a business that many customers view with some skepticism. It’s genius, really: changing the representation of what customers imagine a call center looking like provides something like a brand overhaul. Rather than customers envisioning a surly rep or a complicated automated system, they envision a Jake or a Lisa, ready with a smile to help them with their issue. The added slant of humor keeps the message from being too stiff: rather than smiling, too-beautiful actors robotically reading a script promising good service, the commercials illustrate everything that makes phone conversations the best kind of service: natural, human dialogue.

The best part about all this is that it’s easy to offer the kind of service that State Farm and Discover advertise. A number of sophisticated call routing and call management tools exist that, when implemented, make it easy for incoming phone calls to be handled with ease, providing that world-class customer support that brings customers flocking.

And it’s more than customer service for existing customers, of course. When you open up the phone as a line of communication with potential customers, you’re also opening up a whole new channel of revenue. The surge of inbound phone calls to businesses from smartphones, for example, has catapulted implementing click-to-call to the top of businesses’ to-do lists. According to Google, more than half of mobile callers are researching a product or service, or want to complete a purchase when they call a business directly. If you’re not giving them a way to call you, then you’re missing out on revenue.

Not every business can offer live assistance at 3am—we can’t all be Jake—but recognizing and implementing the power of voice is a great start. We’ve given this a lot of thought, so feel free to download this guide if you want to learn ways you can start moving to…ahem…a better state of voice. Get it now: The Definitive Guide to Voice Based Marketing Automation.

The post The Biggest Thing Jake from State Farm Taught Me: Phone Calls Drive Revenue appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 21, 2015

digital display advertisingWe do a lot of display advertising here at Ifbyphone and through my work on all of our campaigns I’ve faced many challenges in controlling campaigns to achieve positive results. The most important takeaway I can share with you is that display advertising takes a lot of due diligence to achieve successful results. To make your campaigns effective you need to face challenges head on with research, time, and effort. Below I outline the top 5 display advertising challenges I’ve faced and tips on how to improve results.

Challenge 1:

Keeping up with automatic placements and/or programmatic advertising to ensure your ads aren’t showing in irrelevant places.

Tip: I often find hundreds, sometimes thousands, of placements that are highly irrelevant to my target audience. Comb through placements on a daily basis and remove ones that don’t make sense for your demographic. Spend 20 minutes doing this every day. Whether this is through a programmatic process (less control) or manual process (more time consuming), this is key to ensuring your ads appear in the RIGHT places, not just everywhere on the web.

Challenge 2:

A 2014 study conducted by Google found that more than 56% of ad impressions are not seen. If I’m paying on a CPM (cost per thousand impressions) basis, this is bad news for my display advertising strategy.

Tip: Set up custom segmentation and retargeting campaigns. It’s important to not only show on the right placements (see above) but to also show the right content on the right places, and even to the right people. With retargeting (through Google, AdRoll, and other third party providers) you can create custom segments with content specific to the demographic and behavior of users in your list. This helps you provide personalized advertisements and marketing content to visitors who have previously engaged with your business.

Challenge 3:

Banner blindness. A 2014 study by Business Insider that produced eye-tracking heatmaps revealed the severity of banner blindness in display advertising (see image below).

banner blindness heatmap

Tip: Keep up to date with studies on display advertising and the phenomenon that is “banner blindness”. Studies have found that different networks, websites, and even industries have different rates and locations of blindness. The Google study referenced in tip #1 found that viewability rates vary across content, verticals, and industries, so staying on top of information and best practices in your industry is key.

Also, keep this in mind this tip from Business Insider: “The research finds that the most viewable position is right above the fold, not at the top of the page. The most viewable ad sizes are vertical units, and page position is not always the best indicator of viewability.”

Challenge 4:

Finding the time to keep up with display advertising amid the many other networks you advertise on.

Tip: Don’t “set it and forget it” – display advertising needs to be monitored on a daily basis to ensure placements don’t run wild. Sometimes I see impression spikes in the hundreds of thousands in just a day due to news or seasonality that causes our ad to show up more than it should. Spikes like this can lead to increased cost, unnecessary impressions/clicks, and reduced CTR. Daily maintenance is about keeping up with your campaigns to ensure the health of your overall account.

Challenge 5:

Maintaining consistency across channels with display ads and brand imagery.

Tip: Integrate your display advertising strategy with other channels. One way to do this is through cross channel display advertising, such as promoting tradeshows via display ads. You can also include display ad imagery in landing pages and marketing content. This helps create consistency from the ad the user sees, to the landing page they are driven to, to the content they receive. This helps build your brand while improving results from display advertising.

With display advertising the fact of the matter is that due diligence is required to maintain your campaigns and improve results. To learn more tips on how to improve your display advertising campaigns watch this free on-demand webinar, “7 Tips for More Effective Display Ad Campaigns.

The post Top 5 Display Advertising Challenges With Tips on How to Improve Results appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

There are thousands of invisible evil robots making millions of illegal calls to consumers every year. The FTC knows this, telecom lobbyists know this, and Aaron Foss knows the solution – Nomorobo, his Twilio-powered robocall blocking service. Last year alone it blocked 14 million calls.

[Read our previous stories on Nomorobo winning the FTC Challenge, and stopping robocalls here.]

So how do you make a case to lobbyists that won’t listen, or perhaps don’t understand the gravity of how many calls were blocked? You put in print. That’s exactly what Aaron Foss did.

Aaron anonymized and printed out each call Nomorobo blocked in 2014, and brought the palates of paper with him to Washington to show the gravity of robocalling.

Aaron is in DC again to protest the bills telecom providers claim make them incapable of blocking robocalls. They argue that they have to let every single  call through to prevent anti-competitive behavior (i.e. one cell provider blocking another to hinder competitor’s business). Aaron argues that practices like blacklisting and anonymous call rejection show that their argument is, “just plain wrong.”

The FCC put out a public request for comment, and Aaron took full advantage of it. This morning, he had a meeting with the Consumer and Governmental Affairs Bureau of the FCC to take a stand against misinformation, and put an end to robocalling. (He brought all the printed calls too.)

Nomorobo Blocks 14 Million Calls In One Year with Twilio

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 20, 2015

You may know Patrick McKenzie as patio11 on the interwebs. He’s the:

Patrick’s also self-described as “Twilio’s number one fan.” In 2010 he started Appointment Reminder which, you guessed it, sends appointment reminders using Twilio SMS and voice calls.

Along the way, he’s learned a lot about building production-grade Twilio apps. Patrick stopped by 1871 while back in his hometown of Chicago over Christmas break and he was kind enough to sit down and drop some knowledge on us.

Below the video you’ll find a full transcript with — and this is the really cool part — code snippets from Patrick that help power his Twilio based business.

One other note: there are few emails I enjoy receiving more than the ones I get from being on Patrick’s mailing list. If you’re not already on it, you should sign up here.

Patrick’s first Twilio App

My first Twilio app was something I called my automated secretary. I’d been living in Japan for the last 10 years and my mother has never quite gotten the hang of international dialogue. Sometimes she would call at say 2:30 AM in the morning and obviously my phone is on in the middle night for emergency purposes, so pick up and see it’s from mom. Say “Is everything all right?” And she would say “Hey, how is it going. How was today?”

I thought it would be really useful if there was some way to intercept a call and say “Hey it’s 2:30 AM in the morning, if you want this call to go through hit ’1′, otherwise just call back some other time when you will not wake me up.”

That was literally about 15 minutes of just banging away and sent out a script for Twilio. It worked, it was those magic programming mobiles where it actually runs the first time you run it. Worked flawlessly, so I gave it out to my parents and all my brothers and sisters that would call me at that number for the last four or five years now.

Having another future Twilio was often just a matter of having another URL that does something different and then plugging it into a new number, the same number or plugging it in to a Twimlet or something. The thing that I did, when I got married, my family would love to be able to talk to my wife, but my wife does not have a US phone number available, so I just bought another number from Twilio and put out another endpoint that forwards to her sell phone and then… boom done!

I’m currently in the United States now, but my wife is at home in Japan taking care of our daughter. I have a Japanese cell phone in my pocket, but I’m calling on a Japanese phone that is roaming in America back to Japan is ridiculously expensive. I have an American burner phone in my pocket which can only make calls to US numbers, but I have her phone number saved in that. I call that number, punch in my pass code and boom we can talk. Just talked this morning for a good thirty minutes.

I love it. It’s so easy to do. I’m really not trying to sell it to you guys, but it’s so easy to get stuff up and running. I’ve been at hotels before in countries that I don’t even reside in, like say Germany. I think well I could make an international phone call from this hotel phone to Japan that’s going to be ridiculously expensive, or I could use the Twilio rest API and bridge the call between the Japanese cell phone and the German number, this phone, without ever having a German number available. Then boom that happens. I love it so much.

Patrick’s first Twilio app: 

require 'rubygems'
require 'sinatra'
require 'twiliolib'
require 'time'
require 'uri'

@@HOME = "(555) 555-5555"  #This would really be a Japanese number for me.
@@CELL = "(555) 555-5556"  #Ditto.

#Very simple Twilio app which forwards calls to either my home phone or my cell phone
#depending on where I'm likely to be at any given time.  This is hooked up to a 
#Twilio US number, so my parents didn't have to figure out international calling.

#Convenience method: prints out a time like "12:32 AM".
def pretty_time(time)
  time.strftime("%H:%M %p")

#This is much easier if you have ActiveSupport::TimeZone but since I don't and
#I wanted to have this done in 15 minutes it is just hard coded.
def time_in_japan()
  time = Time.now.utc
  time_in_japan = time + 9 * 3600

def is_weekend?(time)
  (time.wday == 0) || (time.wday == 6)

#Tests whether time t is in a range described in a natural language string like "10:00 AM, 3:00 PM"
def in_range?(t, str)
  time = Time.parse("#{Date.today.to_s} #{pretty_time(t)}")
  range_bounds = str.split(/, */)
  start_time = Time.parse("#{Date.today.to_s} #{range_bounds[0]}")
  end_time = Time.parse("#{Date.today.to_s} #{range_bounds[range_bounds.size - 1]}")
  (time >= start_time)  && (time < end_time)

#Forward this phone call to supplied number.  Play introductory text unless surpressed.
def forward_call(number, surpress_intro = false)
  @r = Twilio::Response.new
  say = Twilio::Say.new("#{"This is Patrick's computer secretary.  " unless surpress_intro}I'm putting you through.  Wait a few seconds.")
  call = Twilio::Dial.new(number, :timeLimit => "4500")

def redirect_twilio(url)
   @r = Twilio::Response.new
   rd = Twilio::Redirect.new("/#{url.sub(/^\/*/, "")}")

#Main logic for phone redirection.
#Should be pretty readable.
post '/phone' do
  t = time = time_in_japan
  if (is_weekend?(time))
    if in_range?(time, "2:00 AM, 10:00 AM")
  else #Not a weekend.
    if in_range?(time, "2:00 AM, 8:30 AM")
    elsif in_range?(time, "8:30 AM, 6:30 PM")
    elsif in_range?(time, "6:30 PM, 9:00 PM")

#If any Gathered input is received to this URL, forward the call to my home phone and wake me up.  Else,
#ask whether I should be woken up.
post '/wakeup' do
  if (params[:Digits].nil? || params[:Digits] == "")
     @r = Twilio::Response.new
     say = Twilio::Say.new("This is Patrick's computer secretary.  He is asleep right now because it is #{pretty_time(time_in_japan)}.  If this is an emergency, hit any number to wake him up.")
     g = Twilio::Gather.new(:numDigits => 10)
     forward_call(@@HOME, true)

#For smoke testing purposes, when respawning Sinatra process.  Also a convenient monitoring endpoint.
get '/' do
  'Hello from Sinatra!  This just verifies convveniently that the server is up and running.'


Moving from your first app to a business based on Twilio

In terms of character, that the personal secretary app, might not do the same things as everybody’s Twilio app, but it’s organized in the same way as everybody’s first Twilio app: one quick and dirty script, like one file. Not a whole lot of QA involved. No monitoring, yadda yadda. It doesn’t have to be all that rigorous because it works for its one or two single defined purposes. There’s no product development roadmap for it. If it goes down in the middle of the night, family sends me an e-mail and asks, “Hey, Patrick, why weren’t we able to call on your phone number?” No business burns to the ground as a result of that.

Contrast that with Appointment Reminder. On any given Monday between the minutes of 8:45 am and 9:00 am American time, Appointment Reminder will get used by several hundred customers to send up to a couple hundred appointment reminder phone calls or SMS messages per minute.

Some of them are appointments for hair salons and if someone doesn’t get a reminder about their appointment with the hair salon, that’s unfortunate for them and unfortunate for the hair salon, but isn’t something that will make me feel like a failure at life. But some of them are like appointments for a little old lady to come in and see her doctor or that sort of thing. It is very much a problem if Appointment Reminder goes down for a few minutes. It’s mission critical in all the senses of the word. It has to be very reliable. I have to not break it. I have to be able to extend the app in ways that it’s not originally envisioned to go.

That sort of quantum leap in complexity, both versus the app that I originally made for Twilio and also versus what a lot of the Twilio documentation assumes that you’re going to be building. I think we’ll talk through some of the decisions that I made and how I’m able to run this in production in a way that is reasonably reliable, even though I’m the only technical person at the company.

State Machines

One of the things that you often do with Twilio apps is to create some sort of phone tree. You’re going to play a message to someone saying, “Press one to talk to sales. Press two to talk to customer support. Press three to talk to blah blah blah.” It’s called a phone tree or an IVR, in industry parlance.

I believe that the way that the documentation often describes doing this is first you play that message. Then you take the user’s input and you use a case switch statement or a bunch of “if, thens” to do the business logic and produce a result that pressing one or pressing two or pressing three should work.

You can do it that way. That will work the first time. But you don’t want to do it that way. This gets independently rediscovered by everyone who does serious Twilio apps. You probably want to model each individual work flow that goes through your application or your IVR system as a state machine.

What is a state machine? State machines are a computer science-y kind of concept where’s there a bunch of states of the application that you can be in, or states that a particular call can be in. There is transitions between states that are triggered by input. You know that if I’m currently in start call state, then pressing one goes to the talk to the support team state. Pressing two goes to the talk to the sales team state.

You basically use the input to the application to drive those transitions. Then based on what transition has just happened, you produce output to Twilio to say “Okay, and now you want to do this.”

Why do we do things in a state machine? Number one, it allows you to separate great application logic from your view layer logic. Producing TwiML is typically a view later kind of concern. One often wants to be able to test that the control flow logic does want things it does. For example, pushing ’1′ activates the sales function rather than the support function without testing the view logic at the same time.

If you model the interaction as a state machine, you can write unit tests proving that the state machine has the proper transitions in it and that it does the right things to the right business objects and that that is persisted correctly to the data base without necessarily having to involve the view level TwiML code in the mix as well.

It also allows you to test the views so that you can say, “I don’t have to mock up an entire phone call. We’ll just assert that the state is this, and thus the view that should be generated is this. Now, given that assertion, prove that the TwiML that is actually outputted by the application matches the TwiML that they expect, that it’s valid XML, and prove that Twilio will not die with the infamous ‘An application error has occurred’ message.

Another reason to use state machines, if you use massive case statements, it’s very easy when you’re updating the code to add one more thing to the if-then statement to break it in some subtle fashion. I’ve done this more times than I can count.

If you’re doing state machines, typically they’re done in a very data driven fashion. You just add another state and the transitions between that state and the pre-existing states. Then you add the test for those transitions and you’re done.

Whereas often, back in the day when I was running things with if-then statements, when there three functions, I would have to test three functions by hand. When I added a fourth function, I would now have to test four functions by hand over again. If I needed a tweak to any one of those, I would have to test everything over again just to make sure that there was no subtle dependency in the code that broke things. Whereas a state machine, the states are provably, logically separate from each other. They shouldn’t be correcting the results of the other states.

How to test Twilio Apps

I test the application logic. I have a Reminder class: a reminder starts in the scheduled state it’s supposed to, fires after a particular time, which is saved the reminder object. Then it moves into the processing state. Once something is in the processing state, the queue workers can grab it and attempt to send out SMS messages or send out a phone call as the case may be.

They have unit tests in the typical Ruby on Rails developer fashion to test that, “Okay, if something is in the scheduled states and the time is after the fire-after time that’s saved on the object, and we executed the method that’s supposed to pick up things for processing, then it should return this object and it is one of the ones that should be processed now. ”

Okay, that works in isolation. Now we can assume that that building block works and move on to testing other things independently of that rather than having to tests manually and create lots of these objects and then make sure that the phone actually rings. You don’t have to worry that the phone actually rings. If I know that it’s getting picked up by the queue workers at the right time then that can be assumed to work. I can test that the phone rings in isolation when the Reminder.deliver_phone method is called.

I actually haven’t found a great way of doing this in any totally automated Selenium-esque kind of fashion. I do it in two ways.

Number one, a lot of smoke testing. Early in the life cycle of Appointment Reminder, I spent an awful lot of time with my keyboard in one hand and my cell phone in the other. I heard an awful lot of “An application error have occurred.” That can occasionally get told to people in production, which there’s a way to turn that off, but that’s neither here nor there.

Basically if a customer hears that I’ve screwed up in a serious fashion. In addition to doing smoke testing manually with myself by the phone, I use Twilio to test Twilio. For example if I’m doing an IVR kind of prompt where my user will be driving the functionality of the application by typing stuff into the phone, I have a bot which has Twilio call the phone number, then play key tone presses. Then, “Okay, the application should then do this.” Then obviously it’s very hard to unit test stuff, “Verify that it plays the following Mp3 file,” because comparison of Mp3 file with something that’s coming over a phone line is a little difficult. But I can at least verify that no error happened on the call. That’s something I can query in the API. I can also verify that my script played the press ’1′. I assume that will fire the confirmed method so this should get marked as confirmed in the data base. I have access to the data base. Check to see if it was marked as confirmed in the data base.

How to build high-availability Twilio apps

Appointment Reminder has to be pretty high availability. Any time the queue workers went down was basically an emergency for my business immediately. I have a lot of defensive depth there.

I used the Scout Monitoring System. Wonderful app, by the way. If the delayed job is down when Scout checks in, which Scout checks in every minute, it immediately sends an SMS to me and an e-mail alert to get that up and running.

Then, what happens is I realize my existing monitoring setup isn’t adequate and I add more things on top of it. Occasionally I miss those SMS messages, the “Red alert, the monitoring queues are down!”

Well, all right… I’ll have a way for the computer to restart the monitoring queues automatically. I used a process monitor thing that’s written in Ruby called God. Don’t know why they picked that name for a processing monitoring gem. Maybe God knows when any sparrow dies and God also knows when any delayed job instance dies. It’s supposed to restart delayed job if delayed job doesn’t work.

If I today code pushed in a way that killed delayed job for some reason, in such a way that delayed job could not cleanly restart, or if I exhausted memory available on the box and it couldn’t cleanly restart, then it could still die. Scout would be sending me a lot of SMS messages, but if I was ignoring iPhone in the middle of the night or it ran out of power (I have more outages that start with, “So first I ran out of juice on my iPhone and then…” than I know what to do with).

Alright, so what’s the third layer of defense? The third layer of defense is there’s a filter that fires one percent of the time for any HTTP request that’s going into Appointment Reminder. That’s one percent of the time, I query the state the database for the state of the queue. If the queue has more than a few items on it, instantiate the queue worker within the web process — slow down the existing request that isn’t nearly as important as making sure that these phone calls that are on queue go out.

It grabs a few jobs from the queue and then fires it off, and then does the HTTP request that was actually asked of it. It could be totally unrelated to an HTTP request. Someone could be logging in to their dashboard and the web service basically is like, “Well sure, I’ll serve up your dashboard HTML at the moment, but I got to send these phone calls out right now so you’re going to wait.”

In the best of all worlds, we have separation of concerns, but in the world where choices between delaying people who are using the website, who are my customers generally, and inconveniencing my customers’ customers by not sending them their reminders on time, inconvenience my customers. Typically, that’s the right trade off for them.

When I inconvenience my customers’ customers, people get very, very mad. There was a moment once which caused my customers” customers to have their phone lines get basically DDOS attacked launched by me against home phones. That was very unhappy both because obviously I don’t love blowing up peoples’ phones. Also don’t love that when I blew up peoples’ phones, the message that was getting played was from their service providers. That caused a problem in my customers’ relationship with their clients.

One of my customers was a martial arts teacher in I think Toledo. He instructed me very seriously that I am never to come to Toledo because he will enact vengeance upon me for telling people about their karate class 40 times in a one minute period.

Anyhow. Luckily that bug happened very early in Appointment Reminder’s life so it inconvenienced maybe 60 people rather than 60,000 people. Still, it very much hurt when it happened, which lit a fire under me to work out my reliability story a lot.

Here’s how Patrick helps prevent downtime:

desc "Emails and phones sysadmin if reminders are not going out."
  task :check_for_emergency => :environment do
      had_emergency = Reminder.check_for_emergency! #Sends email, and returns  true, if my application has an app-specific problem.
      if (had_emergency)
        #I use a Twimlet here because it is quite possible my infrastructure is comprehensively borked and would 501 any URL
        #if I were to host this emergency message on one of my own servers, causing the call to not contain useful information.

        #The contents of this message are probably not meaningful unless you're me. 
        twimlet_url = "http://twimlets.com/message?Message%5B0%5D=Appointment%20reminder%20reminders%20in%20processing%20or%20scheduled.%20Appointment%20reminder%20reminders%20in%20processing%20or%20scheduled.%20Appointment%20reminder%20reminders%20in%20processing%20or%20scheduled."
        Twilio::Call.make($TOLL_FREE_NUMBER, $TWILIO_WHITELISTED_JAPAN_CELL_PHONE, twimlet_url)
    rescue Exception => e
      raise # to show error in console, for testing Rake tasks

#A disturbingly frequent way which Appointment Reminder used to suffer breaking downtime is our Delayed Job queue
#workers fell over and I was not made aware of this fact.  

desc "Supplement DJ workers if they appear to be getting overwhelmed"
  task :supplement_dj_workers => :environment do
    exit unless RAILS_ENV == "production"  #No need to wake me up to tell me staging isn't working...

    #Count how many ruby (delayed job) processes are running.
    process = Kernel.open("|ps -A | grep ruby") 
    dj_count = 0
    dj_count += 1 while process.gets

    requires_help = dj_count < 2 #There should be at least two DJ workers running.  (This rake will also get counted, usually...)
    requires_help ||= (Delayed::Job.count > 10)  #We never have more than 10 jobs in queue in normal operations, so alert on that, too.
    if (requires_help)
      worker = Delayed::Worker.new
      worker.name = "rake_worker"
      results = worker.work_off([Delayed::Job.count, 100].max)

      #And let's call me to say something about that...
      #Patrick notes: it would actually be smarter to call *before* doing the work, as if a very large job is blocking
      #the queue, I'd never get the call.  Yay for being forced to write out a rationalization of design choices.
      #Thanks Twilio!  Seconds after this writeup I fixed the "real" version.
      twimlet_url = "http://twimlets.com/message?Message%5B0%5D=Appointment%20reminder%20workers%20are%20down.%20Appointment%20reminder%20workers%20are%20down.%20Appointment%20reminder%20workers%20are%20down."

      puts "Did some work for supplementing workers: #{results.inspect}"
      puts "Checked but DJ appears to be up"  #Useful for sysadmin testing rake job at console.


Logging for Twilio Apps

I’ve been using Twilio for a very long time now. When I started using it back in early 2010, it didn’t really have all that great visibility into what was happening with past API requests. If you personally were seeing the API request go out and there was some error, you could catch that. Given that very rarely there’s a human like actually sitting behind the curtain watching API requests go out in what is for me the middle of the night, if an error happens, I would lose the context of what the error was: what had caused it, what the state of the application was around that error.

Twilio has since developed some very impressive tools within the Twilio dashboard under the Developer Tools. It will show any HTTP errors that you got from Twilio that was an urgency for you. Which by the way any HTTP error from Twilio is an urgency for you. You should probably set a notification for that, which happily they will do these days.

If I have any sort of error involved with a Twilio request… or actually, not even errors… even when I do successful requests to Twilio or the REST API, I take the entire response that was given by the API, serialize it as a string, and throw it in a Redis instance. It’s thrown in there for a period of two weeks. I guess theoretically one could log it into a log file, but some of this information is sensitive and while I could theoretically have a log rotator that shredded the logs after two weeks, I decided instead to just put it in Redis instance, which makes it a little more query-able.

I put it in Redis for two weeks and if somebody says, “Hey, what happened with regards to the call to Cindy yesterday?” I look into my database. Figure out what Cindy’s I.D. is in the database. Find the correct place in Redis where I expect the logs of conversations with her to be, or the logs of Twilio and API requests, these facilitate conversations. Then step through those and see “Oh okay. Here’s a non-obvious thing that could potentially screw up a phone call if someone specifies the url of a mp3 file that they wanted to play on phone calls to their customers.” They’re hosting the mp3 file and their hosting account expires, or they delete the Mp3 file and they don’t realize that’s referenced by your stuff.

If getting that mp3 file 404s, then the Twilio application is going to die with the “Application error has not occurred.” This could possibly happen in a way that is not visible to your app in any fashion. You can catch that happened and surface that to end user. For example, you could theoretically send them an e-mail and say hey, this mp3 file that you had configured to use on your phone calls is not active so you need to replace that ASAP. In practice, I think it’s a better use experience, if the user gives you any mp3 file, to slurp that and save it into an S3 bucket somewhere and then host it on their behalf. Often users, especially non-technical users, don’t appreciate the consequence of having to have high-availability of something that they might have originally hosted out of their Dropbox, for example.

Store your own Twilio usage information

Twilio hosts a, as far as I know, a limited record of all the SMS messages you have already sent or received, all the phone calls you have made, all the recordings you have made. I have never had a data durability problem with Twilio, but I still persist most of the information on my end of things even though I have a reasonable expectation that Twilio will still have that information when I go looking for it.

I wanted to do this for simple speed reasons. Twilio exists in the cloud somewhere. My stuff exists in the cloud somewhere. My database is much closer to me cloud-wise than the Twilio cloud is to me. That can be a difference in speed which matters to the user if they’re doing some process live on the website and want to get it resolved quickly.

For example, there’s certain things that one would potentially want to look up. Like “search through all of my messages which are associated with my account that contain something.” I might expose that feature to a user. The way that get implemented on the backend, because I run a multi-tented application under one Twilio account, I would have to query all the SMS messages that were under my Twilio account I.D., whittled down to only the ones that were associated with a particular user, then display that to the user in an HTTP request-response cycle. My target for getting stuff done in an HTTP request- response cycle is 500 milliseconds or so. If things take longer than 500 milliseconds, I need to figure out some way to pre-calculate that to get it under that target.

Now, querying the Twilio remote API, parsing that and displaying the result to the user might have been viable when I first started writing the Twilio application four years ago. These days I’m sending several hundred thousand SMS messages a year. Twilio will allow you to paginate them, one hundred messages at a time. It is highly unlikely that I’ll be able to do 5,000 HTTP requests, collect the data from them, and then do the regex sorting and whatnot in a 500 millisecond time frame. So rather than doing that, I have it all persisted on my side and use my database as the sole source of truth. If, knock on wood, my database should ever fail, I can regenerate those tables from Twilio API in a process that will probably take at least a significant amount of several minutes to run.

The time I accidentally bought 300 numbers

Obviously I have automated testing procedures. I use testing like many Rails developers these days. I use something called auto-test, which every time I save the file, it immediately reruns my unit test. I love this because I hit command-S on my keyboard and if all my tests are green, I get the nice little visceral experience of the Growl notification that has a green light in it that says “400 of 400 tests passed.” Yay!

I once added a unit test which, unbeknownst to me, accidentally exercised the functionality for my account to buy a phone number for a new account as it was getting created on Appointment Reminder. Every time there was a change to my files, it provisioned a new account and provisioned a phone number for that account. Since Twilio is very, very reliable, I got the green light every time. I was just doing my development for 30 minutes, probably hit the command-S button about 300 times in 30 minutes, and then realized “Uh oh, I have bought $300 worth of phone numbers.” Good thing it wasn’t in a for-loop.

I’ve since tweaked something now. Obviously, it’s bad news if you buy phone numbers, but that’s not the worst thing in the world. Twilio is very understanding if you just send them an e-mail about that. That affects your pocketbook, but it doesn’t affect any customers. But let’s say you have a habit of logging into your developing environment and just typing in random numbers to verify that something that’s ten digits long actually works. If, unbeknownst to you, your test data was actually causing actual phone calls to go out to the real POTS network, and to ring actual people’s phones 300 times in 30 minutes, that would be an entirely different level of “whoops.”

Realizing that would be a problem, I did something to defang Twilio in non-production environments. I have a whitelist where I load in phone numbers which I personally own. Five of them. I monkey patched the Twilio helper library such that if it attempts to make a phone call or SMS message to any phone number that is not on the whitelist, it immediately throws an exception and kills the rest of that process. An exception will generally bubble up and throw an error in the test rather than do something that could potentially affect the real world. That has a nice side effect of preventing a for-loop in a unit test sending out $10,000 worth of SMS messages.

Here’s how Patrick monkey-patched the Ruby Twilio helper library: 

#An initializer which configures Twilio and monkeypatches the Twilio-rb library to make it fail-safe.

$TWILIO_API_ROOT = "https://api.twilio.com"
$TWILIO_ACCOUNT_ID = 'redacted'

Twilio.connect($TWILIO_ACCOUNT_ID, 'redacted')

                     "(555) 555-5555" #Not actually my number, but I have an array of the safe ones hardcoded in here

#Crack open Twilio::Call / Twilio::Sms in non-prod environments and raise exception prior to calling/texting external numbers

if RAILS_ENV != "production"
  require 'twilio'
  Twilio::Call.class_eval do 
    alias_method :old_make, :make

    def make(caller, callee, url, options = {})
      unless $MY_PHONE_NUMBERS.map {|num| num.gsub(/[^0-9+]/, "")}.include? callee.gsub(/[^0-9+]/, "")
        raise "Trying to call a number which you do not own.  (Safety measure for non-production environments.)"
      old_make(caller, callee, url, options)

  Twilio::Sms.class_eval do
    alias_method :old_message, :message
    def message(sender, recipient, body, callback_url = nil)
      unless $MY_PHONE_NUMBERS.map {|num| num.gsub(/[^0-9+]/, "")}.include? recipient.gsub(/[^0-9+]/, "")
        raise "Trying to SMS a number which you do not own.  (Safety measure for non-production environments.)"
      old_message(sender, recipient, body, callback_url)


Twimlets and Zapier

Twilio has this website called Twimlets which gives you very basic Twilio applications that you can basically create with a form that it gives you a URL and you can just copy-paste url onto a Twilio phone number. I’ve gotten an unreasonable amount of value from Twimlets over the years. I use them for all sorts of things, but running my company’s voice mail to use them for monitoring task. For example, if my queue workers are down, there’s a cron job that checks for that every five minutes. If it detects that state of affairs, it fires a phone call against a Twimlet, which does a very simple thing that says “The queue workers are down. The queue workers are down. The queue workers are down.”

Theoretically I can host that myself, but one can imagine circumstances where the reason the queue workers are down is something that also brings down my web infrastructure. But there’s virtually nothing that can cause my queue workers to go down at the same time as the Twilio Twimlets service go down. Having that logic be somewhat external to my own application makes it a little more reliable. Diversifying away from single points of failure is pretty important to my reliability story.

That’s something I would encourage you to do, just to go look at Twimlets. They’re easy to get and they provide a surprising amount of functionality if you use them creatively. You can also chain them together, which is really fun. They have a simultaneous ring system. If nobody picks up, then send them to another Twimlet and then another Twimlet. Send an SMS message to someone who called but you hadn’t gotten to them before. That sort of thing.

Another fun thing… If you use any sort of cloud service, you really need to look at Zapier. It’s a company that helps plug APIs into each other. The notion is that you have one API which is the source of events, then one API which is the source of action which should take an action in an event happening with the first API. Typically Twilio is not the source of an event, but rather it’s the action I want to take. Typically I want Twilio to send an SMS in response to something happening. The sky is the limit in terms of what APIs you can hook up via Zapier.

For example, when a new lead is added to my CRM system, send an SMS to my sales representative saying, “Hey a new lead was added to the CRM system. Click here on your iPhone to open that up.” Or when we get an e-mail which matches a certain regex, send an SMS. When a new ticket is added to our customer support system, send an SMS to our customer support folks. When a new ticket that with priority greater than X was added to the customer support system, send an SMS to me. The sky is basically the limit.

As Zapier integrates with hundreds of APIs, if there’s anything where you ever thought “Man, it would be great if this cloud service and this cloud service played together,” Zapier makes it happen. Often the surface I want to play together is “Twilio plus everything else in the world.” I really truly believe after you have the box of capabilities that Twilio opens up to you, you see Twilio apps everywhere. My friends make fun of me for this, because my answer to everything is, “I could probably make that better with a Twilio app.” They say, “That’s your answer to everything. Your answer to everything is a Twilio app.”

Twilio makes magical experiences

It’s such a magical experience. It gets into some deep cultural anthropology, but we have a very deep relationship with our cell phones these days. I’ve never seen so much giddiness as when I’m demoing a boring, B2B software application on my iPad and I say, “Hey, give me your phone number. I’ll type it in here.”

Doo-tee-doo-tee-doo. Hit go. The phone rings. I’m like, “Whoa, that’s fun. What is it?” Then they slide it down and are like, “Hello?” Then have a voice actress who recorded a short mp3 file for me that just plays in their ear. They’re going, “She’s talking to me! She’s talking to me! Like the computer is talking to me!” They light up with excitement.

“You want to see something real exciting? Hit ’1′ on that phone call.”

They hit ’1′ and it shows up immediately on the iPad. It’s obviously gone from Twilio, Twilio has hit a webhook on my site which has pushed something via socket.io to the web page that’s opened on the iPad. It shows a notification within a fraction of a second after the button press happens on their cell phone. “Wow, that’s amazing!” I’ve done the demo from my application. I’ve done other folks applications. Even with hardened, “I have seen it all, done it all” software folk, giggles happen.

Use Voice Actors instead of the <Say> verb

When you’re doing Twilio apps, you’ll be using the <say> verb a lot. The <say> verb has a text to speech option to read out things. They’re good enough for development so that you can verify that the logic and flow control is working correctly.

Once you’re exposing these phone calls to customers, you typically don’t want a very robotic phone call to be representing your business or your customers’ businesses. Say for an appointment reminder, you don’t want someone’s first point of contact with their dentist to be a robotic voice that says, “This is an automated Appointment Reminder from Happy Teeth Dental. Your appointment with Dr. Benedict is at 4:47 pm on Tuesday the 12th.” It’s just not a great experience.

Instead, to the maximum extent possible, after we know what text we’re going to use, I like to have that recorded by an actual human. There’s a few ways you can do this. There’s a service called Voice Bunny, which actually has an API available. It’s a little expensive, because they’re using professionals for this. Worth the money for things which you’re going to be reusing a lot.

If you want to do things a little cheaper, for $5 you can go on Fiverr where you get basically a bored college student to record the same thing for you. The online demo of my application, which represents my company and has for the last four years, was recorded by someone in two Fiverr engagements, for a total of $10. It’s closed tens of thousands of dollars in business for us. That’s obviously an option.

One subtlety about that is that typically it’s economically non-viable to record a unique mp3 file for every call. You’ll often stitch together things via a Frankensteiny mix of different mp3 files together. For the logic for my application we basically wanted to mix and match a selection of introductions: the body of the appointment details, the date and time, and the selection of instructions to use: “Press ’1′ to confirm your appointment. Press ’5′ to cancel your appointment.” Or if a customer doesn’t want the cancellation, you have a seperate mp3 file that we can play which doesn’t mention the cancellation option.

Now, the part in the middle there where there’s dynamic information getting generated: “4:47 pm on Tuesday the 12th.” As as a stop gap measure, you can have the computer narrate that. But here’s a little bit of trick: if there’s a restricted range of data that can possibly be, you just pay your voice actress a little bit of extra money and have her record an mp3 file which says “One, two, three, four… twelve, fifteen, thirty, forty-five, o’clock.” Splice it up into a bunch of mp3 files and then you do some Frankenstein stitching on the fly. Since Twilio will play any number of mp3 files in a row, it won’t sound completely natural, but it will definitely sound like human talk with perhaps a little bit of weird pauses. Depending on how good you are at mp3 editing. Folks actually think that it is a real human leaving all the messages. It’s kind of awesome.

Again, we have a very personal relationship with our phones. People feel a sense of intrusion when they feel like an automated processor, somebody who doesn’t really care about them, is intruding on their personal space on their phone. You know, it’s intrusion both into someone’s psychological personal space, their iPhone in the pocket, in their hand. It’s also intrusion on their time. That’s pushing a phone call to someone and demanding they pick up and listen to it right now. It is, by its nature, an intrusive action.

Now, it doesn’t mean we should never do it, obviously. People who have an appointment with their doctor tomorrow to get their cancer drugs adjusted should really hear about that. That is important for them. But, we should be conscience of the fact that that interaction is a personal one and give them give them the true impression that we as a business really care about them, even if it’s an automated interaction.

That means doing human niceties. You would never have a conversation with someone like you would have a conversation with an API. There’s a Japanese word for it but I don’t know it in English: to just jump directly into the business part of the conversation without having some human niceties like, “Hey, how are you doing? How’s your day today?” Just like one would never have a solely goal directed conversation with somebody, we should also have the human niceties in the phone call and, dealing with the UX challenges with that, using a human voice to the maximum extent possible.

Dealing with voicemail

You should think of how your phone call will be played in different environments. Here’s a funny Twilio story for you….

I was not conscious of the fact that many of my phone messages that I was leaving would be played on answering machines. Let’s say you leave someone a message which says, on the assumption that someone’s live on the call, “Press ’1′ to confirm your appointment, press ’5′ to cancel your appointment, press ’9′ to have your service provider contact you about your appointment.”

Someone presses ’5′. The next thing they hear, is “This message has been erased.”

Someone is pushing buttons against their voice mail system, not against my application. My application didn’t know that. The user, who has no clue what’s going on, feels very bad. They ask their dentist about it. My dentist doesn’t know what’s going on. This was causing problems for me for months before I realized that was happening.

Twilio has a way to detect whether you’re speaking with a answering machine or not. Unfortunately it’s not 100 percent accurate. It’s been getting a little bit better over the years. Ball park, it’s maybe an 80 percent solution. I’d investigate turning that on. I would also, if you’re running a multi-tenet application with Twilio such that you have different clients, you might have different client populations, give people the ability to turn on answering machine detection per account basis.

Also, give them the ability to do the following trick on a per account basis. Different client populations have different handsets they use, have different voice mail systems that they use. Often, a local business has a particular carrier that’s hegemonic in that region, or a particular socio-economic group that’s associated with that business that tends to use faily similar handsets and those hand sets have fairly similar limitations. I found that the settings that work for some clients don’t work as well for others. It’s good for me to be able to offer choices that I can tweak per client, rather than making an assertion across my customer base that is incorrect.

If you’re using the Twilio thing to detect whether you’re talking to a voicemail or not, Twilio has to guess the point in the voice mail that’s “Leave your message after the beep,” guess when the beep happens, and then start playing your pre-recorded message. Unfortunately, it doesn’t guess it correctly 100 percent of the time. A symptom that your user could get as a result of that is Twilio starts playing a message early but the machine only starts recording after the beep is that your message starts half-way through.

They’re typically not too happy about that. But, fun fact about most voice mail messages: they will immediately skip and start recording as soon as you hit something on your keyboard. You can skip to the beep by pressing one. An option that I give my customers is “We will play the tone for a button press immediately on starting every call,” which skips immediately to the recorded part of the voice mail prompt so that they almost always get 100 percent of the message recorded.

That’s a trade off I give my customers, too. Why wouldn’t you do that all the time? Well, if it’s on a live phone call, the live phone call would be like “BEEP! This is an automated message from your dentist….” When folks say, “My customers typically use who complain about the message being cut off.” Then I say, “Well, okay, we have this option for you. Here’s the trade off. Are you willing to take that trade off?” If it’s important to them, they are.

Another thing you can do, just like we build reliability into our systems and assume that queue workers will fail some of the time, we might assume that the message fails some of the time. One of the things I do is I play messages in a loop, at least twice. Let’s say a typical message is, “This is an automated message from your doctor, your appointment is at… Press ’1′….”

Let’s say the first half of that message gets cut off. The message which somebody actually hears might be “… December 24th, press ’1′ to confirm. Press ’2 to cancel. Press ’9 to have us contact you.”

That’s not a very useful message. But if you repeated the original message and say, “This is an automated Appointment Reminder from the doctor” at the end of the cut off part. “Your appointment is at 10:00 o’clock on December 24th. Press ’1′ to do this, press ’2′ to do this, press ’3′ to do this,” then that’s a much more comprehensible message.

The level of complaints my customers were getting back unintelligible messages went way down after I put them in a simple for i=1; i=2; i++ to repeat the message text.

How Patrick got a Twilio track jacket

This is actually my favorite jacket in the world, I wear it almost every day. Twilio is very protective of their jackets. You have to either be an employee or perform them a conspicuous service. The conspicuous service that I performed for Twilio back in the day was there was, there a security vulnerability in the Twilio application.

They’ve got a team of crack engineers, but everybody has a problem once in a while. I ran into a bug, which as I was debugging this with the very helpful support folks they said something, which really piqued my radar.

Well, if that thing they said is just true, this is very, very bad news for us because it allowed at the time — they fixed it three years ago so don’t worry about it — but at that time would have allowed any user of my application to control my applications use of Twilio. Which would be bad because it would allow someone to send phone calls to any number with any sort of content that they wanted, drain my Twilio account, harass people, get information out of my application that they shouldn’t get. Very bad news.

After dealing with the Twilio folks and realizing that this bug was a symptom of an issue which would allow someone to hijack Twilio applications, I reported that to the Twilio team. No lie, after I CC’ed the issue to their security contact, three minutes later I got an e-mail from the CEO of the company. One minute after that I got an e-mail from the CTO of the company that they were on it. They fixed it within probably an hour. I was very happy with their responsiveness there.

I’m generally pretty happy with Twilio’s responsiveness to everything over the last couple years. They’ve been very, very good to me. I strongly suggest that you use them. They’re far and away my favorite company that I do business with.

I love talking Twilio and all sorts of things to people in the software industry. My e-mail address is [patrick at kalzumeus dot com] or [patrick at appointmentreminder dot org]. They’re both the same and will send me an e-mail about the same time. Send me an email anytime, I love talking about this stuff. If there’s ever anything I can do for you, drop me a line.

Photo credit: The Business of Software Conference

How Patrick McKenzie (patio11) Builds Twilio Apps

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

A few weeks ago, Facebook acquired speech recognition company Wit.ai. Apparently, it’s interest in speech technologies didn’t stop there. “Facebook’s mission is to connect everyone and build amazing experiences for the over 1.3 billion people on the platform – technology that understands natural language is a big part of that, and we think we can help,” […]

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

phone callIf your business drives a lot of phone leads, it’s likely you’ve wondered what exactly happens on the calls and how it impacts your business. The more inbound calls you get, the more opportunity you have to drive sales and revenue, and the more valuable these calls become. But what happens when they don’t convert, and you have no insight into why? How do you know if your customers are happy? Do you know how the successful conversions happen? What words and phrases are being used that signify a quality conversation?

While you may know what source drove the call, how long the conversation lasted, or even the caller’s location, that can only help you so much. True insight into the conversations agents are having – including the very voice of your customers – is vital to optimizing call conversions. Below are a few ways including the voice of your customers in your call analytics helps your business.

Prove Your Marketing Drives Quality Conversions

69% of employees interact with customers over the phone (Forrester). That means voice is inherently important to the majority of businesses. Imagine your CMO or client comes to you and requests information on sales calls from the past month. Instead of only sharing details on how long the call lasted, date and time, and caller location, imagine wowing them with the ability to dive deeper into transcriptions and audio recordings of these conversations.

Keyword spotting technology records, transcribes, and stores actual conversations from the calls your marketing generates – while also capturing all those other details. The ability to search through your calls by variables such as date, geography, keywords, or marketing source helps you narrow down which ones are successfully driving quality conversations for your business. Or, if you’re an agency, you have hard and fast proof for your clients that the calls you send them are high quality. Of course, it helps to first determine what successful ROI means to your business or clients before you start using keyword spotting.

Understand How Your Calls Are Converting

62% of people feel it is extremely/very important to be able to call a business during the purchase phase of the buyer’s journey (Google). That means it’s more important than ever to understand how your agents are interacting with callers, and how these conversations drive conversions.

While the best way to determine the quality of your calls is to listen to them, it really isn’t practical for most marketers and agencies – no one has that kind of time. Think about key words and phrases that indicate a quality conversation for your business and use keyword spotting to find and listen to them for you. It can then take you directly to the portions of the conversation between your callers and agents where these words appear, giving you insight into how these calls are converting to purchases, orders, appointments, and the like. (Again, first establish what a meaningful conversion is for your business.)

Identify Keywords to Optimize Search

70% of mobile searchers have clicked the “call” button in search results (Google). Why should you care? It might be because mobile search is going to drive 75 billion calls to businesses by 2018, according to research firm BIA/Kelsey. And that means it’s growing more imperative for your business to have insight into the conversations mobile search generates for your business or clients.

Keyword spotting is a great way for marketers and agencies to search through conversations for keywords and phrases to determine frequency and impact. This information can then be used to help plan and optimize paid search strategy. Are you seeing a higher frequency of the word “appointment” versus “meeting”? Or “price” versus “cost”? And then, which of those calls convert more frequently? Shifting some of your marketing investment in paid search based on these insights will help drive more of those valuable calls and, ultimately, call conversions.

Want to learn more about how insight into your conversations – and the actual voice of your customers – can help your marketing and sales? Request a demo to see how keyword spotting enhances your call analytics.

The post A Few Reasons Why Voice is Vital to Your Call Analytics appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 19, 2015

Mobile-Search-at-WorkThe results of the explosive growth of mobile phones can be seen in almost every aspect of business. Smartphones have helped to reestablish phone calls as the most effective channel for generating leads and revenue. The rise of mobile sets up an enormous opportunity for marketers, and the best way to take advantage of it is by having a voice automation solution to help you capture and optimize all of your phone based interactions. Here are 12 powerful stats that establish mobile’s astounding impact on phone calls.

 Mobile Search is Driving More Calls for Your Business

The tremendous amount of phone calls generated by mobile searches makes it absolutely vital to be able to analyze and understand the source of each call, as well as route those calls correctly. Mobile has shifted the entire advertising landscape, and for the first time, local mobile searches (85.9 billion) are projected to exceed desktop searches (84 billion) in 2015 (eMarketer). The shift towards mobile search over desktop means more phone calls, and here’s why:

  1. Of mobile searches, 40% occur on tablets and 60% on smartphones (Icebreaker Consulting)
  1. 73% of mobile searches trigger follow-up actions (SearchEngineLand)
  1. Google conducts 30 million click-to-calls each month (SmallBizTrends)
  1. Mobile searchers are 39% more likely to call after searching for information related to a buying decision (Google – Creating Moments That Matter)
  1. 81% of conversions (defined as store visits, calls, or purchases) triggered by mobile search occur within five hours (Google – Creating Moments That Matter)
  1. Call extensions have typically increased click-through rates by 6-8% (Google)
  1. When people use mobile search to help make a decision they are 39% more likely to call a business (Google – Creating Moments That Matter)

Knowing where your calls are coming from is crucial for those with a mobile marketing plan. Without knowing what sources are actually driving your calls, you have no way to optimize your inbound lead flow. Mobile growth is showing no signs of slowing down, and neither should your mobile marketing. The best way to make sure you are only investing in mobile sources that drive calls to your business is with a call tracking solution. Call tracking allows you to track every phone call back to specific ads, keyword searches, web pages, and any other online or offline source.

Online Shoppers Want Your Help

Easy access to support really makes customers happy. Those who don’t get outstanding support are much more likely to abandon their purchase. Mobile shopping makes excellent customer service via the phone more valuable than ever.

  1. 535 million consumers worldwide will make a purchase this year on a mobile device (Goldman Sachs)
  1. 83% of consumers require some degree of customer support while making an online purchase (eConsultancy)
  1. Customers are increasingly frustrated with the level of service they experience: 91% because they have to contact a company multiple times for the same reason, 90% by being put on hold for a long time, and 89% by having to repeat their issue to multiple representatives (Accenture Global Consumer Pulse Survey)
  1. Consumers prefer to receive assistance via the following channels: Phone (61%), email (60%), Live Chat (57%), online knowledge base (51%), “click-to-call” support automation (3%) (eConsultancy)
  1. 45% of US consumers will abandon an online transaction if their questions or concerns are not addressed quickly (Forrester)

Customers want to talk to you. Providing an easy-to-find phone number that goes directly to your customer service team is one of the easiest ways to please them. With so much shopping happening on mobile phones, calling for support is now easier than ever. And better yet, these shoppers want to talk to you on the phone more than any other channel! That’s why so many businesses are using virtual call centers to connect these callers with their agents. Virtual call centers allow you to route calls to any rep, anywhere they are. There is no hardware or software, and the flexibility offers unparalleled customer support options.

Don’t miss out on the incredible amount of revenue that can be driven through mobile search and mobile shopping. By enabling your company to provide outstanding support, you keep your customers coming back time and again. Interested in learning more about optimizing your company’s mobile marketing efforts? Check out our eBook, the Marketer’s Guide to Call Tracking for Local Search.

The post 12 Stats That Prove Mobile is Making Voice More Important Than Ever appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 16, 2015

It rarely rains in San Francisco. We go months without so much as a drop, sprinkle or sun shower. But, when the rain hits, it hits hard. In December there were tremendous floods due to downpour that left homeowners and renters in dire straits. Unprepared landlords had to scramble and work against the clock to fight flooding, and repair water damage.

Nikhil Karnik, a software engineer at distributed cloud computing platform for data analysis, Zillabyte, built an app to give landlords a polite (but direct) heads up when rains are coming. Nikhil experienced flooding first hand, and hopes his new app that sends landlords rain updates via Twilio SMS can save other tenants from the hassle he suffered. Thanks to the power of Zillabyte, Nikhil knows his app can not only help out San Franciscans, but anyone in the US.  Check out his blog post below, and grab the code here.

To learn more about Zillabyte and read Nikhil’s post, originally published on the Zillablog, click here.

How to Build a Global Weather Alert System in Under an Hour

If the 3 day weather forecast calls for a large amount of rain, I can probably just check an app and let my landlord know in advance. But, hold on… Zillabyte is a service for distributed computing… so what’s the fun of being limited to weather data from one city? I want to help tenants notify their landlord all across America (even the whole world!) about upcoming local weather conditions. I am better served using Zillabyte to query and process data from almost every weather station in America and an automated service like Twilio to serve the notifications.

First, I wrapped all of my Twilio rest API calls inside a Zillabyte component. After registering this component, I can call this component at will. The component simply sends a message from a Twilio number about the current weather conditions in a city to a phone number subscribed to that city.

The Crux of the App

import zillabyte
from zillaweather import TwilioEach

app = zillabyte.app(name="zillaweather")

#source from list of world cities
stream = app.source("all_cities")

#call component to find current weather condition at each city
stream = stream.call_component("tomorrow_weather")

#Use current weather and dictionary of cities : numbers to send a SMS with Twilio
stream = stream.each(TwilioEach, name="Prepare_Twilio")
stream = stream.call_component("twilio_text")

stream.sink(name="weather", columns = [{"to":"string"}])

That’s seriously it. In full disclosure, this is what the entire app looks like without modularizing the Twilio Each class. All things considered, maybe 30 lines of code total. How? All because of the power of components.

Sending Twilio SMS with Zillabyte

If the 3 day weather forecast calls for a large amount of rain, I can probably just check an app and let my landlord know in advance. But, hold on… Zillabyte is a service for distributed computing… so what’s the fun of being limited to weather data from one city? I want to help tenants notify their landlord all across America (even the whole world!) about upcoming local weather conditions. I am better served using Zillabyte to query and process data from almost every weather station in America and an automated service like Twilio to serve the notifications.

First, I wrapped all of my Twilio rest API calls inside a Zillabyte component. After registering this component, I can call this component at will. The component simply sends a message from a Twilio number about the current weather conditions in a city to a phone number subscribed to that city.

import zillabyte
from twilio.rest import TwilioRestClient

def send_text(controller, tup):

  # Register twilio client
  twilio_client = TwilioRestClient(tup["twilio_sid"], tup["twilio_auth"])

    # Send message to recipient and wait 1 second (twilio SMS rate limit)
    text_body = "It is going to be " + tup['condition'] + " in " + tup['city'] + " tomorrow!"
    twilio_client.messages.create(to=tup["to"], from= tup["from"], body= text_body)

    # Emit the recipient back to the stream...
    controller.emit({"to" : text_to})


component = zillabyte.component(name="twilio_weather_text")
stream = component.inputs( 
  name = "input_stream",
  fields = [{"twilio_sid" : "string"}, {"twilio_auth" : "string"},
            {"from" : "string"}, {"to" : "string"}, {"city" : "string"},
            {"condition" : "string"}]

stream = stream.each(send_text)
stream.outputs(name = "output_stream", fields=[{"to" : "string"}])

Fork this component on github.

The Entire App

After registering the component, the remainder of the Zillabyte app is straightforward to write. The app uses a pre-registered component called “tomorrow_weather”, which will determine the expected forecast for tomorrow for a given city. It then sends rain notifications to phone numbers registered by city via the Twilio “send_text” component.

Why Mix Data and Notifications?

The primary utility and accessibility of “big data” stems from the ability of data systems to provide meaningful insights to humans. Certainly, many times large-scale data systems are built to feed some dynamic model on the back-end (such as an Ad model on a social network service), but under certain conditions, notifying humans is necessary. For example, if your Ad model is performing particularly poorly (users aren’t clicking because they aren’t being served relevant ads), your data science team might want to receive a text notification in case they’re out to lunch.

Rain’s Coming, Tell Your Landlord via Twilio SMS and Zillabyte

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Developer training for building or augmenting contact centers with Twilio is now available on Twilio <Skills>. Twilio <Skills> provides introductory developer training on Twilio products as well as deeper dives into Twilio use cases. The new Contact Center Innovator badge is the first use case deep-dive to be made available. It explores how to use Twilio to build contact center applications that provide greater context and relevance to customer interactions.

Contact Center Developer Training

The contact center training consists of introductory lessons and hands-on coding projects. Lessons explore key concepts, such as elements of a contact center, network planning and requirements, and ways to scale call volumes. Projects provide instruction and hands-on practice building Twilio-enabled contact center apps, such as building an inbound contact center using queues, outbound dialing, and using messaging in a contact center. The contact center training also explores ways to extend an existing contact center with Twilio. Topics include augmenting call routing with Twilio’s carrier connectivity, increasing global reach with Twilio’s local and global phone numbers, adding new features such as recording or messaging, or replacing your primary or backup trunk (or adding burst capacity) via Twilio’s Elastic SIP Trunking.

Developers can review introductory lessons to familiarize themselves with contextual information, or jump straight to the projects and get coding.  Each project includes instruction, contextualized links to documentation, guidelines for what to build, testing and troubleshooting info, and an opportunity to submit your application to automatically validate that it works. Developers earn points as they complete lessons and projects, and accumulate points to earn badges.

Additional Twilio Training and Badges

Along with the new contact center training, Twilio <Skills> offers Twilio projects and training for a wide range of developers. Those just getting started with Twilio should begin with the Twilio Explorer badge which describes how to set up your developer environment and introduces TwiML and the Rest API. Developers who have explored a bit and would like to learn more should take a look at the Doer badges for lessons and projects on building apps using Messaging, Voice and Client.  Experienced Twilio developers looking to demonstrate their skills and differentiate on their expertise can skip straight to the Doer Capstone project to build a single application combining capabilities from all three products and earn their Explorer and Doer badges with one quick project.

Twilio < Skills >

Twilio Skills > is a great resource for developers looking to master Twilio’s products and build exceptional communication applications. Skills > was designed and built as an accompaniment to Twilio’s API documentation. While the docs provide key information and reference, takes a more guided approach, using longer narratives, filling in background information, exploring real world communications problems and offering accompanying coding projects to give depth to learning.

Interested in learning about additional Twilio use cases? Stay tuned – more Twilio Innovator badges are in the works!

Introducing Twilio Skills >: On Demand Contact Center Developer Training

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

content marketing mythsWhile there are numerous examples of quality content, and no shortage of experts in content marketing with insights to share, there’s also a lot of bad advice floating around out there on what qualifies as good content strategy. We want to make sure you don’t listen to that bad advice, so here are a few mistakes to avoid when it comes to your content production.

Content Must Go Viral in Order to Be Effective

We’ve all been “Rick-rolled” and have seen Keyboard Cat tickle the ivories, but how does that kind of shareable content translate to your business? It doesn’t. Most viral content, although viewed by a large audience, is not going to educate your customers and generate leads for your business (unless you’re selling pianos or cat toys).

Companies that ask their marketing team or agency to “create a viral video” often miss the point of content marketing. Content creators work hard to produce the best content they possibly can, and it’s true they do hope it catches fire and goes viral. But businesses should not let the lure of free content with massive distribution pull their focus away from creating valuable, timely content that is appropriate and relevant for their target audience.

An example of content that is business- and viewer-approved is DollarShaveClub.com. This video doesn’t use gimmicks or try to “game the system” in order to get likes and shares; it went viral because the content was aligned with the company’s objectives and it filled a need for consumers, not to mention it was hilarious.

Quantity Is Better Than Quality

Many media sites have figured out how to run a business on producing the cheapest content possible. The model is to publish a flood of content that drives traffic and place advertising around it, and all consumers have to do is push the purchase button.

An abundance of content helps educate your audience and create brand presence, but have you heard the adage, “You get what you pay for?” Unfortunately, if you’ve spent money, time, and energy building your brand, cheap content can easily reverse that trend, and you’ll be spending much more money trying to build back a brand you’ve tarnished with low-quality, factory-assembled content.

The truth is, quality, engaging content is not cheap. It may cost you more, but it’s in your business’s best interest to hire experienced media and content specialists to produce content for you. This will allow you better control of your message and branding, and will do a better job driving the right leads to your sales team.

You Should Be on Every Platform

“Why are you not on Vine? You should be on Vine!” Whenever a shiny new platform comes out, you will hear experts proclaim that you have to be on it. To prove their point they’ll throw out a bunch of statistics as to the new platform’s usage and growth, plus point to examples of a few companies who have been successful.

Not every business is right for every platform. Most marketing teams run a tight ship and don’t have extra hours to devote to a platform if it’s not a right fit for their target audience. Social media is a growth industry, so no matter what you do on social you will see some kind of growth by just being present. You will see even more growth by being minimally active, but is that the kind of data you’re looking for? Probably not. Those numbers are usually just vanity metrics because they look good, but in reality they don’t show how your content posting translates into actual business.

Developing a social media platform strategy is a smart way to allocate resources, position your brand consistently, and generate real growth. Alongside your strategy, you should also consider implementing marketing analytics solutions so you can track which platforms and content get the most attention and generates the most web leads and sales calls.

Great content is tough to deliver. There are a million opinions on how to do it right, but the best advice we can offer is to take all opinions with a grain of salt. Content should be of the best quality and tailored to your goals and your audience, not just what’s new and cool in the content marketing space.

If you’d like to know more about how to prove the value of your content marketing initiatives, check out our white paper: Marketer’s Guide to Proving (and Improving) Content Marketing ROI.

The post Don’t Be Fooled by These 3 Content Marketing Myths appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 15, 2015

ito_logoSome tenacious coding elves that work in the crawlspace under the Tropo offices have been busy click-clicking up a tasty new offering called Ito, which launched today in beta.

What is Ito?

Ito is a bot that works with Slack to make it excruciatingly easy to spin up voice and video conferences directly from your Slack chat rooms. The Ito bot adds voice and video features, including person-to-person calling, multi-party conferencing, call recording, voice to text transcription, and voice analytics to text messaging platforms. Users give Ito commands via a simple chat-based interface.

How does it Work?

Ito gets triggered in any Slack chatroom through simple commands typed right in the Slack interface. You just type to Ito what you want and the bot connects you. Here are some examples:

/ito @johnyaya — Ito will call you and Slack user “johnyaya” and connect both of you.

/ito @johnyaya @johnwhorfin — Ito will call you, Slack users “johnyaya” and “john whorfin”, and connect everyone.

/ito @johnyaya @johnwhorfin @johnparker — Ito calls and connects you, “johnyaya”, “johnwhorfin”, and “john parker”.

/ito all — Ito would call and connect all of the Slack users in the Slack Channel or Private Group you type the command into.

/ito @johnyaya 14085551212 — Ito will call and connect @johnyaya and the phone at 14085551212

/ito 14085551212 +14075551212 1-415-555-1212 — Ito will call and connect you with these three phone numbers.

/ito sip:johnyaya@yoyodyne.com — Ito will connect you and John Yaya at John’s SIP address.

But wait, there’s more!

Once you connect your calls, Ito can do more things like record the conference call, perform Hypervoice voice analytics including speech-to-text transcription and more. Future plans include support other popular collaborative messenging tool like IRC and HipChat.

How do I sign up?

Ito is currently available for a invite-only beta. You can register to participate in the beta and find out more information at at http://i.to

To read the full press release: Announcing Ito, the Communication Assistant for Slack

As mentioned in Forbes: Messaging Gets More Useful



The post Announcing Ito, the Communication Assistant for Slack appeared first on Tropo.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

sales-phone-ifbyphoneToday’s digital marketing environment has many marketers mistakenly believing that all the most valuable interactions with buyers happen online. But all the numbers show that while digital is as hot as ever, mobile is the channel where marketers can’t afford to be behind the times. After all, mobile search is expected to surpass desktop search this very year, and 56% of mobile searches trigger a phone call to a business in less than one hour. What’s more, 60% of the time Americans spend with online retail occurs on mobile devices—a trend that Zappos has found enormous success with in regard to their app and their customer service philosophy.

With all this in mind, how can you get the calls that buyers are making on their devices to come to you? How can you get your sales team’s phones ringing? Here are 12 ways to inspire you.

1. Simple Step One: Start Using Phone Numbers on Your Ads.

If you want potential customers to use that magical mobile device to connect with you, you need to let them know that you welcome their phone calls. This can be a change of zeitgeist for businesses who have gotten used to communicating with customers via email and “contact us” boxes only. But the persuasive statistics around how buyers prefer to contact businesses should convince you that putting numbers on your ads is a worthwhile activity.

2. And a Step Further: Put Phone Numbers on Your Website, Landing Pages, etc.

If a buyer is browsing your website and decides they have questions about their purchase—or even higher-level questions about your product or service—the first place their eyes go is to the top right of your website: they’re looking for a phone number. Studies show that buyers who are serious about moving forward in the customer journey appreciate immediacy, so chances are they would like to pick up the phone and connect with you right away.

3. Include Phone Numbers in Your A/B Tests

Smart marketers are already A/B testing, but if you’re not including phone numbers as part of that strategy, you’re missing a piece of the puzzle. We should be testing everything and analyzing the data we gather, including what putting a phone number versus a web form on landing pages does for conversions. In a test here at Ifbyphone, for example, we found that phone leads became customers 3x as often as web form leads. What will including phone call data in your A/B tests do for you? If the data shows that your customers are more likely to call, you can leverage that information to use phone numbers more often on landing pages and get your sales team’s phone ringing.

4. Always Use Call Tracking Numbers

A phone number should not merely be a phone number. You need to be able to track callers’ activity back to the keyword, ad, landing page, or webpage that drove them to call you, and that requires using call tracking numbers. Giving them a way to contact you by phone is great, but if you don’t have data, you’re not making the most of what phone calls have to offer.

5. Use Click-to-Calls Whenever Possible

People love click-to-calls. It’s undeniable. With this in mind, you should use them whenever possible in your mobile campaigns. Google reports that 70% of online searchers clicked the click-to-call button in search results when browsing on their mobile device. Don’t let this feature pass you by.

6. Include Phone Numbers on Your Blogs Too

This goes for all your content, really. You never know who’s reading your blog or studying your infographic: the glory of content marketing is that it reaches buyers at different points in their individual buying journeys. Your random blog may address their pain-point precisely, so give them a way to contact you directly from it: they may be inspired to reach out. And with call tracking numbers, you’ll know exactly where they came from.

7. Include Call Analytics in Your Reporting

There are many reasons to include call analytics in your overall reporting, but here’s a couple: so that you are not only able to track phone leads back to their source and study that data, but you can use that information to spend more money on campaigns that actually work and less on campaigns that don’t. Knowing what made your phone ring in the past gives you the ability to make your phone ring more in the future.

8. Integrate Your Phone Calls with Your CRM

If you haven’t noticed from the above reasons, data plays a big part in getting more sales calls. What can we say? It’s a data-driven world! And integrating your phone calls with your CRM and marketing automation can add another layer to that data, including giving your sales reps the information they need to make every call more effective and efficient.

9. Get Social

Mountain Dew made headlines recently by including a click-to-call in their promoted tweets, from which they got an extremely positive response from Twitter users. Twitter has 232 million users and the majority of them use Twitter on their mobile device—prime territory for click-to-calls.

10. Consider Geo-Location

Knowing the location of your callers provides numerous advantages for marketers hoping to make the phone ring. Geographic marketing unlocks extraordinary potential by finding the locations of your most likely caller. By knowing where to target your efforts, you can greatly increase the conversion rates of your marketing campaigns. With geo-location, the precise location of a caller can be determined through cell phone triangulation. This means that caller can be automatically routed to the store, office, or agent that is closest to them.

11. Capture the Outcome of Every Single Phone Call

Call intelligence tools like keyword spotting, for example, give you the power to listen to what callers (and agents) are saying with the goal of improving the call experience. By setting specific words and phrases (eg. branded terms) as metrics in a flexible keyword spotting tool, marketers can “listen” for when these terms are used by the customer or prospect, giving a pretty good indication of whether those terms and phrases are getting traction in the market. Then you can use that data to improve/tweak your marketing so that you’re targeting the specific language of your prospects.

12. Experiment with CTAs

Every marketer knows the importance of a killer call-to-action. While you should be doing extensive A/B testing as it is, don’t forget to experiment with the call-to-action itself. You may be including a click-to-call in paid search, for example, but give your buyers the encouragement they need by using words like “Call me now!” or “Talk to us now!” as a CTA so they know that phone number won’t just take them to a dead-end hours and location menu and not a real person.

Want to learn more about how you can use the power of the phone to get your sales’ teams phones ringing? Download this free webinar, 7 Ways Inside Sales teams Optimize Performance in a BYOD World.

The post 12 Ways to Get Your Sales Team’s Phones Ringing appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 14, 2015

trade show ROI ifbyphoneThe holidays are behind us and 2015 is here! Budgets have been trimmed, plans are in place, and event season is in full swing! With over 1,600 trade shows and conventions taking place each year in North America, it can be difficult to determine which shows to attend. Trade shows and conventions offer businesses a unique opportunity to generate leads, meet new customers, and build relations with existing accounts. To effectively accomplish your goals while at the show, you must plan accordingly.

Benefits of using a Scorecard to Measure Trade Show Metrics

As an event marketer, I am always looking for tools to help justify participation in trade shows and that give insight into conversion metrics. One tool I use to track and measure all the data compiled from events is called a marketing event scorecard. I have found this tool to be highly useful in helping to evaluate and measure the success of a show. The scorecard summarizes all information related to the show: quantitative and qualitative results, expenses, and feedback gathered from the event. Before you create your own scorecard, it is important that you consult all personnel involved with the trade show (such as sales, marketing, and execs) to weigh in on what measurements to include. There are four sections that I included as part of the scorecard:

Section 1: Event Information

The top portion of the scorecard includes qualitative details about the event. I find it important to include this information for current and future planning:

  • Date
  • Location
  • Target audience
  • Competitors
  • Number of exhibitors

Section 2: Trade Show Costs

The second section is a breakdown of trade shows expenses. Costs relating to trade shows will very depending on the size of your booth, location, and labor. This tool will help you take a good look at each individual show and assess all costs associated with the event to help create a more accurate budget. Below are a few of the expenses I include:

  • Exhibit booth
  • Travel and expenses
  • Sponsorship
  • Booth shipping
  • Promotional items
  • Collateral

Section 3: ROI Measurement

The third section is a breakdown of quantitative data collected during the show that pertains to ROI. This section will help you prove the worth of the show to your company and provide you with strategic information in order for you to make any decisions before, during, and after the show. This data will enable you to determine the success of the trade show and help plan future events.

Monthly reoccurring revenue (MRR)

  • Cost Per Lead (CPL)
  • Cost per opportunity (CPO)
  • Number of accounts
  • Total Revenue
  • Total opportunities created
  • Total number of leads collected

Section 4: Feedback and Analysis

The fourth section is a collection of feedback given by the sales and executive teams based on their experiences while at the show. There will be times when you, as the event planner, will be double booked, and since you cannot physically attend every show it is wise to send a sales, marketing, or a member of the executive team to scope out the show and relay information.

Once all the data has been compiled and the scorecard has been completed, I recommend giving the show a grade, similar to one you would receive in school. Grade A is equivalent to exhibiting/sponsoring again. Grade B is average – the show should be placed in the consideration pile. Grade C is below average – this show should not be in the consideration pile.

I find the method of scorecards to be the most effective way to measure the success of a trade show. However, it’s important to use a tool that you are most comfortable with and that works best for your business. I hope the information I have provided helps you to at least begin developing your own tool for tracking the ROI of your next show. Do you have any ways you measure the success of your trade shows?

The post The Easy Tool That Helps You Track and Measure Trade Show ROI in 4 Easy Steps appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

January 13, 2015

Powering modern communication is what we hang our hat on. That means giving you the tools to build instant, context-driven, interactive communications into the apps that interface with your customers. It also means customizing that experience in every region where you do business so that you portray a local familiar brand.

This was the idea behind commissioning a small survey in a not-so-small country where we offer voice- and SMS-capable phone numbers, Germany.

The results were enlightening.

First, it’s notable that Germans are communicating with businesses and brands quite a bit. 74% of Germans, or about 6 in 8, are doing so at least monthly.

 That statistic, in and of itself, isn’t exactly mind blowing. But it’s important context when we look at the next stat – that about half of those who responded were NOT satisfied with their experience communicating with companies.

Ineffective customer communication is like dry rot, much more destructive than it ever appears on the surface. It doesn’t just mean low customer satisfaction scores, it means a degrading brand and shrinking revenue. You lose business right away because customers don’t get the information they needed, can’t figure out how to respond to simple promotions or, worse, lose interest in your brand or business.

 There’s an opportunity here to change the perception of the customer and to use communications as a competitive advantage, rather than treating it as a necessary evil. If we dig one layer deeper into the survey, there’s some insight as to why customers are generally unsatisfied and how you can respond.

Speed of Response

More than anything, people hate it when they have to wait on a company for information or support. We’ve come to expect instant feedback in today’s digital world and now B2C communication is measured by the same bar.

The survey reinforced this notion, showing that about half of German respondents were not happy with the time it took for companies to respond.

But again, there’s an interesting twist here.

The vast majority of Germans (92%) are mostly using email to communicate with companies. And yet 80% of respondents don’t open their email right away! So even if you respond to a customer’s email in seconds, they may not notice until the next time they check that email account. So all your hard work may be going unnoticed.


Mobile Communications

Lots of companies in Germany and really everywhere are going down the path of mobile apps to communicate with customers. In many cases, that’s the right instinct as more people get comfortable interacting with companies over an app. This is especially true for your strong advocates and dedicated customers who will almost definitely download and use your app.

But it’s still going to take some time for mobile apps to get 100% customer adoption. Part of this is simple demographics. In Germany, the survey found that mobile apps are far more common among German millennials compared to any other age group. Millennials were 58% more likely to use mobile apps.

Bottom line, companies really need to think through their entire mobile approach and what different methods can be used to maximize reach and engagement. What’s the uptake of your mobile apps? What groups are making the most use of them? How do you ensure that those who don’t download your app get a great experience too?

Data Privacy

People have become hyper-vigilant in a world where financial data is often mismanaged and where almost everything we do is tracked, logged and analyzed for commercial purposes. Because B2C communication tends to involve an exchange of personal information, consumers care about how you manage data privacy.

 This came through in the survey with vigor. 80% of Germans don’t even want their phone number exposed when they’re communicating with a company. Whether that means you masking their phone number or other techniques, they want companies to take precautions.

Germans also want companies protecting their information with strong access control. 82% wanted their accounts protected with not just a password but some other factor of authentication. As we get more comfortable with multifactor authentication on mobile devices using biometrics like fingerprints, people are also getting more comfortable with things like SMS verification as a second factor of authentication or to alert users of dubious activity on their account.

What Does It All Mean?

While this survey was exclusive to Germany, I think the lessons are universal. A big swath of the German public is unhappy with how companies communicate with them. They want communication to be timelier, more mobile and more secure.

The heavy reliance on email looks like one obvious misstep and our expectations for mobile apps might be premature.  SMS is one medium that rated well in the survey, with German respondents twice as likely to open SMS immediately, compared to email. SMS was also effective across all demographics.

Offering an experience that’s local also seems to play well in Germany. Germans wanted access to local and toll-free phone numbers as well as local language.  Over 70% of Germans wanted German speaking customer service reps and German text-to-speech (TTS) menus.

The major takeaway seems to be that multiple modes of communication and a local German experience are needed to boost the chances of reaching and delighting your German customers. And I think that’s a takeaway that will work not just in Germany, but anywhere.

Lessons From Germany: Communicating with Customers

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Share This: Plum Voice has been providing cloud IVR for over a decade. Over that span of time, this cloud concept—taking care of infrastructure and […] …read more

The post Why Cloud Infrastructure Needs Dispersed Datacenters appeared first on Plum Voice.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

I’m not really a computer game person. I’ve never owned a Playstation or Nintendo videogame system, and still have an original Atari system sitting in a box in the back of my closet somewhere. So for a video game to catch my attention takes a lot. A new voice-powered interactive game hit the market last […]

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

phone-and-keyboardAutomation has taken many steps towards reducing the overwhelming amount of data that is usually entered into a CRM system. Marketing automation platforms like Act-On and HubSpot are great at capturing when a prospect interacts with your brand presence. Email automation providers, such as Yesware, can automatically save each email to Salesforce ensuring that no emails are lost. The more things that can be automatically logged in your CRM, the better your data will be and the more time your sales and support reps can spend working with your customers.

Sales and support agents spend countless hours entering information into CRM platforms. Each activity requires a new entry, every stage change brings up more required fields, every service call needs a case created, and every victory results in further punishment by way of CRM. Yet, there is a reason for all of this data entry. The more information there is on every prospect or customer, the better you can serve them and cater to their needs. Integrating your CRM with a real-time call tracking solution is another excellent way to elevate the quality of your data. Removing the need to manually log every call made and every support call taken can free up a lot of time. This type of integration allows your agents to take (and make) more calls, improving customer service and driving more revenue.

Spend Less Time Entering Data and More Time Talking to Customers

As your CRM becomes more automated, your data will become more accurate and more useful. By adding voice automation capabilities to your CRM platform, you enable your sales and support agents to be more efficient and effective while on the job. Capturing data on both your inbound and outbound calls allows your agents to spend more time selling or helping customers, instead of entering in activity data.

Capturing a caller’s information manually can take a lot of time and frustrate the person on the other end of the phone. But knowing how to contact the caller again is crucial to your business. So why not automate this process? Voice automation simplifies this process by automatically creating a call record and appending it to a contact or lead. When no record of a caller exists, one will be automatically created. As soon as that caller becomes known, the call record is automatically appended to their contact record. With call tracking, you can automatically capture the caller’s number, location, and the source where they found your phone number.

Know Your Caller Better Than They Know Themselves with Screen Pops

Voice-based automation doesn’t just save your agents time by reducing the amount of data entry required, it also helps them have more efficient phone calls. Knowing who is calling and where they found your number can help your agents have better, more efficient conversations. Quick access to CRM records is crucial for both sales and support agents. Quick access to lead and contact information can make a world of difference for the person on the other end of the phone. Not surprisingly, 84% of customers are frustrated when a representative does not have immediate access to account information. This allows them to spend more time learning about your product or solving their problems, instead of identifying themselves.

Link Phone Call Data with the Rest of Your CRM Data

To truly know what drives revenue for your business, you have to have the complete picture of what is driving your leads. In order to truly optimize your lead generation, you need to be able to track every type of interaction. Tracking your customers’ online interactions is no longer enough. All interactions—online and offline—need to be recorded. Having a complete call history makes it easier to serve your customers’ needs. Filtering out calls that didn’t last a substantial amount of time makes this reporting even more accurate. Having that wealth of knowledge allows your sales team to sell better and your support team to better assist customers.

Automating your CRM is beneficial for everyone. It makes your agents’ lives easier and enables them to provide better support for your customers. For those who report on CRM data, reducing the amount of manual entry means better, cleaner data. Integrating voice automation with CRM allows for all call data to be captured. Whether a rep is making or receiving a call, the data gets logged and appended to the appropriate record. Having a history of all these calls can make a world of difference for your organization. Ifbyphone’s integration with Salesforce enables organizations with numerous features such as inbound and outbound call activity capture, real-time integration, and an agent panel for screen pops and dialing directly within Salesforce. To learn more about Ifbyphone’s award-winning integration, check out our listing on the AppExchange or request a demo to see what these tools can do to improve your processes.

The post Automatically Capture Data on Every Inbound and Outbound Call in Your CRM Platform appeared first on Ifbyphone.

Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

9683df80_dc1x931wffffffCNBC Arabiya (Arabic: CNBC العربية) is the leading 24-hour Arabic language financial and business information television channel, covering regional and international affairs from an Arab economic perspective. CNBC Arabiya also discusses business on its website, in both the Arabic and English language. Articles discuss economic happenings from around the globe, with a focus on effects in the Middle East. CNBC Arabiya chose to increase the interactivity of its Arabic-language website with ReadSpeaker’s text-to-speech technology. We spoke with Ms. Sahar Ibrahim, Senior Producer- New Media at CNBC Arabiya about their experience with ReadSpeaker.

Why is online accessibility so important to CNBC Arabiya?

To reach wider range of viewers.

How long have you been providing a text-to-speech service?

Almost for one year.

What prompted you to choose ReadSpeaker as your preferred Provider?

Accuracy and the best Arabic voice reader.

Do you know how many of your end-users use mobile devices to access content?

About 111,364 in one month.

How easy was ReadSpeaker to implement?

Very easy.


Bookmark this post:
Ma.gnolia DiggIt! Del.icio.us Blinklist Yahoo Furl Technorati Simpy Spurl Reddit Google

Last updated: January 26, 2015 10:01 PM All times are UTC.
Powered by: Planet

Speech Connection and Logos are Trademark of Nu Echo Inc. Copyright 2006-2008.