Archive for March, 2005
Tuesday, March 15th, 2005
There are three articles dealing with redirects to handle redirecting one file at a time, redirecting one directory at a time, and redirecting multiple pages easily.
If you are going to move a page you will likely want to redirect visitors from the old page to the new in such a method that the search engines don’t get confused. Some of the ways they can get confused include:
- Bringing up two copies of the same page. This is likely to trip a duplicate content penalty.
- Using a temporary redirect. This means ‘the page has moved but will be back shortly - don’t update your index’.
A 301 permanent redirect is the redirection method recommended by the major search engines. Using a 301 redirect you are in effect telling the search engines the page has moved and to update their index. It also has the nice side benefit of redirecting the benefit of inbound links to the new page.
Detailed below is how to use a custom 404 redirect to handle moving pages. A 404 error is produced when the server can not find the file requested by a visitor. This is useful if you can’t use the normal 301 redirect methods, such as when you move CMS systems, the whole of your site’s file layout changes,etc. I have used these techniques when switching from static .htm pages to dynamic .asp pages which necessitated changing all filenames. You can also use this method to make the redirects database driven.
These 404 based redirection techniques rely on programming. When set up you will need to check that the server has overridden the 404 error code with a 301 code using a header checking tool (there are plenty available on the net).
IIS 404 Redirect
Using the IIS MMC as follows:
- Right click on the website or directory that you want the 404 to apply to.
- Click ‘Properties’.
- Click on ‘Custom Errors’
- Scroll down to 404 and highlight. Click the ‘Edit’ button.
- In the drop down, select URL (this is important - doesn’t work otherwise). Then enter a URL on your site to use for the programming.
- Click ‘OK’ to save this change.
On the custom 404 page itself you can use vbscript or any other programming language to read the server variables to decide what page to display, or where to redirect the user.
Apache 404 Redirect
Create a file called .htaccess in your root directory and add the following line:
ErrorDocument 404 /errors/404.php
On the custom 404 page itself you can use PHP or any other programming language to read the server variables to decide what page to display, or where to redirect the user.
Related Articles
Search Engine Friendly Redirect - Directory Level
Search Engine Friendly Redirect - Page Level
Search Engine Friendly Redirect - Custom 404
Posted in Search Engine Optimization | No Comments »
Tuesday, March 15th, 2005
There are three articles dealing with redirects to handle redirecing one file at a time, redirecting one directory at a time, and redirecting multiple pages easily.
If you are going to move a page you will likely want to redirect visitors to the old page to the new in such a methd that the search engines don’t get confused. Some of the ways they can get confused include:
- Bringing up two copies of the same page. This is likely to trip a duplicate content penalty.
- Using a temporary redirect. This means ‘the page has moved but will be back shortly - don’t update your index’.
A 301 permanent redirect is the redirection method recommended by the major search engines. Using a 301 redirect you are in effect telling the search engines the page has moved and to update their index. It also has the nice side benefit of redirecting the benefit of inbound links to the new page.
Implementing a 301 permanent redirect is different depending on the operating system you are using on your server:
IIS Redirect
- In internet services manager, right click on /old-directory
- Select the radio titled “a redirection to a URL”.
- Enter the redirection page.
- Check “The exact url entered above” and the “A permanent redirection for this resource”
- Click on ‘Apply’
Apache Redirect
Create a file called .htaccess in your root directory and add the following line:
Redirect 301 /old-directory/ http://www.mywebsite.com/new-directory/
Related Articles
Search Engine Friendly Redirect - Directory Level
Search Engine Friendly Redirect - Page Level
Search Engine Friendly Redirect - Custom 404
Posted in Search Engine Optimization | No Comments »
Tuesday, March 15th, 2005
There are three articles dealing with redirects to handle redirecing one file at a time, redirecting one directory at a time, and redirecting multiple pages easily.
If you are going to move a page you will likely want to redirect visitors to the old page to the new in such a methd that the search engines don’t get confused. Some of the ways they can get confused include:
- Bringing up two copies of the same page. This is likely to trip a duplicate content penalty.
- Using a temporary redirect. This means ‘the page has moved but will be back shortly - don’t update your index’.
A 301 permanent redirect is the redirection method recommended by the major search engines. Using a 301 redirect you are in effect telling the search engines the page has moved and to update their index. It also has the nice side benefit of redirecting the benefit of inbound links to the new page.
Implementing a 301 permanent redirect is different depending on the operating system and/or programming language you are using on your server:
IIS Redirect
- In internet services manager, right click on /old-file.htm
- Select the radio titled “a redirection to a URL”.
- Enter the redirection page.
- Check “The exact url entered above” and the “A permanent redirection for this resource”
- Click on ‘Apply’
Apache Redirect
Create a file called .htaccess in your root directory and add the following line:
Redirect 301 /old-file.htm http://www.mywebsite.com/new-file.htm
ColdFusion Redirect
Edit the file /old-file.htm and put the following code:
<cfheader statuscode=”301″ statustext=”Moved permanently”>
<cfheader name=”Location” value=”http://www.mywebsite.com/new-file.htm”>
PHP Redirect
Edit the file /old-file.htm and put the following code:
<?php
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.mywebsite.com/new-file.htm” );
?>
ASP Redirect
Edit the file /old-file.htm and put the following code:
<%@ Language=VBScript %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”, ” http://www.mywebsite.com/new-file.htm”
%>
ASP .NET Redirect
Edit the file /old-file.htm and put the following code:
<script runat=”server”>
private void Page_Load(object sender, System.EventArgs e) {
Response.Status = “301 Moved Permanently”;
Response.AddHeader(”Location”,”http://www.mywebsite.com/new-file.htm”);
}
</script>
HTML Redirect
Edit the file /old-file.htm and put the following code:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<html>
<head>
<title>Your Page Title</title>
<meta http-equiv=”REFRESH” content=”0;url=http://www.mywebsite.com/new-file.htm”>
</HEAD>
<BODY>Optional page text here.
</BODY>
</HTML>
Related Articles
Search Engine Friendly Redirect - Directory Level
Search Engine Friendly Redirect - Page Level
Search Engine Friendly Redirect - Custom 404
Posted in Search Engine Optimization | No Comments »
Tuesday, March 15th, 2005
by Karon Thackston © 2005, All Rights Reserved
http://www.copywritingcourse.com/keyword
“We don’t have any competition. We’re truly a one-of-a-kind company.” I’ve heard that line from clients for years. I wish it were true, but it’s simply not. In fact, it wouldn’t matter if you held a monopoly on your particular product or service; you’d still have competition. How? Because your competition doesn’t come from a singular source.
There may be no other businesses that sell the product or service you sell, but you still have competition. Once that’s understood, you have a greater advantage when it comes to copywriting. You can recognize the other options your customers have before them and can position yourself as the only logical choice.
Know Who Your Competition Is
Competition comes from a variety of sources. Yes, there are those who sell the same things you sell, but competition comes in other forms, too.
The Same But Different
Charitable organizations are a good example of “same but different.” Your group may be the only one raising funds to save the purple-spotted toad of northern Antarctica, but that doesn’t mean you’ll receive a flood of contributions from everyone you call. Why? Because there are a million and a half other charitable organizations out there all vying for the same money from the same people.
None of these other groups is trying to raise funds to save the purple-spotted toad of northern Antarctica, but they are trying to get individuals to donate to their causes. That makes them all your competition.
How do you get around this problem? Assuming your traffic-generating efforts or your mailing list is highly targeted, you’ll want to make a strong case for this little toad. In your copy, let the readers know why the purple-spotted toad is important to the environment (he’s the only toad in existence that carries antibodies that can cure cancer). Tell them why the world would be a much sadder place without our bouncing little friend. (In addition to being the only purple toad in the world, this guy is the only food the frosty wilder beast will eat, so he’s vital to the food chain.)
Just like with any other type of copywriting, list the benefits of the purple-spotted toad. Why is he important to nature; how will the ecology suffer with his demise, and what will happen to the rest of Antarctica if he becomes extinct? All of these are vital to convincing your audience that they should favor you with their contributions instead of some other organization.
Everyone in the Search Results
Go to your favorite search engine and type in “copywriting course” (without the quotes). What do you see? There are a lot of options listed on the search results page. Are all these products the same? By all means, no!
Some are live workshops; others are e-courses; some focus strictly on one type of copywriting leaving all others by the wayside; some are correspondence courses, while others are downloadable. But because they all appear in response to the query “copywriting course,” they all have the potential to take sales away. Even if your site falls into the coveted #1 position, the others on the page could potentially grab some of your sales.
So, how do you get surfers to click on your site’s listing? Your title and description have to be first-rate.
If your copywriting course has a specialty (sales letters, search engines, catalogs, etc.), say so. Choose the most powerful benefit and a way to set yourself apart (your USP - Unique Selling Proposition) and use those in the tags for your search results along with your keyphrases. Simply having keywords in your title and description might get you ranked with the engine, but it sure won’t entice anybody to click to your site.
Other Options
There are options and substitutes for practically everything in the world. If people don’t want to pay for a computer and Internet access so they can send email, they can write letters or call their friends and family. If customers decide the cost of groceries is out of control, they can plant a garden and eat a vegetarian diet. There are even alternatives to cars: taking a cab (as most do in New York), bicycling (very popular in London) or walking (great exercise). All of these alternatives can be competition for you.
To overcome the pull of other options, when you write copy, be sure to emphasize why those other options really aren’t viable. The sheer act of writing letters takes time in and of itself. Then you have to mail the letter and wait. If the person wants to respond, he has to get motivated enough to sit down and write a reply and mail it. Then you wait again. The phone? Yes, people could use the phone to talk, like they always have, but what about when you want to show something to the person you’re talking with? A picture of your new grandchild or your new car can’t be shown over the phone. You get the idea.
Drop the egotistical viewpoint that you have no competition and take a good, hard look around. Once you’ve realized that there is always an alternative to buying what you offer, you’ll be in a better mindset to write copy that outlines why yours is the only option the prospect should consider.
Karon is author of
“How To Increase Keyword Saturation (Without Destroying the Flow of Your Copy).” Discover the secrets to creating SEO copy with a perfect balance between keywords and natural language with this insightful e-report.
Posted in Copywriting | No Comments »
Monday, March 7th, 2005
By: Nathan Johnson
Recently, I was asked to help automate some time consuming database update tasks for one of our Real Estate clients. They needed to ensure that their MLS listings were always up to date, but also couldn’t afford to take their site down while they were manually updating the database (imagine the data entry headache brought on by 1000 new MLS listings every day!). To further complicate matters, their hosting only supports ColdFusion, and can’t parse ASP or PHP pages. Thankfully, the concepts presented here are relatively straight forward and translate to PHP and ASP easier than the other way around.
Simply put, I needed to integrate their site with a program that automatically and seamlessly runs on their Cold Fusion server by updating their database once daily. Here’s how I did it!
First, I need to FTP download the updated database, which is hosted offsite. Here’s my FTP code:
<!--- BEGIN DOWNLOADING DATA FILE --->
Downloading MLS Listings...
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfflush>
<cfset thread.sleep(100)>
<!--- OPEN FTP CONNECTION TO MLS LISTING FTP SERVER --->
<cfftp action = "open"
username = "USERNAME"
password = "PASSWORD"
server = "TEST.DATABASE.COM"
connection="myFtpConnection"
stopOnError = "Yes"
passive="yes">
<!--- NAVIGATE TO THE DIRECTORY THAT CONTAINS THE MLS LISTING TEXT FILE --->
<cfftp action="changedir"
connection="myFtpConnection"
directory="/SOURCEFOLDER"
passive="yes">
<!--- FTP DOWNLOAD THE MLS LISTING TEXT FILE (Listings.txt) --->
<cfftp action="getfile"
connection="myFtpConnection"
remotefile="Listings.txt"
localfile="C:\Inetpub\wwwroot\mysite.com\database_dir\Listings.txt"
failifexists="no"
passive="yes">
<!--- CLOSE THE FTP CONNECTION --->
<cfftp action = "close"
connection = "myFtpConnection"
passive="yes">
DONE!<br>
<br>
Updating Database...
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfflush>
<cfset thread.sleep(100)>
Note the use of the following code lines throughout the page:
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfflush>
<cfset thread.sleep(100)>
Since this is a program that runs on the server, the server will not automatically print the status messages out while the program is running. As such, the page appeared to be loading and frozen when in fact it is waiting for the download to complete. By inserting the above lines, the server will pause for 100 milliseconds, long enough to print out the status messages written on the lines above, but not long enough to cause a noticeable delay in the update process. Another point of interest from above is the failifexists=”no” attribute of the tag. This is important to ensure that the local file is being overwritten each day as this update is run. Now that we’ve downloaded the updated database listings to a local file, I need to input the data into the database. This site uses a Microsoft Access .MDB database file, so I first need to clear out the existing lines of data in that file to prevent any old listings from showing up after they’ve been removed from the updated MLS database:
<!--- SQL COMMAND TO CLEAR THE DATABASE DATA, WILL BE REWRITTEN --->
<cfquery name="qryInsert" datasource="MLS">
DELETE * FROM listing_table
</cfquery>
Also note that I had already set up the datasource name of “MLS” to refer to my database file located on the server, which only involved a quick call to the web hosting company.
Now, I need to parse the new text file into usable chunks of data and input that information into the database. To accomplish this, I used a CFLOOP tag that loops through each line of the text file as it is read by the server. Also, the source text file is tab delimited and I don’t want to have to refer to tabs when parsing my data (Just because I’m picky!), so I will replace all the tabs with vert line characters (”|”):
<!--- OPEN THE LOCAL COPY OF THE LISTINGS TEXT FILE --->
<cffile action="read"
file="C:\Inetpub\wwwroot\mysite.com\database_dir\Listings.txt"
variable="txtFile">
<!--- SET COUNT AT 0 TO SKIP FIRST LINE OF DATA FROM LISTINGS TEXT FILE (COLUMN HEADINGS) --->
<cfset CountVar = 0>
<!---
SET UP INDIVIDUAL LINES OF DATA TO INPUT TO THE SQL COMMAND:
FIX SINGLE QUOTE PROBLEMS
REMOVE ANY VERT LINES '|'
REPLACE ALL TABS WITH VERT LINE DELIMITERS
--->
<cfloop
index="record"
list="#Replace(Replace(Replace(txtFile,'''','''''','all'),'|','','all'),chr(9),'| ','all')#"
delimiters="#chr(13)##chr(10)#">
Note that by using the delimiters of “#chr(13)##chr(10)#”, the text file is read one line at a time. The ASCII characters of NewLine (chr13) and carriage return (chr10) is the standard for denoting new lines in .txt files. One of the tricky things I discovered was that the text source file that holds the updated MLS data has a first line for the column headings. Obviously there wasn’t a house listing for “$L,IST,PRI.CE” (haha), so I needed to skip the first line while reading the file’s information. To get around this, I set up an independent variable that is incremented on each pass through the loop. With a simple IF/THEN set, I avoid inserting the line of invalid data into the database:
<!--- SKIP DATA IF THE FIRST LINE (COLUMN HEADINGS) --->
<cfif (CountVar gt 0)>
<!--- SETUP THE VALUES FOR THE SQL COMMAND --->
<cfif trim(listgetat(record,1,'|')) is ''>
<cfset MLSNumber = ' '>
<cfelse>
<cfset MLSNumber = '#trim(listgetat(record,1,'|'))#'>
</cfif>
<cfif trim(listgetat(record,2,'|')) is ''>
<cfset PropertyAddress = ' '>
<cfelse>
<cfset PropertyAddress = '#trim(listgetat(record,2,'|'))#'>
</cfif>
<cfif trim(listgetat(record,3,'|')) is ''>
<cfset ListingPrice = '0'>
<cfelse>
<cfset ListingPrice = '#trim(listgetat(record,3,'|'))#'>
</cfif>
Here, I assign variables to the various chunks of data, while I validate them against being blank or invalid entries. The ListGetAt function is a handy way to refer to various chunks of the current data array and the IF/THEN statements simply check to make sure that the data being read isn’t blank. If it is, the function returns a space character that takes care of ColdFusion’s built-in “skip the field if it’s blank” attitude - if you’re new to this, all you need to know is that ColdFusion will ignore that a field exists if the data is blank. For instance, an array that contains “1,2,3,,5″ is turned into the array “1,2,3,5″. Since the value in the 4th column is blank, the server automatically turns the next value into that column! DOH! As a side note - IMHO, space characters are the easiest NULL values to deal with, since the word NULL can’t simply be trimmed out of a query response.
Also note that required numerical fields are entered with a “0″ instead of a space, as a blank value is invalid for a numerical database field in Access. During development, it is also handy to output the information that is being built on the fly, since it’s easier to read through an output than to try and troubleshoot database error messages. Here’s one of the print lines I used during development:
<p><b>Line Number <cfoutput>#CountVar#</cfoutput>:</b>
<cfoutput>INSERT INTO listing_table (MLSNumber, PropertyAddress, ListingPrice)
VALUES ('#MLSNumber#', '#PropertyAddress #', '#ListingPrice #')</cfoutput></p>
This simply prints out the variables along with a handy line number (very useful when trying to figure out whether a problem in validation is due to the source information or the page’s coding!). Now, I simply plug the info into my database and end my IF/THEN statement that ignores the column headings:
<!--- SQL COMMAND TO INPUT THE LISTINGS DATA FROM THE TEXT FILE TO THE ACCESS DATABASE --->
<cfquery name="qryInsert" datasource="MLS">
INSERT INTO listing_table (MLSNumber, PropertyAddress, ListingPrice)
VALUES ('#MLSNumber#', '#PropertyAddress #', '#ListingPrice #')
</cfquery>
Also, I increment the counter so the next lines are read and entered in the DB, then looped to the next line, etc:
<!--- INCREMENT THE COUNTER TO SKIP THE FIRST LINE (COLUMN HEADINGS) --->
<cfset CountVar = CountVar + 1>
</cfloop>
DONE!<br>
<cfset thread = CreateObject("java", "java.lang.Thread")>
<cfflush>
<cfset thread.sleep(100)>
That’s the upload and update program now there’s the problem of how to make the server run the script. You can either set up something server side (neither fun nor easy on Windows IIS), or you can simply make sure that the first person to navigate the site each morning causes the script to run. For more details see the ‘Emulating Crontab using Coldfusion‘ article.
Posted in Search Engine Optimization | No Comments »
Monday, March 7th, 2005
By: Nathan Johnson
Setting up automated scripts on Windows can be difficult. The built in scheduler is hard to set especially if you don’t have console access. An easier way is to set up the site so that the first person to navigate to the site each morning causes the script to run. This is actually really simple to do, and can be completely seamless for the end user. Simply use the script page as the source of a little 1px by 1px image hidden somewhere at the bottom of your site’s footer:
<img src="http://www.mysite.com/dbupdate.cfm" width="1" height="1" border="0">
Even though the SRC of this “image” is not a real image file, the server doesn’t know that, so it still runs the page to accommodate the request, and doesn’t require your user to navigate through the page or require you to dump large blocks of code into each of your site’s pages. In essence, this works almost like an include file, but doesn’t require the server to parse and run the template prior to loading the page. It’s also advantageous in that the script won’t die or stop if the user navigates away from the page before it’s completed.
There are a couple of problems that are now presented - first, how to ensure that the first person to navigate the site actually triggers the script? By simply putting this image tag at the bottom of each page in the entire site (whether through an include file or by hard coding it), any page on the site will trigger the script. This could cause another problem though, as we now can’t prevent the user from navigating to another page in the site and causing the script to trigger multiple times. It is important that we build the logic to accommodate these requests quickly (to save server resources), and make sure that multiple downloads don’t occur. Two quick IF/THEN statements will help us. First, let’s discuss the multiple download issue. By creating a file on the server that acts as an alarm that a download is already in progress, we can avoid multiple downloads. I’ll show you how to create the file later in the script, but for now here’s how I am checking for its existence:
<!--- PATH INFO FOR LOCK FILE --->
<CFSET MLSLockFile = "C:\Inetpub\wwwroot\mysite.com\database_dir\crontab.lck">
<!--- CHECK FOR EXISTING LOCK FILE --->
<CFIF FileExists(MLSLockFile)>
<!--- IF LOCK FILE EXISTS, REPORT THAT THE DOWNLOAD IS IN PROGRESS --->
<h3>UPDATE IS ALREADY IN PROGRESS!</h3>
This works in the same way that Macromedia’s DreamWeaver MX check out principle works, in that if this file is present it triggers an alert. In this case, the alert is caught by the IF/THEN statement and the rest of the script is avoided. Since this only takes a millisecond and doesn’t hog any server resources (probably less load on your server than even passing a 1×1.gif image), we can safely call this script from any page of our site - even with decent web traffic - and the download won’t be triggered more than once. Next, we need to make sure that we only do the download when it’s required. For this example, I am restricting downloads to once per day. This is done by obtaining the modified date on the text file we previously FTP downloaded. It’s not much more complicated to get the modified timestamp as well, if you need to do multiple updates in a single day:
<!--- LOCK FILE DOES NOT EXIST --->
<cfelse>
<!--- GET TIMESTAMP FROM LAST MLS UPDATE (CODE) --->
<cfscript>
function FileDateLastModified(path)
{
Var fso = CreateObject("COM", "Scripting.FileSystemObject");
Var theFile = fso.GetFile(path);
Return theFile.DateLastModified;
}
</cfscript>
<!--- LAST MLS UPDATE (TRIGGER & FILE REFERENCE) --->
<CFSET TheFile = "C:\Inetpub\wwwroot\mysite.com\database_dir\Listings.txt">
<!--- LAST MLS UPDATE (LOGICAL OPERATOR) --->
<cfif #DateFormat(FileDateLastModified(TheFile), 'mm/dd/yyyy')# - #DateFormat(Now())# lt 0>
The “TheFile” variable sets up the reference to the text file, and a simple IF/THEN statement checks that the difference between the modified date of the existing file and the current date is less than 0. If this is the case (indicating that an update is needed), then the lock file will be generated and the download/update script will be run:
<!--- CREATE LOCK FILE --->
<cffile action="write"
file="C:\Inetpub\wwwroot\mysite.com\database_dir\crontab.lck"
output="101010">
Note that the output is needed to write the file, but isn’t used for anything. Here’s where all the above mentioned FTP and database updating code goes. Once the script is complete, we will destroy the temporary lock file:
<!--- REMOVE LOCK FILE --->
<cffile action="delete" file="C:\Inetpub\wwwroot\mysite.com\database_dir\crontab.lck">
.and now we’ve got a complete picture. To sum up, the script will now do the following tasks for us:
- Check for a lock file (preventing multiple downloads).
- If not, check the timestamp to see whether a download and update is needed (keep updates appropriately periodic).
- If an update is needed, create a lock file to prevent multiple downloads and FTP the information from a remote location to our local server.
- Update the database with the new information.
- Remove the lock file (when complete) to allow the update to run again.
Posted in Search Engine Optimization | No Comments »
Tuesday, March 1st, 2005
by Karon Thackston © 2005, All Rights Reserved
http://www.copywritingcourse.com/keyword
Only about 20% of your copy is going to get read. The rest will simply be scanned. I’m sure you’ve heard the statistic before. It’s nothing new. While it might sound frightening or frustrating, it’s a fact of copywriting life. So what do you do next? Give up? What difference does it make if only about 20% will be read anyway?
It makes a world of difference. Especially if you understand that there are some sections of your copy that are practically guaranteed to get read. If you know what these are and work to reinforce them, you’ll see your conversions increase dramatically whether your copy is geared toward online or offline promotions.
Headlines
Headlines have always been and will always be the most important section in any copy. They are the first thing to get read and have the greatest impact on whether any of the other copy gets read. Those stories you’ve seen floating around the Internet about marketers who have made minute changes to a headline and tripled their conversion rates are true. It happens all the time. In fact, it’s happened to me.
Headlines and sub-headlines can guide your visitors to read deeper into your copy. If you set up a structure of progressive headlines, you’ll have a better shot getting your point across. Pay a lot of attention to your headline. It’s the powerhouse of your copy.
Captions
Captions started with newspaper journalists. When they would run a picture with a story, they would add a few words underneath to explain what or who the picture was of. People got into the habit of looking for the captions in order to relate the importance of the image with the information they were receiving. This still holds true. Captions in advertising pieces are highly read. Don’t waste the space!
First Sentences
When you scan something — an article, a book, a newspaper, a magazine, a website — what do you read? Almost everyone reads the first sentence of each paragraph. These sentences are vitally important in order to get your potential customers interested enough to keep reading. If you create exceptional first sentences, one of two things will happen. One: The prospect will be more likely to continue reading the copy. Two: The first sentences in each paragraph will be enough to convince him/her to buy.
First In Bulleted List
Just as with the first sentence in each paragraph, people also almost always read the first entry in a bulleted list. If it hits home, they might keep reading. But, knowing that you have their attention for at least one second, always make sure your first bullet point is extremely powerful and enticing.
PS’s
Writing a direct mail or Web sales letter? The PS is another hot spot. Take advantage of this real estate. Repeat offers, remind readers of bonuses, reinforce guarantees or recap limited-time offers. This section is the final pitch before your reader either acts or trashes your copy so make it count.
Have you noticed something about these five sections? Why do you think they are virtually guaranteed to get read in any piece of copy? They are unusual. They are limited. They stand out. They are eye-catching.
You only have a limited number of headlines and sub-heads in copy. They are almost always offset by bolding or underlining so they easily catch the eye of the reader. Captions only appear when there are images. They do not appear all throughout the copy. First sentences are also rare. Only one sentence in each paragraph can be the first one. This tells the reader to keep going or jump to another section that might be of more interest. First entries in bulleted lists are unusually formatted and catch the eye of the reader. PS’s? There’s only one, and since it’s the last thing on the page, most often, it stands out too.
These rare elements give you five guaranteed shots at building curiosity, promoting benefits, generating interest and closing sales. If you haven’t done it before, now is the time to review your copy to be sure you’re making the most out of these opportunities.
Karon is author of
“How To Increase Keyword Saturation (Without Destroying the Flow of Your Copy).” Discover the secrets to creating SEO copy with a perfect balance between keywords and natural language with this insightful e-report.
Posted in Copywriting | No Comments »