4 SIMPLE STEPS TO MEASURE MARKETING RESULTS

Marketing doesn’t have to be unpredictable. It’s no secret customers base their buying decisions on their experiences. And since online experiences are a huge part of that equation, it’s more important than ever to invest in analytics – and measure the real impact on your bottom line.

4 Steps to Measure Your Marketing Efforts 

  1. Establish a baseline.
  2. Set goals linked to specific objectives.
  3. Define your KPI and tools needed to measure them.
  4. Analyze the results.

1. Establish a baseline.
Before setting goals, review results of your past marketing efforts. It will help you see any deficiencies in your analytics capabilities and think about long-term objectives. Ask the tough questions. Instead of just looking at which marketing channels are the most cost effective, drill deeper into which channels have led to more conversions and the amount of sales directly resulting from marketing. You can also look at:

Traffic Sources

  • How are different traffic sources engaging with your website?
  • Where is the traffic coming from?

Conversion Contributors

  • Which keywords drove traffic to your site and which ones led to conversions?
  • What channels have been the best performers?

Sales Nurturing

  • How long is the sales cycle?
  • What is the current customer online experience?
  • Who are the primary and secondary personas?

Logic

  • Is my sales team getting qualified leads?
  • Are my marketing efforts in line with our priorities?
  • Is our share of voice too thin?

Once you have a solid information base, you can set goals for your future marketing efforts, decide what you want to measure, and what type of analysis will be done.

2. Setting specific goals and objectives.
What does success look like? The answer lies within your specific goals. Think about milestones that occur before a lead becomes a sale and before a visitor becomes a lead. Some examples may include:

  • Form completions
  • PDF downloads
  • Generating calls
  • Webinar sign-ups
  • Engagement with content
  • Multiple pages viewed by each visitor

Got your list? Now you optimize campaigns and custom experiences around these objectives.

3. Define KPI and invest in tools to measure them.
“Conversions” are the typical term used to define the desired end result, but they aren’t enough. To define the right key performance indicators (KPI), you also want to identify touchpoints along the way. Decide whom you want to drop off (and when) and whom you want to nurture along, and then make sure you have the right tools to measure them. With the right technology, you’ll see what actions are being taken, when, in what order, and how long it took from beginning to end. Map your user experience from content to final destination, and identify any inefficiencies that you can eliminate before launching your campaign.

You need the right tools to collect the right data. Test your design by asking, “Are we measuring what we set out to measure?” Consider the value in both quantitative (volume of clicks, calls, open rates) and qualitative (types of leads, social sentiment, behavioral motivators) results.

4. Analyze the results. 
Partner with someone who specializes in marketing analytics to analyze your campaign. The analyst can shed insight on the true value of the results, not just hand you a CTR report. Even if your goal was awareness, an impression report is meaningless unless you know something about the people you reached. Marketing analysis reveals if you are on track to reach your goals, make adjustments if needed, answer tough questions and explain successes and failures. Specific KPIs will give you what you need to know, such as cost-per-lead, lead-to-close ratios, customer retention rate, and customer value. But additional information can also be shared such as how many new people visited your website, why they came, where they came from, what they did while they were there, and the driving force conversions and possible answers for non-conversions.

By following these simple four steps, you can remove the unknowns and take control of your online marketing success.

Posted in Technology | Tagged , , , , , , , | Leave a comment

THE BEGINNER’S GUIDE TO SECURITY REVIEW FOR PLATFORM SETUP

Proper security setup and configuration is extremely important. If you pick the wrong tools, wrong configuration or wrong integration, you could be setting yourself up for failure.

One of my favorite sayings as a football coach is, “The game is talking to you. Are you listening?” With football, the way the opponent lines up will give you specific cues about what they intend to do. Your platform is talking to you in the same way. It’s calling out for integrations over here, simplifications over there or consolidations in the server room (if you still have one).

When listening to your platform, there are consistent areas to examine to define your key priorities and direction, as well as ensure you have a strong platform that’s manageable and scalable.

Intersection of 3 Key Entities 
First, we need to ask questions about the intersection of:

  1. Users
  2. Data
  3. Systems

Then you can define the applications needed to help your organization work efficiently and effectively.

1. Users
Users must be segmented at many different levels for each interaction. There are internal users vs. external users and many different roles, groups and profiles within those two segments. There are two basic terms to keep separate when defining how these users will access the data and systems:

  • Authentication: The process of determining whether someone or something is, in fact, who or what it is declared to be.
  • Authorization: The process of determining which permissions a person or system is supposed to have.

Talking about authentication could lead you into conversations about active directory, single sign-on (SSO) or user provisioning. Talking about authorization could lead you into questions about which network drive a given user can access or what table in a database a user can read. Keeping those two terms separate can help clarify the tools necessary to succeed in each area.

2. Data
Data is the lifeblood of an organization. It defines what’s been done and what still needs to be done. Users do not access the data until they have been authenticated and authorized. But once they can access that data, we need to help them be very efficient with processing it. When we talk about data, there are again two important terms to discuss:

  • Master Data Management (MDM) – A technology-enabled discipline in which business and IT work together to ensure the uniformity, accuracy, stewardship, consistency and accountability of the enterprise’s shared master data assets (Gartner IT Glossary).
  • Data Deduplication (aka de-dupe) – The process to eliminating duplicate or redundant information. While this can be termed a part of MDM, the tool and processes involved can also happen at the application or database level.

Asking which system is the “source of truth” for a given piece of data will help us define the process for keeping that data clean and in sync with all necessary systems. MDM and de-dupe do not mean that one piece of data like ‘First Name’ belongs in only one database. But talking about these concepts allows us to:

  • Build applications faster with less cost
  • Gain better reporting on the back-end
  • Better manage and consolidate data

Many applications need to access the same data, but one of the keys is designing them so that integration costs to get to that source data are minimized.

3. Systems
Systems are essentially the hardware and software used to run the business. Back to the principles of coaching football, it’s better to run five plays well than run 15 plays poorly. The quicker we can figure out the tools that define your system, the quicker we can build and train teams to implement and extend those systems. That isn’t to say that we can’t add new tools to the toolbox over time, but the decision must be made in light of how our users and data are affected.

To sum it all up? Defining your system design and architecture meetings around users, data and systems will help drive the right questions. And then you can find the right answers to drive priorities today and tomorrow. These priorities will be the enhancements to your applications and infrastructure that support your entire enterprise.

Posted in Technology | Tagged , , | Leave a comment

YOUR CUSTOMER EXPERIENCES = YOUR BRAND

This March, the annual Adobe Summit wrapped up in Salt Lake City. If you asked any of the nearly 7,000 attendees, they would probably sum the conference up in one sentence: Marketing is your product, and customer experience is your brand.

Branding isn’t only about logo specifications, fonts and color pallets. Are those elements important for consistency? Absolutely. But what’s more important? Creating a seamless, personalized experience for your customers across multiple touchpoints and channels.

2 Reasons Why It Matters

  1. The new digital reality. Today most customer experiences are happening online, and with the explosion of social media, every interaction is a reflection of your brand.
  2. High customer expectations. Customers expect instant access to whatever they’re looking for – using whatever device they choose. They also expect extremely personalized recommendations and services, since they have more choices than ever before.

Of course, mastering the customer experience is no easy task. It’s often overwhelming to bring the customer journey together with complex data and technology – and then make sense of it all. But marketers are embracing the new reality of their role. According to the recent study The Retailer’s Imperative: A Strategic Approach to Customer Experience, 80% of marketers agree with the statement “Our customer experience is our brand.”

In fact, most marketers are beginning to recognize that it’s not about blasting out product features. From creating smart content strategy to nurturing relationships after purchases, it’s about focusing on the whole experience – from social conversations to service and everything in between.

It’s a long journey. And the message to marketers is clear: be ready to go the distance.

Posted in Technology | Tagged , , | Leave a comment

FOCUS ON BRANDED APPS FADES, SHIFTS TOWARD MOBILE PARTNERSHIPS

Apps, apps, apps! Everybody wants an app. What if I were to say, “You don’t need an app!”? Would you think I was crazy? The reason is simple. What you really need is a mobile strategy. This strategy may very well involve your own branded app, but it may not.

There is a shift in today’s mobile ecosystem to use what is already built to reach your customers. It is possible to use these services to serve your customers better, faster and cheaper. After all, it doesn’t make a whole lot of sense to spend your time reinventing the wheel when the wheel is already built and ready for you to use.

Key Example: Google Maps

What’s a prime example? Google Maps. With Google Maps, you can target a user in the context of their location by building up your brand in the built-in reviews. Plus, you can make sure that your brand is well represented in the content associated with that user’s query. The same could be said with other apps or services like Yelp, Facebook, Twitter, WeChat, etc. Your users are already using all of these apps and services on their own. Why not borrow those moments through that service? It is also possible to utilize SMS/MMS messaging to your user to provide contextual moments to drive your brand image.

There are countless ways for you to reach your customers on mobile outside of an app. The key? Determine what these ways are and whether they accomplish the marketing goals you are trying to achieve. If you have a specific use case that cannot be accomplished by borrowing mobile moments from other services, then it might be time to look into developing an app and determining the app strategy that will revolve around it.

But first? Think about the big picture. It can bring bigger – and better – results.

Posted in Technology | Tagged , , , | Leave a comment

SUNDOG SPOTLIGHT: JENA

SUNDOG SPOTLIGHT: JENA

This lady sure knows how to bring energy to her team and the rest of 5th floor! But when she’s not in design mode, she’s a national Ground Water Guardian for an organization that stresses on water conservation. Meet Jena LaPlante:

Jena LaPlante

Position at Sundog:
As a designer, there is nothing better than working with some talented and cool people while pursuing my passion.

Work experience: 
I have been a designer for 12 years, starting my career at my local photography studio in high school. While in college at MSUM, I worked for a local publisher before moving to Minneapolis and joining a variety of agencies. I finished my Minneapolis agency life at Spyglass.

First impression of Sundog:
This place is big! I’m used to 10-20 man shops. Everyone has been very helpful with navigating me in the right direction.

What brought you to Fargo: 
While I always knew I’d come back to the area, I didn’t think we’d be back so soon. My husband, however, was offered a position to open a surgery center in Fargo. We both went to college here, so we felt like it was an easy transition.

Best spot inside Sundog’s space:
The Whitespace is turning into a favorite spot for us creatives.

Best ways to spend the weekend:
In the winter, I hammer down with a glass of wine and stay inside – ain’t nobody got time for the cold! In the summer, you’ll find me at the lake with the dogs.

Things that make you go “hmmm”: 
Bad drivers

Go-to beverage:
Coors Light

Who’s Your Celebrity Crush:
Matt Bomer (I wish he wasn’t gay, because I’d really like to marry him!)

Tell us about your family:
I got married in September and we just adopted our 5-year-old, four-legged child, Jette. So in our home it’s Jena, Jed and Jette.

Guilty pleasure:
Party planning

Thing you can’t live without:
Pinterest – I’m a junkie

Favorite TV show:
Revenge

Dream vacation spot:
Egypt

Most recent purchase:
A “no more pull” dog collar and leash

What you’re doing when you’re not at the office:
Remodeling my house

Weirdest thing at your desk:
No one seems to know what my Wacom Table is. It’s a “designer’s mouse.” Come try to navigate with it – it’s entertaining to watch someone else use it.

Secret power you wish you had:
Mind reading

What advice do you have for students looking to get in the business:
If you’re looking into agency life, remember that saying “yes” all the time doesn’t do your client any favors. Be able to explain why you designed something with a real strategy (not just because it looks pretty) and remember that your designs are not a reflection of your personal style. Sometimes what’s best for the industry/consumer doesn’t reflect you.

Thing that makes you cringe:
Bad design – bad fonts, the rainbow and the whole kitchen sink on the page

And, because sharing is caring, you’ll leave our readers with:
Designers aren’t all crazy; I am, but we all aren’t.

Posted in Technology | Tagged , | Leave a comment

CALL THE INFUSIONSOFT API FROM SALESFORCE – PART II

In the last blog post I described the Infusionsoft API and how to get an access token.  In this blog post I will show one example on how to use that access token to make an Infusionsoft API call.

There are a wide variety of API calls that can be made.  One cool feature on the Infusionsoft site is this page which allows you to test out their API without having to write any code.

The example API call that I would like to show you involves pulling back the fields from a report.  Here is an example report URL from Infusionsoft:
https://vm921.infusionsoft.com/Reports/searchTemplate.jsp?filterId=999&reportClass=ClassName

where 999 is the user who created this report and ClassName is the name of this report.  Note that sometimes the filterId is 0, but that means everybody can run it.  When you call the API as I describe below send a 1 instead of a 0.

We want to use the ‘SearchService’ options within the API.  The getAllReportColumns() call will retrieve all of the columns available in a report.  That could be useful in creating some generic reporting routines.  The getSavedSearchResultsAllFields() call will return all fields in the report.  That call returned too much data for me so I decided to use the getSavedSearchResults() call so I could limit the number of fields returned.

One important item to remember when calling reports is that the report parameters cannot be changed when calling the API.  So we cannot dynamically change a report to bring back payments from the last 10 days instead of the last 30 days.  Keep that limitation in mind when designing your integration.  Also note that in the getSavedSearchResults() api call that a pageNumber must be specified.  This start with 0 for the first 1000 records and then 1 will be the next 1000 and so on.  So you need to be able to design your calls so that you keep making calls by incrementing this pageNumber parameter until you do not get anymore rows back.

So finally onto the code to make our call:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public static string callWebCart(string accessToken){
        
       string xmlBody ='<?xml version="1.0" encoding="UTF-8"?>' +
            '<methodCall>' +
                '<methodName>SearchService.getSavedSearchResults</methodName>' +
                    '<params>' +
                        '<param><value><string>myapiKey</string></value></param>' + //apiKey
                        '<param><value><int>999</int></value></param>' + //Saved Search ID
                        '<param><value><int>1</int></value></param>' + //userID
                        '<param><value><int>0</int></value></param>' + //page number, start at 0 for first 1000 records
                        '<param><value><array><data>' +
                            '<value><string>Id</string></value>' + //Fields for report
                            '<value><string>ContactId</string></value>' +
                        '</data></array></value></param>' +
                    '</params>' +
                '</methodCall>';
        
        Http h = new Http();
        HttpRequest req = new HttpRequest();
        req.setHeader('Content-Type','application/xml');
        req.setHeader('Content-Type','text/xml;charset=UTF-8');
        req.setHeader('Content-Length',string.valueOf(xmlBody.length()));    
        req.setEndpoint('https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=' + accessToken);
        req.setMethod('POST');
    req.setTimeout(60000);
    req.setBody(xmlBody);
          
    string bodyValue ='';
    if(test.isRunningTest()){
      bodyValue = getExamplePaymentXMLResult();
    }else{
      HttpResponse res = h.send(req);
      bodyValue = res.getBody();
    }
    if((bodyValue =='<h1>Developer Inactive</h1>' || bodyValue == '<h1>Not Authorized</h1>')){
       //Get new Access Token using the refresh token and call the api again
    }
    return bodyValue;
}

The fields to pull back are placed in the XML in a repeated fashion after the page number section.  It takes a bit of getting used to in that the order of the parameters drives what they are.  We do not get to set a ‘pageNumber’ xml node to define the page number.  We have to know that the page number goes into the 4th piece of data after the UserID.

Once you get the bodyValue back you can use various XML parsing methods to get out your data and then save it into Salesforce per your requirements.

Salesforce provides so many integration points and options.  Please get in touch with me if you have any questions about how to make Salesforce integrate with other related data within your organization.

Posted in Technology | Tagged , , , | Leave a comment

CALL THE INFUSIONSOFT API FROM SALESFORCE

Infusionsoft leverages OAuth2 to provide authentication to the API.  The documentation on this page will get you started with descriptions about their API.  You can also test out many of their APIs here to see how they can work for you.

With OAuth2 one of the first steps will be to redirect to an authorization endpoint to allow the user to authenticate.  Once that is complete the returnback URL will be called, which will include the authorization code included as the ‘code’ query string parameter on the URL.  Once that is complete and we have the authorization code we will be able to make the call to request an access token.  Here is what that code looks like in Salesforce Apex.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void retrieveInfusionsoftAccessToken(string authorizationCode){
    Http h = new Http();
        HttpRequest req = new HttpRequest();
        req.setEndpoint('https://api.infusionsoft.com/token');
        string bodyRequest ='';
        string bodyResponse ='';
        bodyRequest +='client_id=' + EncodingUtil.urlEncode('myClientID', 'UTF-8');
        bodyRequest +='&client_secret=' + EncodingUtil.urlEncode('myClientSecret', 'UTF-8');
        bodyRequest +='&code=' + EncodingUtil.urlEncode('myAuthorizationCode', 'UTF-8');      
        bodyRequest +='&redirect_uri=' + EncodingUtil.urlEncode('myRedirectURL', 'UTF-8');
        bodyRequest +='&grant_type=authorization_code';
        req.setBody(bodyRequest);      
        req.setHeader('Content-length', string.ValueOf(bodyRequest.length())); 
        req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.setMethod('POST');
        req.setTimeout(10000);
        if(test.isRunningTest()){
          if(doAccessPointError){ //Instance variable to allow testing of error conditions
            bodyResponse ='{"error":"failure"}';
             }else{
            bodyResponse ='{"access_token":"9uzhtptnfvgq2j96b3m87z6z","token_type":"bearer","expires_in":28800,"refresh_token":"g4xcllhk6qbgngnxve78cj6t","scope":"full|ji877.infusionsoft.com"}';
             }       
     }else{
          HttpResponse res = h.send(req);
          bodyResponse = res.getBody();
     }
                
    map<string, string> jsonValues = new map<string, string>();    
    //This routine will parse the JSON into a map
    jsonValues = parseJSONToMap(bodyResponse);         
}

The data being posted to Infusionsoft for this ‘token’ method is the same as most other OAuth2 implementations.  We need the client_id, client_secret, code, redirect_uri and grant_type.

Within the returned JSON will be the access token and the refresh token.  These should be saved into a custom object or custom setting for later use.  At some point the life span of the access token will run out and then the refresh token will be needed to make a call to get a new access token.

In my next blog post I will show one call to the Infusionsoft API using the retrieved access token.

Please contact us at Sundog if you need help with integration projects that leverage OAuth2.

 

Posted in Technology | Tagged , , , | Leave a comment

GETTING AN ATTRIBUTE VALUE FROM XML – SALESFORCE

Almost a couple of years ago I posted this blog post about methods to parse XML:Parsing XML in Salesforce APEX

These methods work great when the XML is not very large and when the XML does not contain attributes.  If the XML is too large, then the split routines can produce errors like ‘Regex is too complicated’, which basically means that the string is too long to be parsed effectively.

So what if your XML does contain attributes?  It might look like this:

1
<Person age="42"><FirstName>Terry</FirstName><LastName>Luschen</LastName></Person>

So the ‘age’ is our attribute that we want to get out.  I would rather have the XML contain a section that looks like the following, but that is not always my choice.

1
<Person><Age>42</Age><FirstName>Terry</FirstName><LastName>Luschen</LastName></Person>

So how are we to get that “42” value out?  I have found the easiest way is to call the following routine that leverages the Apex XMLStreamReader class.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static string getAttributeInXML(string xmlToParse, string nodeName, string attributeName) {
        if(xmlToParse.startsWith('<?xml version="1.0" encoding="UTF-8"?>') == false){
            xmlToParse ='<?xml version="1.0" encoding="UTF-8"?><OUTER_TAG>' + xmlToParse + '</OUTER_TAG>';
        }
        XmlStreamReader reader = new XmlStreamReader(xmlToParse);
        reader.setCoalescing(true);
        try {
            while(reader.hasNext()) {          
                if (reader.getEventType() == XmlTag.START_ELEMENT) {
                    if(reader.getLocalName() == nodeName){ //Check if the node name matches                    
                        for (integer i=0; i < reader.getAttributeCount(); i++) {
                            if(reader.getAttributeLocalName(i) == attributeName){  //Check if this attribute matches
                                return reader.getAttributeValueAt(i);
                            }                      
                        }      
                    }                              
                    reader.next();                 
                } else if (reader.getEventType() == XmlTag.END_ELEMENT) {  
                    reader.next();
                } else if (reader.getEventType() == XmlTag.CHARACTERS) {
                    reader.next();
                }else{
                    reader.next();
                }  
            }
        } catch(Exception e) { // ParseError if we get a truncated response, allow it
            system.debug(e);
        }
        return'';
}  
//Call this routine like this and it should return 42
getAttributeInXML('<Person age="42"><FirstName>Terry</FirstName><LastName>Luschen</LastName></Person>', 'Person', 'age');

Notice that in the first lines of the routine that I put the xml version tags around the xml so that the XMLStreamReader is able to load it.

Typically I like to use this routine with small chunks of XML so that the while loop does not have to parse through a ton of XML to get to the desired attribute.

Good luck with your next XML integration.

Please let us know at Sundog if you an integration project!  We will get your data where it needs to go!

Posted in Technology | Tagged , , , | Leave a comment

UPSERTS WITH GENERIC SOBJECTS – SALESFORCE

Have you ever run into this error?  “Upsert with a field specification requires a concrete SObject type”

Basically it is saying that you cannot declare a list of type sObject and then try to use the upsert command against that list.  That limitation can make coding generic routines difficult which do not know the specific object type up front.  For example, I might be building a table driven integration layer where the user will determine, by updating a custom field or custom setting, what the name of the destination custom object will be.  With this approach I will need to use the generic sObject data type, but that will stop me from using the upsert database command.

Bummer!  What to do?

Here is a link that describes this problem very clearly and jangiz at the bottom describes the correct work-around approach.

Here is some code to implement that work-around that jangiz described:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
list<sObject> sObjList = new list<sObject>();
//This routine would get the rows to update/insert from some business logic
sObjList = myClass.getObjectRowsToUpdate();
set<string> newExtIDSet = new set<string>();
string myExternalIDField ='myExternalID__c';
//Loop through and build a set of External IDs that should be used for a query
for(sObject sObjItem : sObjList){
     tempStr = string.ValueOf(sObjItem.get(myExternalIDField));
     if(string.isBlank(tempStr) == false){
    newExtIDSet.add(tempStr);
     }
}
list<sObject> sObjExistingList = new list<sObject>();
//Now use those external IDs for matching
string sQuery ='Select ID, ' + myExternalIDField +
     ' From myUpdateObj__c' +
     ' Where ' + myExternalIDField + ' IN :newExtIDSet';
sObjExistingList = database.query(sQuery);
//Now loop through the matches and build a map of that external ID to the actual Salesforce ID
map<string, string> extIDToIDMap = new map<string, string>();
for(sObject sObjItem : sObjExistingList){
     extIDToIDMap.put(string.valueOf(sObjItem.get(myExternalIDField)), sObjItem.ID);
}
//Now loop through the items to be updated/inserted and assign the Salesforce IDs to that items that matches by the External ID
list<sObject> sObjInsertList = new list<sObject>();
list<sObject> sObjUpdateList = new list<sObject>();
for(sObject sObjItem : sObjList){
     if(extIDToIDMap.containsKey(string.ValueOf(sObjItem.get(myExternalIDField)))){
        sObjItem.ID = extIDToIDMap.get(string.ValueOf(sObjItem.get(myExternalIDField)));
        sObjUpdateList.add(sObjItem);
     }else{
        sObjInsertList.add(sObjItem);
     }
}
if(sObjUpdateList.size() > 0){
     update sObjUpdateList;
}
if(sObjInsertList.size() > 0){
     insert sObjInsertList;
}

Wow, what a bunch of work when I really just wanted to write…
upsert sObjList myExternalIDField

But as long as there is a manageable work-around I can at least move forward!

Good luck with your Apex today!

Posted in Technology | Tagged , , , | Leave a comment

IS YOUR CONTENT UNIQUE?

We previously reviewed the importance of developing and documenting your content strategy. With a core strategy statement in place, your content becomes more intentional and aligned.

At the same time, this foundation doesn’t necessarily mean your content is distinctive or unique. Too often, organizations clutter their channels with content that offers the same-old guidance, tips, tools and topics. They fail to capture their brand’s unique value proposition, voice and niche.

Copyblogger challenges us to think about what our organizations bring to the table:

“How do you fit into the market? What do you bring to the table that no one else can? What makes you unique?”

Similarly, in a recent Whiteboard Friday, Rand Fishkin of Moz describes what “unique value” in content really means:

“I mean unique information … even if it were written about thousands of different ways, I couldn’t find it anywhere else on the web. You want your visitor to have experience of ‘Wow, without this site I never would have found the answers I sought.’ It’s not that, ‘Oh, this sentence is unique to all the other sentences that have been written about this topic.’ It’s, ‘Ah-ha this information was never available until now.’”

And a Content Marketing Institute post describes the value of content “shiny objects”:

“the content must be newsworthy, such as an original piece of research, the overarching guide to whatever topic you want to own in your space, or a unique perspective on a topic that represents a fresh approach. In other words, the content provides real information that people find valuable. I mean really valuable.”

Your organization is built around a mission or customer need that’s uniquely yours. It can’t be easily duplicated or imitated. Similarly, we must ensure our content reflects that one-of-a-kind viewpoint.

Posted in Technology | Tagged | Leave a comment