Tag Archives: second

Thumbnail

How to Reduce Bounce Rate Today: 12 Advanced Techniques

how-reduce-bounce-rate

Have you ever walked into a store, turned around, and walked right back out? You bounced. Maybe you didn’t like the look of the store itself, or perhaps you realized the store didn’t sell the type of merchandise you needed. Whatever the case, you took one look and got out of dodge. The same thing happens on your website, and it’s not a good thing. Learning how to reduce bounce rate makes your site “stickier.” It’s more inviting. Visitors want to hang around for a while — and maybe even buy something or convert on one of your offers. A…

The post How to Reduce Bounce Rate Today: 12 Advanced Techniques appeared first on The Daily Egg.

Continue reading:

How to Reduce Bounce Rate Today: 12 Advanced Techniques

Thumbnail

How to Build an Email List from Scratch Fast (Top Tips From an Expert)

how-to-build-an-email-list-1

I always prefer to get information directly from experts. If I can eliminate some of the guesswork before I start a new marketing campaign, I’m already ahead of the curve. That includes information on topics like how to build an email list. Geoff Roberts, marketing expert and the founder of Outseta, agreed to answer some of the questions I know you’re asking about your own businesses. I’m excited to share with you the answers he gave to my queries about email marketing, list building mistakes, advanced email marketing tactics, and more. First, though, I want to cover some of the…

The post How to Build an Email List from Scratch Fast (Top Tips From an Expert) appeared first on The Daily Egg.

Visit link: 

How to Build an Email List from Scratch Fast (Top Tips From an Expert)

Thumbnail

A Step-by-Step Guide to Creating the Best Call to Action for Conversions

best call to action

Fewer than 25 percent of businesses express satisfaction with their conversion rates. That’s pretty depressing. Conversion rate optimization (CRO) doesn’t improve your conversion rates overnight, but it sets you up for success. Part of CRO involves optimizing your calls to action for conversions. How is the best call to action for conversions? There’s no single call-to-action formula that can magically convince most of your leads to convert, but if you’re willing to get to know your audience, experience with different CTAs, and test variations, you’ll get closer to the conversion rates you want. We’ll be covering lots of information, so…

The post A Step-by-Step Guide to Creating the Best Call to Action for Conversions appeared first on The Daily Egg.

Visit site – 

A Step-by-Step Guide to Creating the Best Call to Action for Conversions

Getting Started With The Web MIDI API

As the web continues to evolve and new browser technologies continue to emerge, the line between native and web development becomes more and more blurred. New APIs are unlocking the ability to code entirely new categories of software in the browser.

Until recently, the ability to interact with digital musical instruments has been limited to native, desktop applications. The Web MIDI API is here to change that.

In this article, we’ll cover the basics of MIDI and the Web MIDI API to see how simple it can be to create a web app that responds to musical input using JavaScript.

What Is MIDI?

MIDI has been around for a long time but has only recently made its debut in the browser. MIDI (Musical Instrument Digital Interface) is a technical standard that was first published in 1983 and created the means for digital instruments, synthesizers, computers, and various audio devices to communicate with each other. MIDI messages relay musical and time-based information back and forth between devices.

A typical MIDI setup might consist of a digital piano keyboard which can send messages relaying information such as pitch, velocity (how loudly or softly a note is played), vibrato, volume, panning, modulation, and more to a sound synthesizer which converts that into audible sound. The keyboard could also send its signals to desktop music scoring software or a digital audio workstation (DAW) which could then convert the signals into written notation, save them as a sound file, and more.

MIDI is a fairly versatile protocol, too. In addition to playing and recording music, it has become a standard protocol in stage and theater applications, as well, where it is often used to relay cue information or control lighting equipment.


A performer plays a digital piano onstage


MIDI lets digital instruments, synthesizers, and software talk to each other and is frequently used in live shows and theatrical productions. Photo by Puk Khantho on Unsplash.

MIDI In The Browser

The WebMIDI API brings all the utility of MIDI to the browser with some pretty simple JavaScript. We only need to learn about a few new methods and objects.

Introduction

First, there’s the navigator.requestMIDIAccess() method. It does exactly what it sounds like—it will request access to any MIDI devices (inputs or outputs) connected to your computer. You can confirm the browser supports the API by checking for the existence of this method.

if (navigator.requestMIDIAccess) 
    console.log('This browser supports WebMIDI!');
 else 
    console.log('WebMIDI is not supported in this browser.');

Second, there’s the MIDIAccess object which contains references to all available inputs (such as piano keyboards) and outputs (such as synthesizers). The requestMIDIAccess() method returns a promise, so we need to establish success and failure callbacks. And if the browser is successful in connecting to your MIDI devices, it will return a MIDIAccess object as an argument to the success callback.

navigator.requestMIDIAccess()
    .then(onMIDISuccess, onMIDIFailure);

function onMIDISuccess(midiAccess) 
    console.log(midiAccess);

    var inputs = midi.inputs;
    var outputs = midi.outputs;


function onMIDIFailure() 
    console.log('Could not access your MIDI devices.');

Third, MIDI messages are conveyed back and forth between inputs and outputs with a MIDIMessageEvent object. These messages contain information about the MIDI event such as pitch, velocity (how softly or loudly a note is played), timing, and more. We can start collecting these messages by adding simple callback functions (listeners) to our inputs and outputs.

Going Deeper

Let’s dig in. To send MIDI messages from our MIDI devices to the browser, we’ll start by adding an onmidimessage listener to each input. This callback will be triggered whenever a message is sent by the input device, such as the press of a key on the piano.

We can loop through our inputs and assign the listener like this:

function onMIDISuccess(midiAccess) 
    for (var input of midiAccess.inputs.values())
        input.onmidimessage = getMIDIMessage;
    
}

function getMIDIMessage(midiMessage) 
    console.log(midiMessage);

The MIDIMessageEvent object we get back contains a lot of information, but what we’re most interested in is the data array. This array typically contains three values (e.g. [144, 72, 64]). The first value tells us what type of command was sent, the second is the note value, and the third is velocity. The command type could be either “note on,” “note off,” controller (such as pitch bend or piano pedal), or some other kind of system exclusive (“sysex”) event unique to that device/manufacturer.

For the purposes of this article, we’ll just focus on properly identifying “note on” and “note off” messages. Here are the basics:

  • A command value of 144 signifies a “note on” event, and 128 typically signifies a “note off” event.
  • Note values are on a range from 0–127, lowest to highest. For example, the lowest note on an 88-key piano has a value of 21, and the highest note is 108. A “middle C” is 60.
  • Velocity values are also given on a range from 0–127 (softest to loudest). The softest possible “note on” velocity is 1.
  • A velocity of 0 is sometimes used in conjunction with a command value of 144 (which typically represents “note on”) to indicate a “note off” message, so it’s helpful to check if the given velocity is 0 as an alternate way of interpreting a “note off” message.

Given this knowledge, we can expand our getMIDIMessage handler example above by intelligently parsing our MIDI messages coming from our inputs and passing them along to additional handler functions.

function getMIDIMessage(message) 
    var command = message.data[0];
    var note = message.data[1];
    var velocity = (message.data.length > 2) ? message.data[2] : 0; // a velocity value might not be included with a noteOff command

    switch (command) 
        case 144: // noteOn
            if (velocity > 0) 
                noteOn(note, velocity);
             else 
                noteOff(note);
            
            break;
        case 128: // noteOff
            noteOff(note);
            break;
        // we could easily expand this switch statement to cover other types of commands such as controllers or sysex
    }
}

Browser Compatibility And Polyfill

As of the writing of this article, the Web MIDI API is only available natively in Chrome, Opera, and Android WebView.


Browser support for Web MIDI API from caniuse.com


The Web MIDI API is only available natively in Chrome, Opera, and Android WebView.

For all other browsers that don’t support it natively, Chris Wilson’s WebMIDIAPIShim library is a polyfill for the Web MIDI API, of which Chris is a co-author. Simply including the shim script on your page will enable everything we’ve covered so far.

<script src="WebMIDIAPI.min.js"></script>    
<script>
if (navigator.requestMIDIAccess)  //... returns true
</script>

This shim also requires Jazz-Soft.net’s Jazz-Plugin to work, unfortunately, which means it’s an OK option for developers who want the flexibility to work in multiple browsers, but an extra barrier to mainstream adoption. Hopefully, within time, other browsers will adopt the Web MIDI API natively.

Making Our Job Easier With WebMIDI.js

We’ve only really scratched the surface of what’s possible with the WebMIDI API. Adding support for additional functionality besides basic “note on” and “note off” messages starts to get much more complex.

If you’re looking for a great JavaScript library to radically simplify your code, check out WebMidi.js by Jean-Philippe Côté on Github. This library does a great job of abstracting all the parsing of MIDIAccess and MIDIMessageEvent objects and lets you listen for specific events and add or remove listeners in a much simpler way.

WebMidi.enable(function () 

    // Viewing available inputs and outputs
    console.log(WebMidi.inputs);
    console.log(WebMidi.outputs);

    // Retrieve an input by name, id or index
    var input = WebMidi.getInputByName("My Awesome Keyboard");
    // OR...
    // input = WebMidi.getInputById("1809568182");
    // input = WebMidi.inputs[0];

    // Listen for a 'note on' message on all channels
    input.addListener('noteon', 'all',
        function (e) 
            console.log("Received 'noteon' message (" + e.note.name + e.note.octave + ").");
        
    );

    // Listen to pitch bend message on channel 3
    input.addListener('pitchbend', 3,
        function (e) 
            console.log("Received 'pitchbend' message.", e);
        
    );

    // Listen to control change message on all channels
    input.addListener('controlchange', "all",
        function (e) 
            console.log("Received 'controlchange' message.", e);
        
    );

    // Remove all listeners for 'noteoff' on all channels
    input.removeListener('noteoff');

    // Remove all listeners on the input
    input.removeListener();

});

Real-World Scenario: Building A Breakout Room Controlled By A Piano Keyboard

A few months ago, my wife and I decided to build a “breakout room” experience in our house to entertain our friends and family. We wanted the game to include some kind of special effect to help elevate the experience. Unfortunately, neither of us have mad engineering skills, so building complex locks or special effects with magnets, lasers, or electrical wiring was outside the realm of our expertise. I do, however, know my way around the browser pretty well. And we have a digital piano.

Thus, an idea was born. We decided that the centerpiece of the game would be a series of passcode locks on a computer that players would have to “unlock” by playing certain note sequences on our piano, a la Willy Wonka.

This is a musical lock
This is a musical lock

Sound cool? Here’s how I did it.

Setup

We’ll begin by requesting WebMIDI access, identifying our keyboard, attaching the appropriate event listeners, and creating a few variables and functions to help us step through the various stages of the game.

// Variable which tell us what step of the game we're on. 
// We'll use this later when we parse noteOn/Off messages
var currentStep = 0;

// Request MIDI access
if (navigator.requestMIDIAccess) 
    console.log('This browser supports WebMIDI!');

    navigator.requestMIDIAccess().then(onMIDISuccess, onMIDIFailure);

 else 
    console.log('WebMIDI is not supported in this browser.');


// Function to run when requestMIDIAccess is successful
function onMIDISuccess(midiAccess) 
    var inputs = midiAccess.inputs;
    var outputs = midiAccess.outputs;

    // Attach MIDI event "listeners" to each input
    for (var input of midiAccess.inputs.values()) 
        input.onmidimessage = getMIDIMessage;
    
}

// Function to run when requestMIDIAccess fails
function onMIDIFailure() 
    console.log('Error: Could not access MIDI devices.');


// Function to parse the MIDI messages we receive
// For this app, we're only concerned with the actual note value,
// but we can parse for other information, as well
function getMIDIMessage(message) 
    var command = message.data[0];
    var note = message.data[1];
    var velocity = (message.data.length > 2) ? message.data[2] : 0; // a velocity value might not be included with a noteOff command

    switch (command) 
        case 144: // note on
            if (velocity > 0) 
                noteOn(note);
             else 
                noteOff(note);
            
            break;
        case 128: // note off
            noteOffCallback(note);
            break;
        // we could easily expand this switch statement to cover other types of commands such as controllers or sysex
    }
}

// Function to handle noteOn messages (ie. key is pressed)
// Think of this like an 'onkeydown' event
function noteOn(note) 
    //...


// Function to handle noteOff messages (ie. key is released)
// Think of this like an 'onkeyup' event
function noteOff(note) 
    //...


// This function will trigger certain animations and advance gameplay 
// when certain criterion are identified by the noteOn/noteOff listeners
// For instance, a lock is unlocked, the timer expires, etc.
function runSequence(sequence) 
    //...

Step 1: Press Any Key To Begin

To kick off the game, let’s have the players press any key to begin. This is an easy first step which will clue them into how the game works and also start a countdown timer.

function noteOn(note) 
    switch(currentStep) 
        // If the game hasn't started yet.
        // The first noteOn message we get will run the first sequence
        case 0: 
            // Run our start up sequence
            runSequence('gamestart');

            // Increment the currentStep so this is only triggered once
            currentStep++;
            
            break;
    
}

function runSequence(sequence) 
    switch(sequence) 
        case 'gamestart':            
            // Now we'll start a countdown timer...
            startTimer();
            
            // code to trigger animations, give a clue for the first lock
            break;
    
}

Step 2: Play The Correct Note Sequence

For the first lock, the players must play a particular sequence of notes in the right order. I’ve actually seen this done in a real breakout room, only it was with an acoustic upright piano rigged to a lock box. Let’s re-create the effect with MIDI.

For every “note on” message received, we’ll append the numeric note value to an array and then check to see if that array matches a predefined array of note values.

We’ll assume some clues in the breakout room have told the players which notes to play. For this example, it will be the beginning of the tune to “Amazing Grace” in the key of F major. That note sequence would look like this.


A visual representation of the first nine notes of “Amazing Grace” on a piano


This is the correct sequence of notes that we’ll be listening for as the solution to the first lock.

The MIDI note values in array form would be: [60, 65, 69, 65, 69, 67, 65, 62, 60].

var correctNoteSequence = [60, 65, 69, 65, 69, 67, 65, 62, 60]; // Amazing Grace in F
var activeNoteSequence = [];

function noteOn(note) 
    switch(currentStep) 
        // ... (case 0)

        // The first lock - playing a correct sequence
        case 1:
            activeNoteSequence.push(note);

            // when the array is the same length as the correct sequence, compare the two
            if (activeNoteSequence.length == correctNoteSequence.length) 
                var match = true;
                for (var index = 0; index < activeNoteSequence.length; index++) 
                    if (activeNoteSequence[index] != correctNoteSequence[index]) 
                        match = false;
                        break;
                    
                }

                if (match) 
                    // Run the next sequence and increment the current step
                    runSequence('lock1');
                    currentStep++;
                 else 
                    // Clear the array and start over
                    activeNoteSequence = [];
                
            }
            break;
    }
}

function runSequence(sequence) 
    switch(sequence) 
        // ...

        case 'lock1':
            // code to trigger animations and give clue for the next lock
            break;
    
}

Step 3: Play The Correct Chord

The next lock requires the players to play a combination of notes at the same time. This is where our “note off” listener comes in. For every “note on” message received, we’ll add that note value to an array; for every “note off” message received, we’ll remove that note value from the array. Therefore, this array will reflect which notes are currently being pressed at any time. Then, it’s a matter of checking that array every time a note value is added to see if it matches a master array with the correct values.

For this clue, we’ll make the correct answer a C7 chord in root position starting on middle C. That looks like this.


A visual representation of a C7 chord on a piano


These are the four notes that we’ll be listening for as the solution to the second lock.

The correct MIDI note values for this chord are: [60, 64, 67, 70].

var correctChord = [60, 64, 67, 70]; // C7 chord starting on middle C
var activeChord = [];

function noteOn(note) 
    switch(currentStep) 
        // ... (case 0, 1)

        case 2:
            // add the note to the active chord array
            activeChord.push(note);

            // If the array is the same length as the correct chord, compare
            if (activeChord.length == correctChord.length) 
                var match = true;
                for (var index = 0; index < activeChord.length; index++) 
                    if (correctChord.indexOf(activeChord[index]) < 0) 
                        match = false;
                        break;
                    
                }

                if (match) 
                    runSequence('lock2');
                    currentStep++;
                
            }
            break;
    }

function noteOff(note) 
    switch(currentStep) 
        case 2:
            // Remove the note value from the active chord array
            activeChord.splice(activeChord.indexOf(note), 1);
            break;
    
}

function runSequence(sequence) 
    switch(sequence) 
        // ...

        case 'lock2':
            // code to trigger animations, stop clock, end game
            stopTimer();

            break;
    
}

Now all that’s left to do is to add some additional UI elements and animations and we have ourselves a working game!

Here’s a video of the entire gameplay sequence from start to finish. This is running in Google Chrome. Also shown is a virtual MIDI keyboard to help visualize which notes are currently being played. For a normal breakout room scenario, this can run in full-screen mode and with no other inputs in the room (such as a mouse or computer keyboard) to prevent users from closing the window.

WebMIDI Breakout Game Demo (watch in Youtube)

If you don’t have a physical MIDI device laying around and you still want to try it out, there are a number of virtual MIDI keyboard apps out there that will let you use your computer keyboard as a musical input, such as VMPK. Also, if you’d like to further dissect everything that’s going on here, check out the complete prototype on CodePen.

See the Pen WebMIDI Breakout Room Demo by Peter Anglea (@peteranglea) on CodePen.

Conclusion

MIDI.org says that “Web MIDI has the potential to be one of the most disruptive music [technologies] in a long time, maybe as disruptive as MIDI was originally back in 1983.” That’s a tall order and some seriously high praise.

I hope this article and sample app has gotten you excited about the potential that this API has to spur the development of new and exciting kinds of browser-based music applications. In the coming years, hopefully, we’ll start to see more online music notation software, digital audio workstations, audio visualizers, instrument tutorials, and more.

If you want to read more about Web MIDI and its capabilities, I recommend the following:

And for further inspiration, here are some other examples of the Web MIDI API in action:

Smashing Editorial
(rb, ra, hj, il)

Read More:

Getting Started With The Web MIDI API

Submitting Forms Without Reloading The Page: AJAX Implementation In WordPress

If you have ever wanted to send a form without reloading the page, provide a look-ahead search function that prompts the user with suggestions as they type, or auto-save documents, then what you need is AJAX (also known as XHR). A behind-the-scenes request is sent to the server, and returning data to your form. Whenever you see a loader animation after you have made some action on the page, it’s probably an AJAX request being submitted to the server.

Follow this link: 

Submitting Forms Without Reloading The Page: AJAX Implementation In WordPress

Product Awareness Month: Why I’m Writing 30 Blog Posts in 30 Days

alt : https://unbounce.com/photos/30-in-30.mp4https://unbounce.com/photos/30-in-30.mp4

We Have 1.06 Products.

I wrote that statement on a whiteboard at the start of a website brainstorm session.

What does 1.06 products mean?

1.06 sums up my frustration at the adoption rate of our new products. Yup, Unbounce is now more than just a landing page builder. We released two new products, namely “overlays” and “sticky bars”, and we grouped them together under an umbrella term “Convertables”.

The number 1 represents our flagship industry-leading landing page product (100% of our customers have adopted it), and the .06 represents the tragic adoption rate of our new products (6%).

And yes, you’d be correct if you noted that “Convertables” isn’t a real word, but then neither is Unbounce, so we went with it after a notable amount of company-wide polling, and general corporate groupthink. More on that later.

So, how does this scenario result in me writing 30 blog posts about our products?

Rewind to October 5th: I was in a meeting with fellow co-founders Rick, Carl, and Carter, openly expressing my frustration with the adoption numbers, and Carter interrupted me to ask, “Okay, fine, but what are you going to do about it?”.

Then this video happened…

Awesome, right?! Yeah, it is, until the moment I realized it’s been exactly 301 days since I last wrote a blog post (I’ve been focusing on public speaking), making this level of bravado a tad audacious at best. Aaand, yes I realize I was a little intoxicated in the video.

But, I’ve learned over the years, that being a bit ridiculous in my promises is the only way I really know how to get shit done. When I tell everyone that I’m doing something big, the self-imposed peer pressure is what motivates me to make sure I complete my mission.

Enter Product Awareness Month (PAM)

This brings me to our blog. We’ve never written much about our products on the blog, in fact, we’ve actively avoided it to let the content speak for itself as an educational pillar of the community, and to remain non-salesy.

I’ve realized though, that it doesn’t make much business sense to be that overtly humble in all marketing communications. There has to be a way to balance exposing people to your product without it detracting from the experience.

It’s my fault in many ways. When I started our blog back in 2009, I had a mission to be different from our competitors, to not come across as a salesperson, and just to provide value and entertaining content that stood out.

We dominated the realm of conversion content for many years, but in an increasingly competitive SaaS martech space, our content is no longer number one, and it’s time that we change our approach.

Which is why we’re doing a blog takeover for the whole of January.

Our goal is to explore a blog topic we’ve not covered before, but also to expose a transparent window – transparency is one of our six core values at Unbounce – into our journey as a company, as a marketing team, and myself personally, to become better at marketing our new products.

For me, it’s the first time I’ve ever been involved in product marketing, which will make it a fascinating personal journey reinventing myself as a different kind of marketer.

I’m also cutting the number of speaking gigs I do in 2018 in half, because let’s be honest, in this moment, the success of Unbounce can be more rapidly impacted by me staying home than being on the road.

Transparency

Along the way, I’ll be opening up the Unbounce vault to share our core metrics with you. This will include our churn and product adoption metrics, which we hope to be able to lift in a big way throughout this 30-day experiment. There will be data check-ins throughout, with a halfway report, and then a full “Results Show” at the end.

I’ll also be digging into our analytics to see what the engagement and attribution looks like for every one of the 30 blog posts.

Some of the content will revolve around the learnings and experiences of becoming a better product marketer, and the rest will be an exploration of the ways we’re trying to rethink what our products are, what they mean to our customers, and how we can do a better job communicating their benefits (with some case studies and new ways of thinking – I hope).

I say “I hope” because I’m writing this as you read it. That’s what tends to happen when you commit to something as absurd as 30-in-30.

Follow Along << Mid-Post CTA

I encourage you to follow along by subscribing to our weekly update emails at the bottom of the page. I’m really keen to have our community (that’s you) help us explore how to do this properly, and hopefully, we’ll all learn how to do a better job of marketing our products.

This is a screenshot of the subscribe form at the bottom of the post. Thought you should know.

You can also subscribe by clicking here to launch a popup (using the on-click trigger feature) which contains the subscribe form. << product marketing much?

Aaand I’ve configured it so you’ll see an exit popup when you leave this page. Note, that I’m doing this to show the product in a relevant and hopefully useful manner.

Unbounce Product Adoption Metrics

How do we measure adoption at Unbounce? To understand, it helps to explain a little about how we define a customer. In the old days, a customer was any signup, someone who started a 30-day trial. Over time we learned we should be measuring a little deeper into the customer lifecycle, and decided a customer was someone who paid us twice; once after the 30-day trial, and again after sixty days.

In 2017 we modified this further to someone who pays us three times, giving us a much better sense of true churn numbers.

To be considered a customer who has adopted our products, we have an additional set of app usage criteria:

For landing pages adoption means: a customer who has built and published one or more pages, has set up a custom domain, configured an integration with another tool, and has paid us three times.

For “Convertables” (Overlays & Sticky Bars) adoption means: a customer who has built and published a popup or sticky bar, installed our one-line global Javascript on their website, received at least 10 conversions, and has paid us three times.

Full transparency: 6% adoption for a new product sucks.

So what went wrong? Why was adoption so low?

Well, first, and most importantly, product marketing is really hard.

We also made a few (well intended) mistakes, namely…

Mistake #1: We called a popup an overlay.
Mistake #2: We created a fictitious umbrella term “Convertables” for only two child products, and for a few months, only one child product.
Mistake #3: We assumed that people would find and use these two products, hidden behind said umbrella term in the app.
Mistake #4: We assumed that the functional user of our landing page product would be the same person who needs to use popups and sticky bars.

How do we un-f*** this problem?

The first thing we’re doing is removing public-facing mentions of the term “Convertables”. This has excited the marketing team because it’s much easier to market something when you know how to describe it, and a multi-product value prop is much harder than a single-product value prop.

Beyond that, the approach I’m taking is a combination of four primary tenets:

  1. First, is a concept I call “Productizing Our Technology” or POT for short. This is about discovering new and novel ways that our platform can be used, that people either haven’t imagined or simply didn’t know was possible.
  2. Second, is exploring the entire Unbounce ecosystem, from the app, to the website, our content channels, and our community, to see how we could do a better job of exposing the benefits of our products to those who can benefit from them.
  3. Third, is using the Product Awareness Month blog takeover to create interactive demonstrations right here on the blog – the goal of which is to reduce the Time to Value (TTV) by creating more obvious ah-ha moments.
  4. Fourth, understanding who the various target personas and functional users of the different products are, and adjusting our targeting and marketing communications to find and speak to those potentially different users.

In regards to #3 the blog takeover, if you take a look at the top of the screen, you’ll see a header bar like this:

Or this one, if you have scrolled down the page:

If you look at the hierarchy of information from left to right, you see: 1) Who we are: logo, 2) What we do: value prop, 3) How to take action: the three big orange buttons.

This is hugely different to the rest of the blog, which retains the navigation of the whole site (I’ve thought that was incongruent for a long time).

My hope is that the new header bar helps more people know what we do, and how our products can help. I’ll be tracking engagement with the 3 CTAs and comparing these 30 posts against our other blog content in terms of its ability to get people to sign up.

Productizing Our Technology: Landing Pages, Popups, & Sticky Bars

I had my own ah-ha moment when I started imagining all the ways that I could hack/modify/extend the ways the Unbounce conversion platform can be used. We have 3 core pieces of product technology (not including our AI/Machine Learning efforts that will power our technology in the future): landing pages, popups, and sticky bars.

By taking our core tech, combining the available features, with new jQuery scripts, CSS, and some 3rd-party integrations, it’s possible to create a plethora of new “mini-products” that if embraced by the community, might inform future product direction.

Take a look at the spreadsheet below. This is my POT matrix. The complete sheet currently houses over 120 new product ideas.

Productizing Unbounce Technology
(Click image for full-size view)

Across the top (in yellow) are the core products, their features (such as targeting, triggers, display frequency), and the different hacks, data sources, and integrations, that can be combined to produce the new products listed in green in the first column.

Each product is flagged as being in one of three states:

NOW: These products are possible now with our existing feature set.
MVP: These products are possible by adding some simple scripts/CSS to extend the core.
NEW: These products would require a much deeper level of product or website development to make them possible. These are the examples that came from “blue sky” ideation, and are a useful upper anchor for what could be done.

I’ll be explaining these use cases in greater detail as the month progresses, and I’ll be building some of them directly into these blog posts as I write them. << FTR this will involve me reverting to my long-extinct coding background to hack the shit out of the blog to show you what I’m talking about.

Please Follow Along

That’s the intro, that’s what happened, and what we’re going to do to try and fix it. Subscribe to the weekly email updates, join the discussion in the comments, and chat directly with me on Twitter.

There is also a calendar at the bottom of every post that will link to all 30 PMM topics as they roll out.

What’s coming on day 2 of PMM?

Tomorrow’s post is called “50 Creative Ideas Your Marketing Team Can Use to Improve SaaS Product Adoption & Awareness”. It’s based on the results of rapid-fire brainstorms which exposed quick-win tactics all product marketers can use to expose your products in small and simple ways, to build to a critical mass of awareness.

This should be very relevant to anyone in marketing, and doubly so to those working for a SaaS business.

Here’s to kicking off 2018 in a blaze of product marketing glory.

Cheers,
Oli Gardner

p.s. Please jump into the comments below to let me know what products you’re currently trying to take to market.

Original article: 

Product Awareness Month: Why I’m Writing 30 Blog Posts in 30 Days

4 Ways to SEO Proof Your Influencer Marketing Strategy

influencer marketing and SEO

A few years ago, there was a joke that was going around on the internet. It goes something like this: “What is the best place to hide evidence of your wrongdoings? Page 2 of Google Search results!” While the joke itself may have been created in good humor, it does imply something extremely important. It’s crucial for businesses to compete for higher visibility in search results. Consumers are more dependent on the internet than any other medium, making search ranking crucial for businesses to attract potential customers. More often than not, people only look at the first page of search…

The post 4 Ways to SEO Proof Your Influencer Marketing Strategy appeared first on The Daily Egg.

View original post here – 

4 Ways to SEO Proof Your Influencer Marketing Strategy

5 Real-Life Popup A/B Tests That Will Help Boost Your Conversion Rate (Based on Actual Case Studies)

5 tests

Do you think your popups are converting at their highest potential? I’m guessing that unless you’ve been testing them to figure out what makes your audience tick, then probably not. Luckily, you can figure that out by, well,..testing of course :). And if you’re wondering what to assess first, I have some suggestions. As Head of Customer Success at WisePops, an intelligent popup builder, I’ve reviewed hundreds of A/B tests. Based on this experience, I’ll share 5 popup A/B tests which can make a difference for your future and existing campaigns (spoiler: one of our customers almost tripled the number…

The post 5 Real-Life Popup A/B Tests That Will Help Boost Your Conversion Rate (Based on Actual Case Studies) appeared first on The Daily Egg.

More:

5 Real-Life Popup A/B Tests That Will Help Boost Your Conversion Rate (Based on Actual Case Studies)

Thumbnail

The iOS 10.3 Security Alert Is Killing App Store Downloads: Here’s How To Fix It

In its move to patch a security hole as part of the iOS 10.3 release, Apple has introduced (yet) another redirection mechanism that developers must handle when attempting to implement mobile deep-link routing (i.e. the mechanism to route users to a specific page inside a mobile app, rather than the App Store or app home page).
This redirection instance has introduced additional friction to the app download and reopening process, and data shows that it has decreased conversion rates on iOS 10.

Visit site:

The iOS 10.3 Security Alert Is Killing App Store Downloads: Here’s How To Fix It

Google Analytics Is Lying to You. Here Are 7 Ways to Force It to Tell the Truth

trust the lies

Being data-driven is good. Unless of course, all that data driving your decisions is wrong. Google Analytics does a lot of good. It might look fine and seem correct when Goals are firing properly. But just because it’s working, doesn’t mean it’s accurate. Most analytics programs have to make a few implicit assumptions. They’re taking leaps of faith in some cases. And unless you know where to look, you could fall victim to these little white lies. Here are seven of the most common (along with how to fix them). Lie #1. Growing ‘Dark Traffic’ ‘Dark Traffic’ sounds ominous. And…

The post Google Analytics Is Lying to You. Here Are 7 Ways to Force It to Tell the Truth appeared first on The Daily Egg.

Continue reading: 

Google Analytics Is Lying to You. Here Are 7 Ways to Force It to Tell the Truth

Just another WordPress site