Posted on Leave a comment

Paypal vs. Stripe

Paypal Sucks

Paypal sucks, as everyone knows. It has one benefit for the consumer (those buying with paypal) and that is their dispute resolution, which I've used perhaps ten times and have never lost. Dispute resolution with credit cards and banks is much, much more difficult and harder to win.

For the seller, however, Paypal is horrible. Their rates are higher, their exchange rates typically add on 5%, and they also have fees for transfer to one's bank (in Thailand that is now 50 THB, though it used to be free for transfers over a certain (small) amount.

Stripe - A knight in shining armor

Stripe is the great competitor. It is available in far fewer countries than Paypal, but where it matters such as places like Vietnam, India, and the Philippines, Paypal is still largely unavailable for use. Stripe is avialable in India but only Malaysia and Singapore in terms of Southeast Asia. That said, Stripe has a way to enable those operating in countries without support to be fully functional, and that is by setting up a US corporation and enabling ease of banking setup. This service is called Stripe Atlas, and is in fact so much better than anything Estonia is marketing under their misguided and mischaracterized e-residency, which is neither a residency nor any kind of incorporation or accounting infrastructure (basically a chip on pin ID that works poorly, if at all).

If we look at fees for an organization working out of Thailand (that repatriates funds in Thai Baht), here are some numbers:

Example: 3 transactions of $33 USD/month

Paypal fees

$ 5.25 transaction fees
$ 5.00 currency conversion fee
฿ 50.00 bank transfer fee (~ $ 1.75)

Total: $ 12.00 USD = 12 %

Stripe + Transferwise fees

$ 3.78 transaction fees
$ 0.24 currency conversion fee (mid-market rate)
฿ 69.00 bank transfer fee (~ $ 2.20)

Total: $ 6.22 USD = 6.22 %

Note that the Stripe transactions scale much better as the currency conversion fee is fixed unlike the Paypal currency conversion. In addition, as we see the Stripe fees are lower for any given transaction.

Other reasons Paypal is worse than Stripe

  • Paypal transfer payments take a long time. Of course for no good reason other than that Paypal wants the use of other people's money for longer (4-7 business days in Thailand).
  • Paypal doesn't deal with Transferwise or Payoneer banks, and refuses to send/receive money to them. No good reason here, other than seeing these fintech companies as competition and making their customers suffer for using them.
  • Paypal technical support/customer service is notoriously poor.


Posted on Leave a comment

Colorblindness Online Marketing


Colorblindness affects approximately 5-8% of the population, mainly males. The visualization of these kinds of colorblindness is eye-opening, to say the least. The most common form of colorblindness is deuteranomaly, which is red-green. The colorblindness simulations show the color red as indistinguishable from a certain shade of green. Actually to my eyes the dichromatic treatment renders both green and red as amber or ochre. Which means that yellow, orange, green, and red are seen as a light yellow to dark yellow spectrum, with purple as a darker form of blue. This means that the use of red and green as distinguishably different should be avoided. The use of red-yellow distinctions or green-yellow distinctions could work. Also now that the blue-purple distinction also gets muddled, which is not useful for the dark blue link and purple visited-link color standard in html.

Online Marketing

There are three online marketing graphical components which should be made colorblind-safe * Company logo and other visual brand design elements * Website color scheme, including background, headers, subheads, links, and visited links * Any graphical banner advertisements used anywhere on the web Just like the company or brand name and website URL, which may not be changeable, the company brand colors and logos may be off-limits to optimization. However, any kind of navigation or non-core imagery should be viewed through the lens of the colorblind customer.

Rules of Thumb

Some rules of thumb can be generated from these research findings * Do not mix green with either red or orange * Use a darker green against light backgrounds, as light green appears as yellow * Do not mix blue and purple, and avoid shades of blue to purple, they won't stand out * Use the VischeckJ tool (below) which will show how differentiated a given logo and graphic scheme is from competitor brand visuals As per the usual, the idea is to be different, but in a good way.


  • ImageJ and VischeckJ
  • For colorblind people, the What Color tool helps identify colors on a screen for those who cannot do so visually
  • Visicheck has an algorithm called "Dalton" which changes colors to make the distinctions between colors more noticeable for the colorblind
  • Visicheck also has online tools to check websites and images
Posted on Leave a comment

SERP Star Ratings ⭐⭐⭐⭐⭐

Star ratings, which indicate review averages, can be useful indicators of quality on search results pages. There are several tactics to include star ratings (or rather, rating/review stars). There may be an interesting use case for not having a root page / in a WordPress website. That is, forcing a redirect from root to a stub, or rather a page. That has to do with the way Google treats In WordPress it is common practice to have all pages end in / and that actually works well, as instead there can be a funny implicit redirect to another page with a longer stub. In this case, though it may be a bit less elegant than without, it is clear that there are no further characters in the sought URL.

Unicode/UTF-8 Characters and Image Sprites

Bing SERP sprite

Google SERP sprite The standard yellow star ⭐ is a UTF-8 character ⭐ and is Hex encoded as %E2%AD%90. These can be used in page titles, descriptions, headers, etc. They may be then passed through by Google. > Google and Bing will currently display such stars in the URL, and both will also display the stars in the meta description. Google will display stars in the Title as well. Bing SERP results with stars in URL, and meta description

Unfortunately, our choice of colors is limited in Unicode characters, so they do not meet the current smaller, dark orange/reddish stars displayed in Google and Bing SERPs' semantic review markup. Actually, both Bing and Google currently use a PNG sprite for the stars.

Google SERP results with stars in Title, URL, and meta description

Percent Encoding for URLs

URLs (or rather, URIs) on the Internet cannot support unicode/utf-8 as per the HTTP specification. Therefore unicode/utf-8 characters are converted into supported ascii characters using percent encoding. For example, the URL of this page in Unicode is: -⭐⭐⭐⭐⭐/ But this is converted into percent encoding when copying and pasting from the URL bar of a browser, as such: -

Star Color and Markup

Bing vs Google Rating Stars The colors are a bit different for Bing and Google when comparing their stars. Bing uses #ff452e, though it uses #f94f2a for the actual rating in a related color; Google uses #f26b28.

To approximate the star, we can use the black star UTF-8 character ⭑, which is unicode character ⭑ and then paint it:

<span style="color:#f26b28">&#11089;&#11089;&#11089;&#11089;&#11089;</span>

⭑⭑⭑⭑⭑ To approximate Bing, one would add something like:

<span style="color:#f94f2a;font-weight:bold;font-size:13px">4.8/5</span>
<span style="color:#ff452e;font-weight:bold">&#11089;&#11089;&#11089;&#11089;&#11089;</span>
<span style="font-size:13px">21 REVIEWS</span>

Rendering as: 4.8/5 ⭑⭑⭑⭑⭑ 21 REVIEWS For Google, it would be something like:

<span style="color:#f26b28">&#11089;&#11089;&#11089;&#11089;&#11089;</span>
<span style="color:#808080;font-size:small">Rating: 4.8 - 21 reviews</span>

Rendering as: ⭑⭑⭑⭑⭑ Rating: 4.8 - 21 reviews Note that these are completely controlled by Bing and Google, and there does not appear to be a way of manually overriding Bing and Google stars. As noted above, we do seem to be able to have stars appear in the URL using Unicode/UTF-8 characters (though not the orange-red color).

Third Party Review Providers

There are larger third-party sites and review services that can provide star ratings. Usually these have some kind of deal with Google and/or Bing if one or both of the search providers are displaying third party star ratings on a SERP link. Facebook and Google are two of the more common star ratings that are displayed on the Internet. Facebook's' review stars are generally constrained to Facebook pages, however Google star ratings can show up on SERPs such as a Google Local Business or Google Plus pages. For a third party reviewing service, has a decent business model. For the small business or certain types of markets a public reviewing service is not a viable approach. Well, it turns out that the technical implementation of reviews and stars can be implemented on a website directly.

Rich Snippets, Rich Cards, Structured Data

Overall, Google and Bing have increasingly supported structured data, which is in a few formats. This is part of what is known as the semantic web, which means that text is marked up as having a specific meaning. Roughly, text and images can be presented as a part of a document (xhtml), and can be presented in a particular style (css). On that is built various ways of interaction (javascript). But for explicit metadata, parts of documents needs a semantic or meaning markup. Things like document types, dates, prices, authorship, ratings, and the like. There are quite a few structured data types recognized by Google. The ones that are most important are those displayed in search engine results pages (SERPS). Now just because there is a result in a particular display type, it is important not to assume that those are automatically better for clickthrough rates. This must be demonstrated in the analytics. However, Google is also working to ensure that those rich snippets are working to the advantage of everyone, searchers and publishers alike. For the purposes of several different sites, the following are of interest as structured data, all of which can then be present in some form on the SERPs: - Article (that is, website pages structured as news articles), Videos - Organization, and more specifically, Local Business, Educational Organization, and others - Products, Service, and Courses - Events, Person, and Place - Reviews (note that an aggregate rating can be nested under an organization) As well, as site can have structural structured data, that is then presented on SERPs, such as: - Breadcrumbs - Sitelinks searchbox - Sitename will replace the standard https://domain.tld with a brand name. This means becomes Google, etc.

Current Best Practice - Comprehensive Structured Data

Our recommendation is as follows: - Mark up sitewide the Organization, Educational Organization, or Local Business, and include an aggregate review. This done in JSON-LD can be inserted into the ... of the page. - Include Sitename, Breadcrumbs, and Sitelinks searchbox (if applicable) in JSON-LD in the page `` - Mark up all content pages as Articles, Courses, Products, etc., as appropriate. The focus should be on each page as a news article so that titles and descriptions have subject-verb agreement and active verbs (imperative or active voice). Even things like contact and privacy policy pages can be titled and described in a way that is news, rendering the news article an appropriate format. - Use a single, identifying image for the organization, though it is not possible to do so for all entities, as Google was the image to belong to the instance being marked up.

Google Structured Data Tools

Google has some useful tools to create and test out structured data: - Google structured data markup helper - Google structured data testing tool Note also that Google Adwords and Bing Ads also supports structured data, though managing that is done inside the advertising interface.

Structured Data - Remove Hentry if present in Theme

Sometimes there is a potentially incomplete hentry listing with attributes already in a theme or theme framework. For example, Ultimatum Theme has the following in a few different files. - /wp-content/themes/ultimatum/wonderfoundry/functions/loop/loop.php (entry-content) - /wp-content/themes/ultimatum/wonderfoundry/admin/helpers/class.css.saver.php (hentry) - /wp-content/themes/ultimatum/wonderfoundry/functions/loop/loop-functions.php (itemtype, entry-title, bookmark)

Structured Data - Sitelinks Search Box & Website Name

  • Add to Homepage Only
  • Set a rel=canonical preferred home page on the home page
  • Use the code below for a WordPress site, which supports /?s={search_term} search syntax, and to add the name and alternate name for search engines to use in SERPs
  • Finally, make a nice search interface and results page on the site itself, perhaps using Dave's WordPress Live Search
  "@context": "",
  "@type": "WebSite",
  "name": "Your WebSite Name",
  "alternateName": "An alternative name for your WebSite",
  "url": "https://domain.tld",
   "potentialAction": {
    "@type": "SearchAction",
    "target": "https://domain.tld/?s={search_term}",
    "query-input": "required name=search_term"

Structured Data - Organization, Local Business, Etc.

Currently Google and possibly Bing don't support this markup for actions, outside of a set of beta testers, but may in the future. In particular, there is the generic Organization, Educational Organization, and Local Business types of organizations, among others. For all of these, social media profiles, hours of operation, contact information, aggregate reviews, and the like can be added. There are actually quite a number of organization types, see this spreadsheet with equivalences. - Add the code to the home, contact, or other key business pages, though it may be allowed across a site. Unclear on that at the moment.

  "@context" : "",
  "@type" : "LocalBusiness",
  "name" : "My Business Name",
  "image" : "https://domain.tld/home/logo.png",
  "sameAs": [
    ],  "email" : "info@domain.tld",
  "telephone" : [ "+66 80 123 4567", "+66 81 123 4567" ],
  "address" : {
    "@type" : "PostalAddress",
    "streetAddress" : "99 Moo 99",
    "addressLocality" : "Sansai",
    "addressRegion" : "Chiang Mai",
    "addressCountry" : "Thailand",
    "postalCode" : "57890"
  "openingHours": "Mo,Tu,We,Th,Fr,Sa,Su 00:00-23:59",
  "aggregateRating" : {
    "@type" : "AggregateRating",
    "ratingValue" : "4.8",
    "ratingCount" : "37"

Structured Data - Breadcrumbs

Breadcrumbs need both markup and display (so that they are functional for visitors). This will best be done on every page in the main loop, so that categories and parent pages can be used to generate breadcrumbs, and with the use of microdata (rather than json-ld). The example from is as follows, and it should be straightforward to generating these breadcrumbs from WordPress category membership and parent pages (and multiple can be supported). Note that the code below was only enhanced by wrapping both breadcrumb trails in a paragraph <p>...</p>, inserting a <br /> between the two trails, and adding style="display:inline;" to the ordered lists and list items (ol, li).

    <a href="">
    <a href="">
      <span>Science Fiction</span>
    <a href="">
      <span>Award Winners</span>
<br />
    <a href="">
    <a href="">
      <span>Speculative Fiction</span>

Breadcrumb Support in WordPress

There is a very useful Breadcrumb NavXT plugin that, along with the Order Bender plugin, is able to produce a canonical breadcrumb trail with a lot of flexibility. One thing it does not do, however, is produce more than one breadcrumb trail. This feature request has been accepted by the plugin author as an assigned issue, but there has been no visible progress on this issue, as of 12 October 2016.

Structured Data - Article, Course, Product

  • Articles are the most common data type for a page, review above for best practice with this.
  • Courses data type is still going through the approval process, but Google already supports a few fields. This should be done one per page in JSON-LD.
  • Product are likely the most common item for ecommerce.
  • Service does not appear to have support from Google, better to shoehorn into Courses, Products, when possible.

Article Structured Data Example

  <h2>Article headline</h2>
    By <span>John Doe</span>
  <span>A most wonderful article</span>
    <img src="" />
      <img src="" />

Course Structured Data Example

  "@context": "",
  "@type": "Course",
  "name": "Introduction to Computer Science and Programming",
  "description": "Introductory CS course laying out the basics.",
  "provider": {
    "@type": "Organization",
    "name": "University of Technology - Eureka",
    "sameAs": ""

Product Structured Data Example

  "@context": "",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": "",
  "description": "Sleeker than ACME's Classic Anvil, the Executive Anvil is perfect for the business traveler looking for something to drop from a height.",
  "mpn": "925872",
  "brand": {
    "@type": "Thing",
    "name": "ACME"
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "119.99",
    "priceValidUntil": "2020-11-05",
    "itemCondition": "",
    "availability": "",
    "seller": {
      "@type": "Organization",
      "name": "Executive Objects"

Structured Data - Video

Video markup helps Google discover and frame the video for search results. Only useful if the video is not on other platforms for discovery and indexing.

Structured Data - Events

Events are focused around tickets and performances, rather than larger scale things like holidays. It is about as constrained as the Facebook Calendar, not useful unless one is selling performance-type event tickets.

Article, Course, Product Microdata

Given that a given web page could be one of each of these (or neither), automatic generation of breadcrumbs for these should be as straightforward as the breadcrumb microdata. The exception (besides the article) is where the data will reside to be pulled. For articles, it can be as simple as the title, description, author, and date published that is the article metadata. For course and product, additional information can reside in WooCommerce. Alternatively it would just be a matter of additional page metadata that could be accessed. One way of implementing this would be a custom post type and/or a custom theme template that would provide the information. Another is producing a plugin that would do the same thing (and would be much easier to implement across multiple sites, and multi-sites). As well as a plugin, an accompanying widget might be useful, and could be placed above the main loop, just beneath the WordPress Article, Course, Product Pseudocode

For current page, if has tag *course*, generate course microdata;
elseif has tag *product*, generate product microdata;
else generate article microdata;

Note that the use of Sensei LMS and WooCommerce already puts courses and products as custom types, and so simply querying the post type, or just having different templates for each custom type, should do the trick.

Posted on Leave a comment

Import Adwords to Bing Checklist

This is a handy checklist since Bing conveniently forgets a few settings, and also doesn't fully support a few features (and so generalizes, naturally). - Currency differential in bids and budgets. Bing treats a number as a number, even when Adwords campaigns in Thai Baht is imported into a US Dollar Bing account. Use the bid adjustment. For example, lower the bid by -90% then by -70% for THB to USD. - Do this on campaign budgets, ad group bids, and keyword bids. - Native Ad bid adjustment, set to -90%. - Display network bid, set to 0.05 USD (lowest amount possible). - Under devices, Mobile and Tablet bid adjustments appear to be fine, but check them. - Country targeting is changed from people in your target location to include those searching for, or showing interest in the targeted location, switch back. - Bing metro area targeting in some places is fairly poor, and so one needs to do proximity targeting. In any case, Bing will generalize from a metro area it doesn't recognize to an entire country. Check all geo target settings. - Negative keyword lists are not imported, so recreate and apply to campaigns. - No display ads are imported, have to recreate and add to ad groups.

Posted on Leave a comment

Google Adwords and Organics

I've spent time recently in Google Adwords and things are as or more complex than ever. I'd say more. Here are a few issues that confront the Adwords User: - Ad display - Ad extensions - Keyword match types - Ad group to keywords to ads configuration - Dynamic ads - Tracking templates - Landing pages - Quality scores

First Principles with Google Adwords

  • Simplicity
  • Actionability
  • Human-focused
  • Bidding is key
  • Campaigns, Groups, Keywords, Ads

Simplicity begins with the singular

The very first principle needs to be simplicity, for management of complexity takes time and introduces more error. However, the simplest campaign would likely be a single keyword, a single ad, and a single geographic market. That is simplicity, not the dump everything together into a stew. So we should start by building up rather than breaking out. Of course we all make this same fundamental mistake.

Too little data is not actionable

There needs to be enough data from a set of parameters in order to have actionable intelligence. This means that if you are setting up 100 ads for a low frequency keyword, there will never be enough data to decide which ads are better. Therefore, ensure the traffic patterns justify experimentation at low levels.

Landing pages are for humans

Landing pages are for visitors, who (mostly) first encounter the website at that page. There should not only be a match between ad, keyword, and landing page, but a match between human, landing page, and site. This of course means low quality content, which means irrelevant content, is content that is irrelevant to a high quality, highly relevant human. Focus on the relevant human, then derive the relevant content, the relevant landing page, the relevant keywords, and the relevant ad. Yes, there is always a bit of research, guesswork and error, but the feedback of conversions helps guide these things.

Bidding is the key to campaign management

I've embraced this as a core concept. Campaign management is not managed by a budget, but by a bid. Manage the bids, and you manage the budget. And bids need to ultimately get to a reasonable price per customer acquisition. Of course one needs to know the value (or lifetime value) of a customer, but for the small business that means at the most, the profit margin for a given transaction (conversion), and relative to other marketing channels (and their volume). In some cases, with time-based goods and sufficient inventory, the profit margin can be sufficiently gouged by marketing costs, as what is left becomes free money that will expire (provided there are few variable costs and quality can be maintained at a higher volume). For a given set of keywords and match types, a set of ads and landing pages, there will be costs per conversion. It is simply an optimization task to find the place where profit per month is maximized. The main fixed parameters are market size (in terms of keyword search). Bidding is the key to campaign management as well, because bids, relative to other factors, will provide ad positioning, which may have an effect on cost per conversion via both conversion rate at a given position as well as CPC. And finally, reach factors are also driven by bid, namely higher bids will account for more first page ads, which are more plentiful than second, third, fourth page ads, in general.

First things First - Geographic Campaigns

Geographic targets, which can actually be metro area-focused, are essential. Since this is a Campaign-level variable, that means each geographic segmentation is in fact a campaign. This means campaigns need to be created first, targeting geography, and also segmentation at the level of search vs. display (if any display is needed).

Second things Second - Ad Groups

Ad groups can be single keywords (SKAG), but also any groups that might share an ad. Bidding is at the level of the ad group, but keyword-level bidding can override. However, for any given ad group, only a single keyword bid may be entered, and applies to all ads in that group. For granularity, any given ad group can have one keyword (or more) and one ad (or more). Single keyword, multiple ads -- or -- multiple keywords single ads can provide information (but the two together have a more muddied response. Only ad is displayed for a given account, for all campaigns, for a given search, and those ads are determined (among other things) by the best match of keywords (given more than one). We don't want campaigns competing with each other, as that is where budgets are set, but multiple ads for a keyword match can be useful.

Third things Third - Primary Keywords

Actually, primary keywords are first things, but not the order for dealing with Adwords. Take the primary keywords, the ones that define a category, and do extensive permutations. Usually this is a thing + place keyword combination, but can be anything, really. Bidding will be adjusted based on conversion costs, but that does require a lot of data. The point is to guesstimate and do enough bidding to find out the search volume with major permutations. Focus on negative keywords as well, but be careful not to be trigger happy there.

Fourth things Fourth - Landing Pages


Fifth things Fifth - Ad Permutations


Finally, the Bid

Yes, the most important, but it comes last, though there are obviously intimations and estimations come at the beginning, but really a bid is a tool to achieve reasonable customer acquisition costs while remaining within budget.

Posted on Leave a comment

Bing, FB, Google Tag Managers

Facebook, Google Adwords/Analytics, and Bing all have moved their tagging for conversations and tracking page views and other activity, over to their respective Tag Managers. - For Google this is called the Google Tag Manager - - For Bing this is called UET Tags and Conversion Goals (UET stands for Universal Event Tracking) - (link to Conversion Tracking on left sidebar on Campaigns) - For Facebook this is called the Facebook (Universal) Pixel - All of these systems were done differently in the past. So first a set of conversion steps needs to be implemented in order to get everything corrected (legacy pixels, conversion tracking and tags will be discontinued shortly).

Nature of the Tagging System and Code

First, each of the code is a javascript with a fallback (noscript) to an invisible pixel. Each of the systems are meant to capture behavior on all pages. Each of the systems allow for customization of conversions and other behavior on the 3rd party website (Google Tag Manager, Facebook Ads, and Bing Ads). This makes things a bit simpler, as the website no longer has to have scraps of conversion code in different places. It makes updating the website a lot simpler (as that half of the equation is no longer needed).

Where things are in Google

For the Google system, things are a little more complicated. For one, a Google Tag Manager Account and Container needs to be created (a container is equivalent to a website). And then Adwords conversion tracking and Analytics need to be recreated inside the GTM. This means that Analytics and Adwords are still needed, and conversion tracking for Adwords still needs to be set up in Adwords. It is just that in order to get the GTM tagging to work, the definitions need to be duplicated from Adwords to GTM. In sum: - New GTM tag code and interface (looks a lot like Google Analytics) - Adwords conversions still created in Adwords, but also duplicated in GTM - Analytics still created, and duplicated in GTM - Remarketing is set in the Adwords tag in GTM, Remarketing audiences are still defined in Google Analytics (and then duplicated in Google Tag Manager), and remarketing audiences are used as targets in Adwords Note that: Everything that used to be tracked by Adwords Conversion code or Google Analytics code needs to be redefined in GTM so that the information can be tracked (and used) without the previous code/application knowing about it. The only exception is for remarketing audiences created in Analytics are still available in Adwords, without having to be recreated in GTM (and I believe it is easier to still manage them there).

Why We Care About GTM

Firstly, this is where Google is putting all their effort and it is also a way to do across-device (and user) tracking. Also, there are vast improvements in what can be tracked and in ease of use in how to track things (such as clicks on outbound links, form fill-out progress (e.g., how many fields were progressed through before abandonment or submission), enhanced ecommerce tracking (progress through a site, basic shopping behavior). In any case, it is one now essential tool to use to capture visitor behavior on sites (though not replacing Analytics or Adwords, it does the job for tagging the site and also for being a central clearinghouse of the data.

Where things are in Facebook

Facebook's Pixel can be found under Facebook Ads > Tools > Pixels. There are old conversion tracking pixels (that will go away soon) and The Facebook Pixel. Each advertising account gets a single pixel, and a single name for that pixel. The idea is that a pixel represents an account for Facebook. Even with multiple sites, there is one pixel. However, there are also Custom Conversions which are used to define conversion behavior (for a given site or action). Because the Facebook Pixel is meant to be general purpose it can also provide general page view information as well. In addition, with the pixel, custom audiences can be defined for remarketing (e.g., Facebook users who visited the website in the past 90 days).

Where things are in Bing

Big is fairly straightforward, though like Google Tag Manager, a separate container needs to be created for each website/application being monitored. Bing calls the containers UET tags and then has Conversion goals.

Process of Migration for Facebook

To begin migration, Facebook is the easiest: - Name and get Facebook Pixel code (this is used on all sites for a given account). Add this to the website (we are currently using the HeadSpace plugin) - Check to make sure the code is working using the Chrome plugin Pixel Helper - Create new custom conversions to replace the old conversion pixel (they will cease to work in a few months) - Note that there is a limit of 20 custom conversions per account. They would rather have people set up reports and modify the Facebook pixel, then configure via custom tracking, which allows one to not have to change the Facebook pixel. - Also, choose unique rather than all for conversion tracking. Because people can click and reload, it is important to only count one conversion for a given session, not multiple. - Go into Campaigns > Ad Sets and change conversion tracking to Track all conversions from my Facebook pixel - Remove all custom Facebook code remnants on any pages on the website Note that Facebook Custom Conversions are unable to be deleted or edited, so that basically destroys the functionality. Support call has been submitted to them to help delete. Otherwise, just look to Google Analytics for the conversion info, rater than Facebook. ## Process of Migration for Bing For Bing, the process is similar to Facebook, but there needs to be a unique UET tag for each website property (or application). - Create the UET tag for a given site - Get the code and paste that into HeadSpace - Use the BigAds UET tag verifier plugin (it doesn't always work, but if it does give a verification, everything is working (no false positives, but there are false negatives) - Create all the conversions needed for each UET - Remove all the remnant Bing conversion code in the website Note that the conversion goal and remarketing list uses the same UET (similar to Google Analytics which is essentially a per-site configuration). Note that unlike Facebook, conversion goals do not need to be associated with Ad Sets (called Ad Groups in Bing). A final note, Bing has already cut over to their new system so conversions can only be tracked after migration to UET tags and Conversion goals. How to create Remarketing Lists/Audiences in Bing: Note that custom events can be created and added to Audiences, such as those viewing a certain page, or a video, or clicking a certain outbound link:

Process of Migration for Google Analytics/Adwords tagging to Google Tag Manager

Google Tag Manager is similarly structured to Google Analytics in terms of multiple GTM accounts can be managed by one or more Google accounts, and each GTM account can have one or more containers which are the equivalent of a website or application (as with Google Analytics, several sites can be tracked within a single container). - First, create a Tag Manager Account, and inside that account, create containers. - Each container will have GTM code to install on each website, do so in the HeadSpace plugin - Remember to click the Publish button after any changes, as there is a complex versioning system at work that is not real-time. - For each container, add the appropriate tags, including - Google Analytics - Google Adwords Conversions - Google Adwords Remarketing (not necessary, as Analytics remarketing audiences can be used in Adwords) - duplicate the Shared Libraries > Audiences for the site (all users) in Adwords) - Note that more complex remarketing tags still need to be defined in Analytics > Admin > Property > Remarketing > Audiences, or they could be created in Google Tag Manager, though that leaves out the Analytics data. - Use the Chrome extension Tag Assistant (by Google) to ensure that the tags are working

Advanced Settings for Google Tag Manager

There are some fairly high level ways of using GTM for various dynamic retargeting and slicing and dicing up audiences. This really works best with a very large (and complex) visitor set. In general, I think it is still easier to create audiences in Google Analytics, as that is where analysis is generally done. Yes, conversions need to be created in Adwords (just as they do in Facebook and Bing) but Audiences are better created in Analytics (though of course Bing and Facebook need to be done on their own sites, respectively).

Some GTM resources.




Posted on Leave a comment

Internet Marketing Email Needs

The two kinds of email: marketing and transactional, and the need to manage this has resulted in a proliferation of solutions from various providers. Marketing email consists of messages to the customer from the organization; transactional are messages to the customer by the computer system (e.g., invoices, receipts, email list confirmations, contact form submission confirmations, unsubscribe confirmations, etc.) All of these solutions are quite expensive, and to a large degree lacking. Why is this the case? How have we come to this, after decades of very simple systems?

Simplicity is in the Requirements

In order to simplify, we need to keep to some very basic requirements: - Secure - Affordable - Useful


By secure we mean relatively hardened and trusted. This mean the basic mail server needs to be configured properly and effectively, but also the various cues and clues to legitimate sending and receiving: DNS DKIM and SPF. Email systems should not allow third-party relaying (of course) and in no way give off signals of being insecure (that is, get on blacklists for spamming). Also by secure we mean that the emails (and any associated transactional or marketing data) are themselves stored securely, sent securely, and assured of delivery, as well as visibility into any errors that occur.


Basically we want open source software and the ability to run the systems ourselves, as well as the option to outsource it at or below the time-cost of self-management.


There are only a few actual needs for mailing list management, because of the fairly straightforward lifecycle of lists: - Subscribe via a form on the website - Integrate with other forms/ecommerce to auto-add - Double opt-in (for both self-initiated and transaction-initiated) - One-click unsubscribe - Multiple lists - Open and click tracking of messages - Simple graphs with comparisons of previous messages - Hard/soft bounce behavior management

Posted on Leave a comment

Englishes, Websites, and Country TLDs

The issue of various Englishes is one that can help increase customers when targeting different native English speakers from different countries. English as we know is not monolithic, but most sites have a single site per language. The complication there is of course flags are used, so either a British or American or some composite monstrosity of a Brit/Yankee flag is used.

Country Code TLDs vs. Language-specific Sites

This is confusing and potentially off-putting. The idea then would be to have websites that would be country-code-tld with natural geographic targeting. And so, a Canadian site with a Canadian TLD. Since Canada actually has two official languages, there needs to be a way of switching between them on that site. The best approach therefore is written text. In sum: - Flag for country (can also be used for favicon) - Text for language change in a given country

Language choice on Websites

Language is an issue for SEO and so it is likely the best approach to have separate sites with separate languages. That is, for a country like Canada (using ISO-3166 codes) as represented in browser language codes: - en-ca - en-fr Note that in many cases people are not in charge of their browser language settings (borrowed or public computers, original configuration different than desired, etc.) In this case, actual geographic location can be used to help determine country and language choice. Though always both country and language options should be selectable.

What Language and Words to Say Change Me?

It is always a bit odd. The main situation is when a potential customer is on a website that is in a language one wants to change (and especially for languages one does not understand). It is not helpful to hide language/country options somewhere in a settings menu (for that menu cannot be easily read by the visitor). Nor is it helpful to simply have that text in the same language as the site (again, it cannot be read). And so the following kinds of text are not helpful: - Settings - Change language - (Current language name) Even a particular flag/icon for a country is not necessarily useful. A flag designates a country, but a language choice is needed. One prime example is the horrible decision to not support English on the Thai Apple website (yes, they used to and no, they do not any longer). A Thai flag doesn't help (as that represents for Apple both a location and a language now). What should be done? We start in a given country. If there is a large enough minority population who know only a second language, then that language should be available, starting at the level of the country.

Language and Country Selectors

It is useful to have these as drop-down menus: - Change Country - Change Language However, again, we have the problem of reading these in a language one does not know. So it may be useful to have a dedicated page with the various options. This is what Apple does, which is not a bad option (other than not having the correct language support available). - An icon of the Flag of the country. - The name of the country (in the predominant language) - A mouseover that says change country (in the predominant language) - A URL that includes /change-country/ (in English) However, this could be improved as follows: - Icon of Flag of current country (same as cc-tld), no change - The name of the country in each of the languages supported on that country code, e.g., ไทย / Thailand - A mouseover in each of the supported languages (e.g., เลือกประเทศหรือภูมิภาค / Change country) - A URL that includes /change-country/ (in English), no change

Which languages to support

Apple is very confusing in terms of a language strategy. Their sites in Viet Nam, Malaysia, and Israel (just to pick three examples at random) are in English. Yet there is no option for English for Thailand (which has a much larger number of expatriates and tourists who could take advantage of such an option). I really think there is a huge failure here. To be didactic, the languages to support are the languages of the customers and potential customers.

Which Englishes and which domains

There could be an initial, generic English site using a .com domain, and American English text. From there, especially targeting the various English-speaking countries (and with TLDs: - en-us .com - en-gb .uk - en-ca .ca - en-au .au - en-za - en-nz .nz - en-ie .ie For countries like Canada, it would be effective to cover both languages with: - en-ca - fr-ca Note that if one does not want to pursue the cc-tld tactic (especially if geographic location is not important for servicing a country (e.g., a local location does not exist), then individual languages can be targeted using subdomains on a generic domain: - - etc.

Posted on Leave a comment

Affordable WordPress Ecommerce

There is a runaway train of add-on fees, mandatory subscription fees, and per-site costs for reasonably functional Ecommerce on WordPress. Why is that? We are not referring to fully hosted solutions, or custom development. But merely WordPress Plugins that work reasonably well, are reasonably stable, and are updated reasonably often.

WooCommerce - The Good and the Bad

WooCommerce is now the leading WordPress ecommerce system, and therefore one of the most popular of all systems. It is pretty good as a solution, and while it has its quirks, the massive user base (and cash cow) keeps updates going as well as a user base that means compatibility with other systems is quite good. The problem comes down to their business model which means that certain integration options or third party tools that integrate with WooCommerce are licensed at a very high fee, and limited to a certain number of sites. As well, the per year fee structure kicks in (basically updates and support are denied for future versions without additional payment). While some may claim this is the only way to continue to deliver a quality product (that is, make a lot of money), this artificially constricts the number of potential buyers and therefore the idea is high cost, low volume (or medium volume, if you are lucky). Not a great proposition for the buyer. Other models are indeed quite viable, though they seem to escape those who get a nice revenue stream from referral/affiliate fees. > Protip -- if someone uses a single license on 1,000 sites, that doesn't mean there will be 1,000 support calls, since it is licensed to a single person or organization. At the same time, those organizations, e.g., large school systems, that have many sites and no budget, by using a given product, will make it way more visible and encourage additional customers through word-of-mouth and simply much better exposure.

An Approach to WooCommerce Integration

Clue one is to use WooCommerce, but not buy Woo-licensed or Woo-influenced third party tools (iThemes is another offender). Instead use reasonably licensed tools that have integration (usually free) with WooCommerce. There are several options, but go with those systems that are functional, stable (aka have been around a while and are reliable with updates), and provide good support. My favorite for Ecommerce is the oddly named Tips and Tricks - HQ. We first purchased a bundle of several of their products on 21 March, 2010. Yes, that is right, their products still work, more than 5 years later, and support has been stellar. While we did have some trouble with the PDF Stamper (and got a prompt refund when we couldn't get it to work), We've used many products for years on end on multiple sites, and feel the money paid has provided exceptional (actually, unbelievable) value. Especially when dealing with Ecommerce, a site needs to function properly or there will be a money problem.

Tips and Tricks HQ WordPress Plugins

Here are some of the plugins we use currently and have used in the past: - WP eStore - WP Affiliates - WP eMember - WP Affiliate Link Manager - WP Simple Paypal Shopping Cart - Note that this is a free version (with less functionality) of the WP eStore. This isn't a crippled version but just has fewer features. And is free. Note that they have various bundle options for combinations of products. Here is the complete list of free and paid plugins. Integrations of Tips and Tricks HQ plugins with Woo Commerce (all free): - WooCommerce Coupons with WP-Affiliate - WooCommerce and WP eMember - WooCommerce WP Affiliates advanced integration

LearnDash - Courseware / LMS

For courseware / LMS (learning management system) software that has good WooCommerce integration, there are several options. We've looked at LearnDash, Namaste, Sensei, WPCourseware, LearnPress, and CoursePress. Some of these have a bad cost structure (monthly ongoing payments) and/or are less mature/less functional. The one we recommend is LearnDash. While it does have a yearly price (50% of purchase price) the cost is reasonable and includes unlimited sites. It also happens to be the most advanced in terms of actual LMS support, such as integration with SCORM / Tin Can API. LearnDash integrates forum functionality with bbPress or BuddyPress. In addition, premium plugins are available for extended functionality, such as multiple instructors/courses that allow for commission structures, multiple courses offered by multiple instructors, each with their own access to their own courses only. While LearnDash doesn't provide functionality for all features one might desire, it covers the bases quite well, and emulates standard classroom practices.

Summary of Ecommerce on WooCommerce

In conclusion, we recommend WooCommerce as the core ecommerce plugin on WordPress, but the use of Tips and Tricks HQ plugins (and integration plugins) for other functionality (specifically WP eMember and WP Affiliate). We also recommend LearnDash as the LMS / Courseware plugin. WooCommerce acts as the hub and very functional extensions with better licensing, and solid, reliable performance are added for an Affordable WordPress Ecommerce Solution.

Posted on Leave a comment

Internet Marketing = BAWLS

In a word, Internet Marketing (not the spamming stuff, but the real thing) is BAWLS. Brand, Advertising, Website, Links and Content, and Social Media. BAWLS Ooo .


Brand name, collateral (visuals, text), offering, value to customers and competitive strategy. Includes pricing, keywords, as well as customer demand.


Paid and earned. Will drive traffic either to social media profiles or to the website. Can be on third party websites, search engines as well as social media (increasingly).


The center of content and interaction. Needs to be managed and monitored. All analytics are based here, though social media engagement has its own metrics, as well as advertising analytics. ecommerce is a part of this. But if selling through Amazon and Ebay, then the profiles and other information on those sites would be a part of this element.

Links and Content

This includes content on the website, links syndicated to social media, as well as content provided on third party sites. Directories and other marketing partnerships are here. This is the attractors of organic search results. Affiliates are here as well.

Social Media

A certain kind of third party site, which allows for friends/followers, direct communication and conversation, and syndication of links to content on the website.