Home » wordpress

Tag: wordpress

Send email reliably from WordPress

I am getting close to 20 years of putting together websites for myself and other people, and I have seen a shift happen with email, both in what is possible and what the expectations are. 

In the “old days,” you would get a hosting account for your site, and the email would magically work every time you would need to send one. 

This setup worked because the email protocol itself is very open and interoperable, so it is straightforward to send an email to someone, as long as you have their address.

This openness also invited spammers, who abused the system, making it harder for everyone to send and receive genuine and relevant communication. 

Today, most people expect that email will work “like it used to,” but what is more likely to happen is that all the emails you send out of our WordPress site will not reach their destination. You will not notice this problem unless you specifically test for it. Instead, you will see a lack of engagement or customers complaining they did not get their download links. 

There are a couple of solutions to this problem that are free, but I will present the most effective one: buy a paid email delivery service. 

When you pay for your email delivery service, there are some significant advantages over a free solution:

  • you immediately set yourself apart from the spamming crowd that is using the free solution
  • you have dedicated tools and reports to monitor that your email is delivered and reaches its destination
  • you get support with configuring the email sending process correctly, which is not trivial
  • you get analytics – which is essential for a business owner
  • someone (the service provider) is directly responsible for delivering your email and making sure the process works as expected

Unfortunately, I have seen a lot of people shy away from paying for email. Put your business hat on and think of it this way: how much money and (more importantly) how much time are you wasting with lost emails, with dealing with un-happy customers, with the uncertainty that your outbound messages reach their targets? I bet that the numbers you come up with more than make up for the cost of a paid email service. 

What email service should you use? 

In the past, I have worked with SendInBlue, SendGrid, and Mandrill. Today, my favorite one is MailGun. I am not an affiliate; I recommend them because (as I write this) they offer the best value for money. 

To connect WordPress to Mailgun, the plugin to use is WPMailSMTP.

How much for a website?

There is no such thing as the right price for a website. You can have something for any amount you budget. 

It may be better to shift your question to “Why do I want a website in the first place? What do I expect to accomplish?” Once you find your answer, it will be much easier to assign a budget that makes sense for you. 

A quick example: 

Say you want to build an eCommerce site that will bring in $200k in revenue per year. In that case, it makes total sense to invest $20k to $50k to have it built professionally.

Another example:

You are just starting, you don’t have an audience yet, and you need to test an idea. The expected revenue from this project could be as low as ZERO. Paying 20k for a test doesn’t make much sense now, does it? Perhaps this is a good situation where you need to look at some free options first. 

How to think about website costs, price, revenue?

A common misconception that I see is to think that all that you need is the web-design, which means a page on the Internet that looks like the picture in your head. There are plenty of tools to help you build that pretty picture for free, but once you have it, what will you do with it?

The most significant investment in building something is in marketing—finding the right people and presenting the right message for them. Once you figure out what you want to create, for whom and what it is the best way to engage with the audience, the web design part is super easy: mostly fill in the blanks. 

To better illustrate this, let’s have a look at some options.

The Free Website

With today’s tools, you can have a professional-looking website for free. This approach is an excellent way to test your ideas with no dollar investment. Use this to build up your writing skills, get some feedback on an idea you have in your head, start a conversation about the thing you want to create and get a feel for what it means to manage a website. You may discover that you are sitting on a gold mine or that nobody cares.

The $250 Website

You have now moved to a paid hosting company and under your own domain name. 

The advantages you get are:

  1. you are signaling that you are taking this more seriously – if you invest in hosting and a custom domain name – that will set you apart from everyone using the free places. 
  2. you begin to build your brand – as people will now use your domain to get to your content.
  3. you get more customization options and more flexibility.

You may still not make money from the site, but the $250/year investment is not too big, and you are learning a lot. 

The $1,000 Website

At this point, you have an audience that trusts you and visits your content, and you believe you could help them with a paid solution. You deploy an e-commerce software on your site: a shopping cart (like WooCommerce), a payment gateway integration (like PayPal), a newsletter service (like AWeber), and maybe video content (on YouTube).

If your content is engaging and consistent, you may recoup your money in one year, so you are on to the next level. 

The $5,000 Website

At this price point, you already have customers, you know what they like, you know what they would like improved on your website, so it makes sense to buy a custom design to solve these specific challenges. 

You are also doing much better automation and integration of your tools. You will make regular backups of your content and customer list because now a loss of data will be costly. You are building up your analytics to help you make better decisions in the future.

You do expect to make somewhere between $30k to $60k per year in revenue.

The $10,000 Website

At this stage, you begin to optimize your site. You think about speed, caching, search engine optimization, user experience improvements, tracking your metrics. You are doing tests with your design and your messaging to see what works best for your audience. You may also choose to move away from platforms like WordPress and into dedicated software that better fits what you and your audience want to do. 

The revenue expected is between $80k – $120k. 

The $50,000 Website

Here we are usually talking about a major overhaul of your online presence. You will do much research and many tests, and studies about your audience and with your audience to make sure this next level is a perfect fit for them. You may hire a branding agency to fine-tune your online identity and create a unified feeling experience for your users, regardless of where they find you. Things like your logo and color scheme become very important. 

You will get automatic publishing and tracking tools to update your content across social media. You will build a managed community for your audience, where they can connect and learn from one another. You will have a team of people around you, helping you manage all the systems. 

A big part of this investment goes into research and marketing. If you get that right, then choosing the correct technology is very easy. Choosing the wrong technology can be very costly at this stage. This is why it makes sense to research first and build later.

The expected revenue is over $300k.

Conclusions

You can use the value you expect to create with your website and form that work out what kind of a budget makes sense to invest in getting there. 

The bulk part of that investment will go into marketing:

  • Understanding your audience.
  • Making you a better communicator.
  • Spending time engaging with your community.
  • Finding better ways to help. 
Spiritual Software Engineer

Improve your website performance by separating concerns

The problem

I have a slow WordPress site that will resist all optimization attempts.

What is the most common advice you get for speeding up a WordPress site? 

  • remove unused plugins
  • update all the software
  • use the latest version of PHP 7
  • install a caching plugin

This list is all good advice and things to reach for first, but what do you do when your WordPress install still takes 13 seconds to load a page, even after all the optimization is done?

In my case, the problem was that the website was trying to do too many things. And the optimizations above did not help much. 

Here is what I mean:

  • the website had multi-language support
  • contact forms done with Contact Form 7
  • subscribe popups using NinjaPopus
  • animated sliders on the homepage
  • hundreds of blog posts
  • a WooCommerce store 

Because of how WordPress works, all items were loaded, regardless of the page you were looking at. The multi-language setup was not working well with the caching system. And I could not uninstall any of the plugins because all of them were needed somewhere. WordPress does not do selective plugin loading.

It drove me crazy that I would need to wait 13 seconds to open up a blog post that would request hundreds of resources (CSS and JS) that it did not need. It was a page with one image and some text but a truckload of “invisible add-ons.” This page should load in milliseconds!

Some have suggested writing yet another plugin to remove the unnecessary scripts from the pages that don’t use them. I understand how that would improve the loading time, but on principle, I don’t want to have code that adds stuff, so then I can immediately remove it a few microseconds later. That’s just bad practice

I came up with the solution to split the site into two: one for the simple blog and one for the store. I also dropped multi-language support. 

The Pros

  1. The blog is made up of static pages – so you can deploy very effective and aggressive caching.
  2. I could also split the plugins – there was no need for the blog to load all the WooCommerce code.
  3. The store site could focus better on selling and keeping the buying experience smooth. 
  4. The improvement in performance was dramatic, as I could now optimize each part independently, without conflicts
  5. A bonus side effect is that I can now work on the blog and not worry that the store will be affected and vice-versa.

The Cons

  1. There are now two websites to maintain and think about.
  2. They need to look the same in design, so they feel part of a whole.
  3. The search function is now limited – it either returns post or products – depending on where you are using it.
  4. Tracking the user activity is more complicated.
  5. Adding multi-language support means adding a new site for each language – which does not make business sense right now.

There is an obvious trade-off here. There are more pieces to take care of, but you get to optimize each one individually and fine-tune them for their specific purpose. 

In Conclusion 

If the common performance tunning is not doing much for you, maybe the structure you have is too complex, and your website would benefit from being spit up into smaller but more effective pieces. Of course, this effort only makes sense if having fast loading pages is essential to your business. 

Quick SEO Setup for your WordPress website

SEO is a large and complicated subject. And it can feel challenging and overwhelming to get everything right.

However, it is essential to get it right because it affects the “first” impression that your potential customers have when they are about to click a link on Google or Facebook that sends them to you. Not to mention the amount of organic traffic that you will get.

The easiest way I know to add this to your WordPress site in a technically correct way, but a breeze to configure, is to use the YOAST SEO plugin.

I am not associated with them in any way, but I do recommend them as I used them on all my WordPress websites.

After the initial plugin install, it will guide you through a configuration wizard. You will answer simple questions, and in the end, everything is configured for you.

Every time you write a new post, or create a new page, take some time to inspect the Yoast block as it will have recommendations about how to improve your SEO for that particular content.

What I like most is the super-easy way to control the image and description that social media platforms will use with links to my websites. It takes the guesswork out of it, and you can even add different images for different platforms if that is important to you.

Subscribing to their free newsletter is another good way to get free SEO training and reminders to keep your website in shape.

Using WordPress as a Prototyping tool

Creating a prototype for your product or service is an excellent idea. It allows you to do some research before you commit to a specific solution. You can test various layouts, various interactions, and you also have something to show to your investors or your target audience to check with them if this is something they would spend money to buy. And the cheaper the prototyping, the more tests you can do, and the more information you will have when you want to build the real product or service. 

A prototype has only very basic functionality, and it is used to get an idea of what the user interaction will be like and what possible challenges may show up in future development. Because it is so simplistic, you can choose any technology you want to create your prototype. It does not have to be the same tech you will use for the real product. And this is important because you can choose something free, or something that you know how to operate.

In this article, we will focus on WordPress. Why? Because it is free, it is a common platform, it has a rich plugin environment, and the new block editor makes it ideal for quickly creating complex layouts. 

All you need to do to get a free WordPress site is to head to WordPress.com, create an account, and start a new website using their free plan, and now you are ready to begin prototyping. 

Go to your website’s dashboard and create new pages using the block editor. It is almost like using lego pieces to build something. 

You can create multiple layouts for the same test page; you can create links between pages, simulating a user interaction, you can test how it will look like on a mobile screen, play around with various font faces and sizes and so on. 

As a bonus, you can activate the comments feature and use that to document feedback on the pages you are putting together. 

Using the Free plan on WordPress has some significant drawbacks:

  •  you cannot use custom CSS to finetune your design
  •  you cannot install plugins 

Depending on the complexity of the prototype, you may not need either one of them, but if those are important to you, then you can install WordPress on a shared hosting plan and unlock the full power of the platform. 

Closing Notes

I know that WordPress is not a prototyping tool. For more advanced use-cases, you will find it limiting. In those situations, you are better off investing in some dedicated tools like WebFlow, or Sketch, or Figma.

But as a playground, when you want to get a feel for how your idea will look like, and you want to have something to show to your investors or your audience, give WordPress a try.

Finally, all prototypes should be discarded when you go build the real thing. There is a big temptation to use the prototype for the live product, but please don’t. When you need to make something that is production-ready, start from scratch and do it right.

SSO – Single Sign-On – One Ring to Rule them all!

I am sure you have noticed most of the software services today that require you have an account allow you to “Login with Google” or “Login with Facebook.”

That is very convenient for your potential users and customers as Facebook and Google are so ubiquitous. 

The process above is a form of Single Sign-On. The user logs in only once into Google and then uses that login to authenticate themselves into various other software services that accept Google as an “identity provider.” 

The term “identity provider” is what Google and Facebook do when they allow you to use their services to authenticate your users. 

I was reluctant to use an external identity provider before, because I had assumed that it would mean that you do not “own” your user base, but instead Google does, and they could cut access on a whim. But that is not the case. If you request and are granted access to the user email, you can still get in touch with them, even if Google or Facebook will refuse to do business with you anymore, for whatever reason. 

So it makes sense to add such a feature to your service because it will make it much easier to adopt. 

For larger companies that manage multiple applications and services, it is possible, and it makes sense to implement their own Identity Providers to create the Single Sign-On capability.

Potential Pitfalls

A big challenge that I found with using Identity Providers is “session management,” which means keeping track of the “logged in user.” For example, if the user logs out of Google and logs in with a different account, your application needs to be able to spot this and create a new session for the new account. Otherwise, you risk exposing private data to the wrong person.

The Technical Side

Implementing Identity Providers and consumers it is relatively easy now because they are standard, so you can find ready-made libraries that will make the connection a breeze. 

The libraries I have worked with that I can recommend are:

For Php Composer:

– The PHPLeague / OAuth2-Server 

– The PHPLeague / OAuth2-Client 

WordPress Client Plugin:

– OpenID Connect Generic Client (this required some modification as it was not implementing all the requirements out of the box.)

The criteria I use when choosing a web hosting company

When choosing your web hosting company, it is useful to have your list of criteria well defined. 

You need to have this list before you start shopping around, or else you will be sold features you don’t need and, worse, missing business-critical ones. 

Below are my prioritized list and some notes. Keep in mind that as a developer, I prioritize flexibility over ease-of-use. 

  1. Enough disk space for what the website needs. When starting, 20GB+ will work.
  2. MySQL database – I don’t think there is any hosting without this, but make sure you have it.
  3. Speed – this usually translates into have SSD drives on the server.
  4. SSH access – I need this for automated backups and for the flexibility to add automatic maintenance script on the server. 
  5. Ability to send email – be careful with this; some hosting do give you this feature on paper, but it is not actually working because the email gets discarded on its way out, and there is no back reporting on it. If you have an online store and you need to send out order confirmations, lost email can be very frustrating to you and your customers. 
  6. cPanel access – I need this as a developer because I manage many websites, across many servers, and it is faster for me to work with a familiar piece of software. When cPanel is an option, I know I can set-up things quickly, and there are also plenty of diagnosing tools. Even if you are not a developer, you will likely hire one at some point, and it will be easier for them to help you with cPanel access. There is one more reason to have cPanel. And that is, you can quickly move to another hosting company, by simply exporting your cPanel data from the current hosting and importing it on the new one. Without this option, moving to a new hosting company can be troublesome and time costly. 
  7. Let’s Encrypt feature for automatic HTTPS – this important to have, or you will need to pay additional hundreds of dollars for it. 
  8. On-demand backups; You need to be able to do a full account backup at any time and do this for free. Backups are a form of insurance, don’t underestimate them. 
  9. Excellent support – this is close to the last option because if I have the ones above, I can usually sort out any issues by myself. But you may want this much higher on your list.
  10. Unlimited (or alt least 3) subdomains. Subdomains can be used for testing something out of sight from the main website. They can be used for multi-language websites. For memberships set-up. And in advanced cases for performance reasons. So make sure you can have some.
  11. And finally, there is price. I’ve learned my lesson well: cheap web hosting will cost you more in the long run, in lost business, frustration, and customer satisfaction.

If you plan to use a WordPress site, the hosting I am recommending right now is SiteGround. It meets my criteria as a developer, but it is also friendly enough to recommend it to non-developers, because of their fantastic support. 

Make good use of your Analytics data

Some people love looking at numbers, and some people don’t! Which kind are you?

That was a trick question because it does not matter. You have an online business, so you have to look at the numbers period. It is that simple.

I am surprised that even to this day, there are website owners who are not using Google Analytics. So by using it, I mean actually using it, not just having it installed. If you don’t have Google Analytics installed yet, this article is not for you 🙂

If you don’t like looking at the numbers, think of it as listening to their story.

What story can you learn by listening to your analytics data?

The most basic story could be: your site is broken! A sudden drop in numbers or an unexpected spike in errors is an excellent indicator that something is not working. The sooner you learn about this, the faster you can fix it.

Another story can be the “unexpected audience.” You may be assuming that a specific demographic or geographical region is visiting your site, but you may be wrong. Sometimes you may discover that it makes business sense to translate your offer to a different language, or to promote a page to a different demographic. Without analytics, it is challenging (if not impossible) to adapt to the changes in the market.

However, the most useful way that I am using analytics is to predict the future by looking at the past. Instead of guessing how many sales are you going to generate this month, you can use the past data to get a reasonable estimate of the monthly revenue. This allows you to plan ahead and to budget for your growth. It enables you to think long term, to strategize, instead of just surviving.

The second most useful way to use analytics is for tracking the success of your actions. Meaning: how will you know if the changes you have implemented have helped your business or not? This kind of tracking requires a bit more time to set up, but it is worth it.

It is an excellent idea to have the analytics code installed, even if you don’t know how to listen to the numbers yet. By the time you learn, there will be a story in your analytics data for you to interpret.

Installing the code

Google Analytics has good documentation about how to install their code. Also, most WordPress themes allow you to configure Google Analytics in their options. If a theme does not allow you to do this quickly, maybe it was not the right choice for your website.

For the more advanced users, I recommend using this plugin: PixelYourSite (https://www.pixelyoursite.com/)

How are you using your analytics data? Have you made any breakthroughs? Have you learned any hard lessons :)? Let me know in the comments below.

Keep your site up to date – good advice, but only in theory?

“Keep your software up to date!”

I am sure you have heard this saying many times, and in general, it is good advice.

However, let’s take a WordPress website, for example.

A WordPress site is made from the WordPress core and usually many plugins. You have many pieces in your puzzle. Not all of them are updated at the same time or in the same way.

In my experience, it happened more than once that an updated piece no longer fit with the rest of the puzzle. Auch!

Most update processes do a good job warning you that you need to do a backup first and to ensure the other plugins (components of the puzzle) are compatible with the update.

This approach puts the responsibility of “making sure that things still work” with the user. And not everyone can make that assessment. Also, let’s admit it, sometimes we are in a hurry or just plain lazy :). Ideally, a piece of software should not rely on a human to do the right thing.

I too used to be overconfident in the automatic updates process, and I would apply those every time there was a new update. Click, click, and I was done! What could possibly go wrong?

One time, I updated the store. We had a newsletter scheduled that we expected to generate much interest and I thought I wanted to offer the best and latest shopping experience for our customers. So I updated the store and was on my way. The next day I opened the email to a ton of complaints from our subscribers that the checkout is not working! A full email campaign wasted, not the mention that we looked totally unprofessional — that hurt both my ego and the sales.

What did I learn from it?

1. Updates can potentially be very painful

2. You never change the system right before a big promo campaign. (This feels like common sense now.)

3. You need to be extra careful when you update the part that generates income: the store, the “pay now buttons,” and the subscribe boxes.

4. After you update you need to test at least the critical functionality: add to cart, checkout, subscribe.

5. You better have good backups, in case you need to roll back.

It was not all bad, because I did have backups, so it was relatively easy to go back to the previous version. Moreover, I sent another email campaign with an apology and a second invitation to check out the offer. If I hadn’t had backups that would not have been possible to do.

Another thing I decided to implement is to write automatic tests for the website that can run in the background and make sure the critical processes are still working.

In conclusion: stay up to date, but be smart about it 🙂

The Challenges of an WordPress Online Store

Having an online store is a good idea. It allows you to make revenue from your website and your offering. That is obvious.

What is not so obvious is that some challenges come with it :).

I believe in being prepared! So, if you’re looking to start an online store, or to improve the one you already have, read on!

This article will focus mostly on WordPress powered websites and add some general principles as well.

Shopping cart or no shopping cart?

It depends. I much prefer the experience of a one-click purchase. And in some cases that is precisely what you want to offer to your customers. When you have a lot of products in your offer, and it makes sense for people to buy more than one product at a time (like three books for example), then you need to use a shopping cart. For WordPress, I recommend WooCommerce, and some custom work on top of that to make it more user-friendly.

Coupon or no coupon?

Coupons are an excellent way to reward loyalty and to get attention for your promotion. A one-click experience does not lend itself well to using a coupon. There are other tools in this case, like custom links. But a shopping cart (like WooCommerce) can easily use coupons. Just make it obvious where to expect a coupon code. The default user interface is sometimes confusing for people.

Guest checkout?

In most shopping experiences, you are required to create an account before you can place an order. And there is a good reason for that. It allows for later access to your purchase history and the downloadable files you may have lost.

But sometimes creating an account can be seen as too complicated and unnecessary. I prefer this method of purchase. If guest checkout is essential for you, make sure the tool you are using allows for it. Again I have to recommend WooCommerce as they provide for this feature.

Keep the conversation going

Depending on the kind of business that you have and your offer, it may be a good idea to keep the conversation going with your customers or to hold their hand as they discover your product. To allow them to grow by making a more advanced offer, and, why not, to learn from them. The tools to use in this case is WooCommerce integrated with MailChimp. I am personally not happy with what is on the market today, so I have had to create my own plugin that would add specific tags for specific products. This approach allows me to segment the audience or to trigger campaigns based on the product that was purchased.

Also beware, that for bigger stores, the official MailChimp plugin does not work anymore as you would expect. There are a lot of timeouts and missed notifications. Especially true for when you have a significant influx of orders (for example you’ve just sent an email blast to your audience).

Provide support

Providing support should be common sense, but not everyone is doing this right. Your customers need a reliable way to ask for assistance.

I used to think that this would be too much work. But in fact, it is an excellent way to learn about your audience, what they need, what they like, and what is broken with your sales or delivery process. Do not ignore the support requests :). The “Contact Form 7” is an excellent plugin to use for this.

The Refund Policy

Buying things online is risky. Your order customers trust you, but the new ones don’t know you. To me, it makes total sense to make it risk-free for them and offer a full refund policy. Yes, some will abuse it. But for every abuser, there will be more people who end up trusting you more and making the purchase. The refund policy is also a strong statement of confidence in your products or services. Yes, they are that good!

And I agree, in some cases, a partial refund makes more sense. And in others, it is OK to offer no refund if the customer had plenty of chance to change their mind and did not. Like selling tickets for an event, and someone wanting to cancel the day before. In these cases, you have to make it crystal clear in the purchase process what the refund policy is and when it expires.

International clients

I still struggle with this one.

You may discover that you have a big audience in a country that speaks a different language. Say, French. You invest in the resources and process to translate your products and sales process into French to help your audience get to our product. But what you also need to be careful about is providing support in the same language. If the product is in French, and the purchase process is in French, the support cannot be in English. To me, that would not feel genuine. Like you did not go all the way with your offer, and you stopped right after the sale.

If I cannot offer support in French, I prefer to keep the sales process in English. This way, those who buy the French product will know that that is the only French part about it, just the product itself. But the shopping experience and support will have to be in English.

As I’ve said, I still struggle with this, and I cannot say I have found a solution that I am delighted with. As tools, for WordPress, I am using the PolyLang plugin.

The Mobile Screen Experience

Have a look at your analytics data, and you will likely notice that the mobile users are a big chunk, if not the most significant piece of your audience. Your store needs to be mobile-friendly. And again, I have to recommend WooCommerce here, but with some custom work to make it even more usable on the small screens.

Order fulfillment

Don’t forget about the second half of the shopping experience. Don’t stop at just getting paid :). Make sure your customers can get to their files.

You may have to use different tools for different products. Small files can be sent as attachments. For videos, you may be better of emailing links to a platform where the video is hosted (YouTube, Vimeo, Wistia). And for huge files, there are yet other tools to help, like Amazon S3 services.

Use this information to decide what kind of shopping experience you want to create and what tools you should use. And if you struggle with some challenges that I didn’t write about, let me know in the comments below.