A Guide to Growing Your Agency by Upselling Clients


Hits: 189  

How upselling clients can help your agency to grow
As a web design agency are you currently concentrating most of your energies on attracting new clients as opposed to upselling existing ones? If you are then this could be a mistake. It can often take a lot less effort to sell a further service to a client you have already worked with than it does to persuade a new client to hire you. Most importantly, the financial rewards can be impressive and can help with the growth of your agency.

It’s unlikely that clients are going to completely update their website on a regular basis so you need to think carefully about services which you can offer. Do not forget that clients are going to be most interested in services that can secure them increased leads, sales and revenue. Let’s take a look at some of the ways in which you can upsell existing clients.

Optimising conversions
Conversions are likely to be one of the most important considerations for your clients. You can offer them the ability to optimise conversions by using the very latest functionality in areas such as check out functionality and live chat features.

Optimising performance
Website performance is always an important factor when it comes to attracting and retaining customers. This is why offering to monitor the performance of a client’s website, and provide suggestions for optimisation, is a good idea. Have any features been added that make the website slow to load, for instance. This is an important issue as slow load times are one of the major factors when it comes to deterring people from using a website.

Optimising analytics
If analytics are not optimised then it’s hard to tell how well aspects of a website are performing. It’s important that a client has the latest analytics in place in order for them to see where changes might be necessary in order to maximise ROI from their website. If you can offer them your analytics expertise you are upselling a vital product.

How to charge when upselling clients
There may not be a one size fits all option when it comes to upselling; you have to decide on solutions that are the best fit for you and the client. Options include:
• Charging by the hour. This is just as it says; the client is charged for each hour you work for them.
• Charging a retainer. You may find it easier to obtain a retainer from the client which guarantees them a certain number of hours service from you which they can use when they need them.
• Charging by subscription. One of the easiest methods of charging for your services is to use a subscription system which involves the client paying a set amount each month or year for an agreed level of service.
These are just some of the charging methods you can consider.
If you speak to any professional web design agency they will tell you how vital their services can be; you can learn more here. This is why agencies should always upsell existing clients with the message that all of the ongoing services we have highlighted are very much needed.

Importing data from non-wordpress mysql database


Hits: 3052  

You have to create an import php file to get the Questions/Answers from a non-wordpress database and bring them into posts in wordpress.

Question Table

<?php

/// non-wordpress database connection string here

require('./wp-load.php');

$results = mysql_query("SELECT * FROM questions");

while ($row = mysql_fetch_assoc($results)) 
{

    $post_information = array(
	'post_title' => wp_strip_all_tags( $row['question'] ),
	'post_content' => $row['answer'],
	'post_category' =>  array(6,7), // Cat Ids
	'post_date' => date('Y-m-d H:i:s', strtotime( $row['timestamp'] )),
	'post_type' => "post",
	'post_excerpt' => "",
	'post_author' => "admin",
	'post_status' => "publish"
	);
	
	$post_id = wp_insert_post( $post_information );		
	
	$filename = "http://www.domain.com/images/post-image.png";   ////  Post Thumbnail Image
	$wp_filetype = wp_check_filetype(basename($filename), null );
	
	$attachment = array(
	  'post_mime_type' => $wp_filetype['type'],
	  'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
	  'post_content' => '',
	  'post_status' => 'inherit'
	);
	
	$attach_id = wp_insert_attachment( $attachment, $filename, $new_post );
	
	//update_post_meta($post_id,'_thumbnail_id',$attach_id);	
	
	add_post_meta($post_id, '_thumbnail_id', $attach_id, true);

}

?>

User Agent Parsing with PHP


Hits: 2856  

Tobie Langel’s ua-parser, a great library which provides simple UA parsing in PHP, JavaScript and Python.

<?php require_once 'uaparser.php';

$ua = $_SERVER['HTTP_USER_AGENT'];
$parser = new UAParser();
$result = $parser->parse($ua);

echo '<pre>';
print_r($result);

?>

Mistserver Manager Login

Find more libraries here...

https://github.com/rjd22/ua-parser/tree/master/php
https://github.com/Synchro/ua-parser

Select2Array


Hits: 4381  

It’s easy to convert PHP Array to Select Dropdown Box… you need to loop for all element in array to display as dropdown. But may be you ever think for reverse process. Yes, it’s also easy!

You need to scrape / crawl Select box HTML to get PHP Array back from HTML Select Box. Please read our articles for xpath here

Select2Array

<?php

$s = '<select name="country">
<option value="">Country...</option>
<option value="AF">Afghanistan</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
<option value="AG">Angola</option>
<option value="AI">Anguilla</option>
<option value="AG">Antigua &amp; Barbuda</option>
<option value="AR">Argentina</option>
<option value="AA">Armenia</option>
<option value="AW">Aruba</option>
<option value="AU">Australia</option>
<option value="AT">Austria</option>
<option value="AZ">Azerbaijan</option>
<option value="BS">Bahamas</option>
<option value="BH">Bahrain</option>
<option value="BD">Bangladesh</option>
<option value="BB">Barbados</option>
<option value="BY">Belarus</option>
<option value="BE">Belgium</option>
<option value="BZ">Belize</option>
<option value="BJ">Benin</option>
<option value="BM">Bermuda</option>
<option value="BT">Bhutan</option>
<option value="BO">Bolivia</option>
<option value="BL">Bonaire</option>
<option value="BA">Bosnia &amp; Herzegovina</option>
<option value="BW">Botswana</option>
<option value="BR">Brazil</option>
<option value="BC">British Indian Ocean Ter</option>
<option value="BN">Brunei</option>
<option value="BG">Bulgaria</option>
<option value="BF">Burkina Faso</option>
<option value="BI">Burundi</option>
<option value="KH">Cambodia</option>
<option value="CM">Cameroon</option>
<option value="CA">Canada</option>
<option value="IC">Canary Islands</option>
<option value="CV">Cape Verde</option>
<option value="KY">Cayman Islands</option>
<option value="CF">Central African Republic</option>
<option value="TD">Chad</option>
<option value="CD">Channel Islands</option>
<option value="CL">Chile</option>
<option value="CN">China</option>
<option value="CI">Christmas Island</option>
<option value="CS">Cocos Island</option>
<option value="CO">Colombia</option>
<option value="CC">Comoros</option>
<option value="CG">Congo</option>
<option value="CK">Cook Islands</option>
<option value="CR">Costa Rica</option>
<option value="CT">Cote D\'Ivoire</option>
<option value="HR">Croatia</option>
<option value="CU">Cuba</option>
<option value="CB">Curacao</option>
<option value="CY">Cyprus</option>
<option value="CZ">Czech Republic</option>
<option value="DK">Denmark</option>
<option value="DJ">Djibouti</option>
<option value="DM">Dominica</option>
<option value="DO">Dominican Republic</option>
<option value="TM">East Timor</option>
<option value="EC">Ecuador</option>
<option value="EG">Egypt</option>
<option value="SV">El Salvador</option>
<option value="GQ">Equatorial Guinea</option>
<option value="ER">Eritrea</option>
<option value="EE">Estonia</option>
<option value="ET">Ethiopia</option>
<option value="FA">Falkland Islands</option>
<option value="FO">Faroe Islands</option>
<option value="FJ">Fiji</option>
<option value="FI">Finland</option>
<option value="FR">France</option>
<option value="GF">French Guiana</option>
<option value="PF">French Polynesia</option>
<option value="FS">French Southern Ter</option>
<option value="GA">Gabon</option>
<option value="GM">Gambia</option>
<option value="GE">Georgia</option>
<option value="DE">Germany</option>
<option value="GH">Ghana</option>
<option value="GI">Gibraltar</option>
<option value="GB">Great Britain</option>
<option value="GR">Greece</option>
<option value="GL">Greenland</option>
<option value="GD">Grenada</option>
<option value="GP">Guadeloupe</option>
<option value="GU">Guam</option>
<option value="GT">Guatemala</option>
<option value="GN">Guinea</option>
<option value="GY">Guyana</option>
<option value="HT">Haiti</option>
<option value="HW">Hawaii</option>
<option value="HN">Honduras</option>
<option value="HK">Hong Kong</option>
<option value="HU">Hungary</option>
<option value="IS">Iceland</option>
<option value="IN">India</option>
<option value="ID">Indonesia</option>
<option value="IA">Iran</option>
<option value="IQ">Iraq</option>
<option value="IR">Ireland</option>
<option value="IM">Isle of Man</option>
<option value="IL">Israel</option>
<option value="IT">Italy</option>
<option value="JM">Jamaica</option>
<option value="JP">Japan</option>
<option value="JO">Jordan</option>
<option value="KZ">Kazakhstan</option>
<option value="KE">Kenya</option>
<option value="KI">Kiribati</option>
<option value="NK">Korea North</option>
<option value="KS">Korea South</option>
<option value="KW">Kuwait</option>
<option value="KG">Kyrgyzstan</option>
<option value="LA">Laos</option>
<option value="LV">Latvia</option>
<option value="LB">Lebanon</option>
<option value="LS">Lesotho</option>
<option value="LR">Liberia</option>
<option value="LY">Libya</option>
<option value="LI">Liechtenstein</option>
<option value="LT">Lithuania</option>
<option value="LU">Luxembourg</option>
<option value="MO">Macau</option>
<option value="MK">Macedonia</option>
<option value="MG">Madagascar</option>
<option value="MY">Malaysia</option>
<option value="MW">Malawi</option>
<option value="MV">Maldives</option>
<option value="ML">Mali</option>
<option value="MT">Malta</option>
<option value="MH">Marshall Islands</option>
<option value="MQ">Martinique</option>
<option value="MR">Mauritania</option>
<option value="MU">Mauritius</option>
<option value="ME">Mayotte</option>
<option value="MX">Mexico</option>
<option value="MI">Midway Islands</option>
<option value="MD">Moldova</option>
<option value="MC">Monaco</option>
<option value="MN">Mongolia</option>
<option value="MS">Montserrat</option>
<option value="MA">Morocco</option>
<option value="MZ">Mozambique</option>
<option value="MM">Myanmar</option>
<option value="NA">Nambia</option>
<option value="NU">Nauru</option>
<option value="NP">Nepal</option>
<option value="AN">Netherland Antilles</option>
<option value="NL">Netherlands (Holland, Europe)</option>
<option value="NV">Nevis</option>
<option value="NC">New Caledonia</option>
<option value="NZ">New Zealand</option>
<option value="NI">Nicaragua</option>
<option value="NE">Niger</option>
<option value="NG">Nigeria</option>
<option value="NW">Niue</option>
<option value="NF">Norfolk Island</option>
<option value="NO">Norway</option>
<option value="OM">Oman</option>
<option value="PK">Pakistan</option>
<option value="PW">Palau Island</option>
<option value="PS">Palestine</option>
<option value="PA">Panama</option>
<option value="PG">Papua New Guinea</option>
<option value="PY">Paraguay</option>
<option value="PE">Peru</option>
<option value="PH">Philippines</option>
<option value="PO">Pitcairn Island</option>
<option value="PL">Poland</option>
<option value="PT">Portugal</option>
<option value="PR">Puerto Rico</option>
<option value="QA">Qatar</option>
<option value="ME">Republic of Montenegro</option>
<option value="RS">Republic of Serbia</option>
<option value="RE">Reunion</option>
<option value="RO">Romania</option>
<option value="RU">Russia</option>
<option value="RW">Rwanda</option>
<option value="NT">St Barthelemy</option>
<option value="EU">St Eustatius</option>
<option value="HE">St Helena</option>
<option value="KN">St Kitts-Nevis</option>
<option value="LC">St Lucia</option>
<option value="MB">St Maarten</option>
<option value="PM">St Pierre &amp; Miquelon</option>
<option value="VC">St Vincent &amp; Grenadines</option>
<option value="SP">Saipan</option>
<option value="SO">Samoa</option>
<option value="AS">Samoa American</option>
<option value="SM">San Marino</option>
<option value="ST">Sao Tome &amp; Principe</option>
<option value="SA">Saudi Arabia</option>
<option value="SN">Senegal</option>
<option value="RS">Serbia</option>
<option value="SC">Seychelles</option>
<option value="SL">Sierra Leone</option>
<option value="SG">Singapore</option>
<option value="SK">Slovakia</option>
<option value="SI">Slovenia</option>
<option value="SB">Solomon Islands</option>
<option value="OI">Somalia</option>
<option value="ZA">South Africa</option>
<option value="ES">Spain</option>
<option value="LK">Sri Lanka</option>
<option value="SD">Sudan</option>
<option value="SR">Suriname</option>
<option value="SZ">Swaziland</option>
<option value="SE">Sweden</option>
<option value="CH">Switzerland</option>
<option value="SY">Syria</option>
<option value="TA">Tahiti</option>
<option value="TW">Taiwan</option>
<option value="TJ">Tajikistan</option>
<option value="TZ">Tanzania</option>
<option value="TH">Thailand</option>
<option value="TG">Togo</option>
<option value="TK">Tokelau</option>
<option value="TO">Tonga</option>
<option value="TT">Trinidad &amp; Tobago</option>
<option value="TN">Tunisia</option>
<option value="TR">Turkey</option>
<option value="TU">Turkmenistan</option>
<option value="TC">Turks &amp; Caicos Is</option>
<option value="TV">Tuvalu</option>
<option value="UG">Uganda</option>
<option value="UA">Ukraine</option>
<option value="AE">United Arab Emirates</option>
<option value="GB">United Kingdom</option>
<option value="US">United States of America</option>
<option value="UY">Uruguay</option>
<option value="UZ">Uzbekistan</option>
<option value="VU">Vanuatu</option>
<option value="VS">Vatican City State</option>
<option value="VE">Venezuela</option>
<option value="VN">Vietnam</option>
<option value="VB">Virgin Islands (Brit)</option>
<option value="VA">Virgin Islands (USA)</option>
<option value="WK">Wake Island</option>
<option value="WF">Wallis &amp; Futana Is</option>
<option value="YE">Yemen</option>
<option value="ZR">Zaire</option>
<option value="ZM">Zambia</option>
<option value="ZW">Zimbabwe</option>
</select>';
									

$doc = new DOMDocument();
$doc->loadHTML($s);
$xpath = new DOMXPath($doc);

$options = $xpath->query('*/select/option');

//print_r($options);

$values = array();
foreach ($options as $option) {

     $in = $option->getAttribute('value'); 
	 if($in=="") $in = rand(0,2);
	 $values[$in] = $option->textContent;
}

//print_r($values);
echo "$"."z = ".var_export($values, true).";";


?>

You can apply same logic for more HTML elements using xpath...

Download Select2Array.php

Detecting the end of video using OSMPlayer


Hits: 2581  

I was working on video ads solution using OSMPlayer. So, It was needed to detect video finish event in OSMPlayer …

The Open Standard Media Player (OSMPlayer) is an all-in-one video player. It is open source (MIT) video player for web media, including Red5, Wowza, HTML5, YouTube, Vimeo, Limelight CDN, Kaltura, and Flash.

I have onComplete() method in JavaScript… but I was not sure how to bind video ended event in this JavaScript API …

<script type="text/javascript">
  $(function() {
    $("video").osmplayer({
      width: '100%',
      height: '600px'
    });
  });

$(function() {
        minplayer.get(‘media’, function(media) { 
        media.bind(‘ended’, function() {
       //The video is done!
       alert(“video complete :)”);
});
});
});

</script>

<video src="VIDEO-SOURCE" poster="VIDEO-POSTER-IMAGE"></video>

Thanks to Travis Tidwell

PayPal auto redirect credit card user to website after payment


Hits: 4000  

I have a problem on my Pay Per Video Website (PPV), Guests normally watch preview of videos for few seconds then PayPal Screen appear to watch full version of video content.

payperview-app-payment-screen

Pay Per Plugin for HTML5 Media – Pay Per Plugin for HTML5 Media Plugin is embedded stand-alone, e-commerce-powered JavaScript and iFramed widget for Audio/Video. – See more at: http://html5plus.svnlabs.com/shop/pay-per-plugin-for-html5-media/#.UsuLItIW2So

I am using paypal form …

<form action=”<?php echo $paypal_link; ?>” target=”_top” method=”post” name=”payPalForm”>
<input type=”hidden” name=”business” value=”<?php echo $business_email;?>”>
<input type=”hidden” name=”cmd” value=”_xclick”>
<input type=”hidden” name=”item_name” value=”<?php echo $item_name; ?>”>
<input type=”hidden” name=”item_number” value=”<?php echo $item_number; ?>”>
<input type=”hidden” name=”amount” value=”<?php echo sprintf(“%01.2f”, $amount); ?>”>
<input type=”hidden” name=”no_shipping” value=”1″>
<input type=”hidden” name=”currency_code” value=”<?php echo $currency_code; ?>”>
<input type=”hidden” name=”handling” value=”0″>
<input type=”hidden” name=”rm” value=”2″ >
<input type=”hidden” name=”cancel_return” value=”<?php echo $siteurl; ?>cancel.php”>
<input type=”hidden” name=”return” value=”<?php echo $siteurl; ?>success.php”>
<input type=”image” src=”https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif” border=”0″ name=”submit” alt=”PayPal – The safer, easier way to pay online!”>
<img alt=”” border=”0″ src=”https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif” width=”1″ height=”1″>
</form>

 

I have enabled auto return ON and auto return URL in paypal settings already ….

Auto Return URL

When customers pay using paypal they easily redirected to PPV website … but if someone (guest) pay from credit card .. they have to click on link to redirect back to website …. 🙁

PayPal Auto Redirect to Website

Solution:

You can find more info here Merchant Services from PayPal – Payment Solutions for Your Business

PayPal Standard Payments is designed in such a way if a customer pays as guest (they don’t have a PayPal Account), after they complete the checkout process, PayPal will offer to open PayPal Account or click on the link to return them to PPV website. Customers “must” click on the link in order to return to your web site.

You can use either PayPal Payments Pro or Advanced, if you want the customer to remain on your web site for the checkout process. Advanced PayPal method enable customer to remains on PPV website. The PayPal process work thru a window or frame on your website.

Merchant Services from PayPal - Payment Solutions for Your Business

PayPal Pro and Advanced are available in additional monthly costs as well as the transaction processing fees.
Pro is $30 a month, Advanced is $5 a month. 🙂

Red5 CMS


Hits: 3301  

Hope you already read our article for Media Streaming CMS.

Using Red5 CMS you can manage your Red5, Wowza, RTMP streams and publish using open source player. You can track your media content and embed on other websites.

Red5 Admin Login
red5-admin-login

Red5 CMS Home
red5-cms-home

Red5 CMS Categories
red5-cms-category

Red5 CMS Add Categories
red5-cms-category-add

Red5 Server Infomation
red5-server-info

Red5 Streams
red5-streams

Red5 CMS Edit Streams
red5-streams-edit

Red5 CMS Stream Offline
stream-offline

Unicode Character Calculator


Hits: 2583  

Unicode Character Calculator is a tool to convert symbols to HTML/PHP entity, CSS hex value and JavaScript hex value.

Unicode Character Calculator
Unicode Character Calculator