Behind the Source: Cassie Evans

I feel like the tech industry takes itself far too seriously sometimes. I get frustrated by all the posturing and gatekeeping – “You’re not a real developer unless you use x framework”, “CSS isn’t a real programming language”.

I think this kind of rhetoric often puts new developers off, and the ones that don’t get put off are more inclined to skip over learning things like semantic markup and accessibility in favour of learning the latest framework.

Having a deeper knowledge of HTML and CSS is often devalued.

Posturing and gatekeeping, indeed. I’ve yet to witness a conversation where discussing what is or isn’t “real” programming was fruitful for anybody.


Related sentiment from Mehdi Zed about PHP:

Most developers who hate PHP hate it out of elitism or ignorance. Either way it’s dumb.

Direct Link to ArticlePermalink

The post Behind the Source: Cassie Evans appeared first on CSS-Tricks.

Rapyd Launches UK-Based Payments Solution

​Rapyd, a global Fintech as a Service company, today announced the launch of a single, "full-stack," payment solution in the United Kingdom allowing businesses locally and globally to access every major local payment method — such as cash, bank transfers, e-wallets, and cards — through one easy to integrate connection.

The Show Must Be Paused

George Floyd

Natosha McDade, Yassin Mohamed, Finan H. Berhe, Sean Reed, Steven Demarco Taylor, Breonna Taylor, Ariane McCree, Terrance Franklin, Miles Hall, Darius Tarver, William Green, Samuel David Mallard, Kwame Jones, De’von Bailey, Christopher Whitfield, Anthony Hill, De’Von Bailey, Eric Logan, Jamarion Robinson, Gregory Hill Jr, JaQuavion Slaton, Ryan Twyman, Brandon Webber, Jimmy Atchison, Willie McCoy, Emantic Fitzgerald Bradford J, D’ettrick Griffin, Jemel Roberson, DeAndre Ballard, Botham Shem Jean, Robert Lawrence White, Anthony Lamar Smith, Ramarley Graham, Manuel Loggins Jr, Trayvon Martin, Wendell Allen, Kendrec McDade, Larry Jackson Jr, Jonathan Ferrell, Jordan Baker, Victor White III, Dontre Hamilton, Eric Garner, John Crawford III, Michael Brown, Ezell Ford, Dante Parker, Kajieme Powell, Laquan McDonald, Akai Gurley, Tamir Rice, Rumain Brisbon, Jerame Reid, Charly Keunang, Tony Robinson, Walter Scott, Freddie Gray, Brendon Glenn, Samuel DuBose, Christian Taylor, Jamar Clark, Mario Woods, Quintonio LeGrier, Gregory Gunn, Akiel Denkins, Alton Sterling, Philando Castile, Terrence Sterling, Terence Crutcher, Keith Lamont Scott, Alfred Olango, Jordan Edwards, Stephon Clark, Danny Ray Thomas, DeJuan Guillory, Patrick Harmon, Jonathan Hart, Maurice Granton, Julius Johnson, Jamee Johnson, Michael Dean…

Organisations that could use your financial support include Black Lives MatterThe NAACP Legal Defense and Educational FundThe Equal Justice InitiativeWe The Protesters, and the George Floyd Memorial Fund.

The Show Must Be Paused

The #BlackoutTuesday and #TheShowMustBePaused hashtags have flooded the internet today. Brianna Agyemang and Jamila Thomas, senior directors of marketing at Atlantic Records, began The Show Must Be Paused movement. The effort calls for disruption to the workweek and to hold the industry at large accountable for the benefits it receives from the “efforts, struggles, and successes” of black people.

“It is a day to take a beat for an honest, reflective and productive conversation about what actions we need to collectively take to support the Black community,” according to The Show Must Be Paused website.

WordPress community member and developer Phil Johnston wanted to show support for the movement in any way that he could. “After seeing the video of George Floyd, I was really shaken,” he said. “I saw the Django REST API help site had blacked-out their site with a message of solidarity, and I thought that might make a good plugin if others wanted to quickly do something similar.”

Johnston put together a quick plugin named The Show Must Be Paused. It is currently available on GitHub and awaiting approval for the official WordPress plugin directory.

The project is a simple blackout plugin that replaces the front end of the user’s website with a message of solidarity (the same opening message of this post). For users who want to use the plugin on their site, they can grab the ZIP file from the GitHub repository and upload it. We will update this story with a link to the plugin directory page once it is available.

Update: The Show Must Be Paused plugin is available in the plugin directory.

While posting a message of solidarity with those who have lost their lives, those who are still living under 400 years of oppression, and those who are continuing to fight for justice is a good first step, it is merely a step. The next question we must allow the oppressed to answer is what we as a society, as human beings, can do next. What steps can the WordPress community take?

“I wish I had the answer to that question, but I’m not sure I know for sure, or that I’m qualified to say,” Johnston said. “All I know right now is that this situation really moved me personally, and I think it is important to be aware of and to really listen to the people in pain right now.”

Suprema Launches G-SDK for gRPC Security Integration

Suprema, a provider of security and biometrics technology and equipment, has launched a new SDK that is designed to further simplify integration with third-party ID management software. The all-new G-SDK is based on gRPC.

The Suprema G-SDK provides support for languages including Java, C#, Python, Node.js, and Go. The announcement of this SDK comes alongside a new device gateway and gRPC server to support the workflow. 

Improved Text Asset Editing

Our PRO Asset Hosting feature will take just about any file you need to host. Say you upload a CSS file or a JSON file… it stands to reason you should be able to edit that file even after you’ve uploaded it. Well, you absolutely can. Here’s a video showing off our many recent improvements to how it works:

So what’s new about this? We had asset editing before this, but it was much less capable as a feature. For one, you had to do it from the Asset Manager. Now, you can do it there if you like, but…

  • Editing works from the Pen Editor too, which is much more likely to be where you need to be.
  • Your syntax highlighting, font, and every other editor setting you have is available in the editing editor, making it the same comfortable coding experience as CodePen itself.
  • You can edit SVG files as text, including see a preview of the saved changes.

🎉

The post Improved Text Asset Editing appeared first on CodePen Blog.

Kinetic Typography with Three.js

Kinetic Typography may sound complicated but it’s just the elegant way to say “moving text” and, more specifically, to combine motion with text to create animations.

Imagine text on top of a 3D object, now could you see it moving along the object’s shape? Nice! That’s exactly what we’ll do in this article ? we’ll learn how to move text on a mesh using Three.js and three-bmfont-text.

We’re going to skip a lot of basics, so to get the most from this article we recommend you have some basic knowledge about Three.js, GLSL shaders, and three-bmfont-text.

Basis

The main idea for all these demos is to have a texture with text, use it on a mesh and play with it inside shaders. The simplest way of doing it is to have an image with text and then use it as a texture. But it can be a pain to figure out the correct size to try to display crisp text on the mesh, and later to change whatever text is in the image.

To avoid all these issues, we can generate that texture using code! We create a Render Target (RT) where we can have a scene that has text rendered with three-bmfont-text, and then use it as the texture of a mesh. This way we have more freedom to move, change, or color text. We’ll be taking this route following the next steps:

  1. Set up a RT with the text
  2. Create a mesh and add the RT texture
  3. Change the texture inside the fragment shader

To begin, we’ll run everything after the font file and atlas are loaded and ready to be used with three-bmfont-text. We won’t be going over this since I explained it in one of my previous articles.

The structure goes like this:

init() {
  // Create geometry of packed glyphs
  loadFont(fontFile, (err, font) => {
    this.fontGeometry = createGeometry({
      font,
      text: "ENDLESS"
    });

    // Load texture containing font glyphs
    this.loader = new THREE.TextureLoader();
    this.loader.load(fontAtlas, texture => {
      this.fontMaterial = new THREE.RawShaderMaterial(
        MSDFShader({
          map: texture,
          side: THREE.DoubleSide,
          transparent: true,
          negate: false,
          color: 0xffffff
        })
      );

      // Methods are called here
    });
  });
}

Now take a deep breath, grab your tea or coffee, chill, and let’s get started.

Render Target

A Render Target is a texture you can render to. Think of it as a canvas where you can draw whatever is inside and place it wherever you want. Having this flexibility makes the texture dynamic, so we can later add, change, or remove stuff in it.

Let’s set a RT along with a camera and a scene where we’ll place the text.

createRenderTarget() {
  // Render Target setup
  this.rt = new THREE.WebGLRenderTarget(
    window.innerWidth,
    window.innerHeight
  );

  this.rtCamera = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);
  this.rtCamera.position.z = 2.5;

  this.rtScene = new THREE.Scene();
  this.rtScene.background = new THREE.Color("#000000");
}

Once we have the RT scene, let’s use the font geometry and material previously created to make the text mesh.

createRenderTarget() {
  // Render Target setup
  this.rt = new THREE.WebGLRenderTarget(
    window.innerWidth,
    window.innerHeight
  );

  this.rtCamera = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);
  this.rtCamera.position.z = 2.5;

  this.rtScene = new THREE.Scene();
  this.rtScene.background = new THREE.Color("#000000");

  // Create text with font geometry and material
  this.text = new THREE.Mesh(this.fontGeometry, this.fontMaterial);

  // Adjust text dimensions
  this.text.position.set(-0.965, -0.275, 0);
  this.text.rotation.set(Math.PI, 0, 0);
  this.text.scale.set(0.008, 0.02, 1);

  // Add text to RT scene
  this.rtScene.add(this.text);
 
  this.scene.add(this.text); // Add to main scene
}

Note that for now, we added the text to the main scene to render it on the screen.

Cool! Let’s make it more interesting and “paste” the scene over a shape next.

Mesh and render texture

For simplicity, we’ll first use as shape a BoxGeometry together with ShaderMaterial to pass custom shaders, time and the render texture uniforms.

createMesh() {
  this.geometry = new THREE.BoxGeometry(1, 1, 1);

  this.material = new THREE.ShaderMaterial({
    vertexShader,
    fragmentShader,
    uniforms: {
      uTime: { value: 0 },
      uTexture: { value: this.rt.texture }
    }
  });

  this.mesh = new THREE.Mesh(this.geometry, this.material);

  this.scene.add(this.mesh);
}

The vertex shader won’t be doing anything interesting this time; we’ll skip it and focus on the fragment instead, which is showing the colors of the RT texture. It’s inverted for now (1. - texture) to stand out from the background.

varying vec2 vUv;

uniform sampler2D uTexture;

void main() {
  vec3 texture = texture2D(uTexture, vUv).rgb;

  gl_FragColor = vec4(1. - texture, 1.);
}

Normally, we would just render the main scene directly, but with a RT we have to first render to it before rendering to the screen.

render() {
  ...

  // Draw Render Target
  this.renderer.setRenderTarget(this.rt);
  this.renderer.render(this.rtScene, this.rtCamera);
  this.renderer.setRenderTarget(null);
  this.renderer.render(this.scene, this.camera);
}

And now a box should appear on the screen where each face has the text on it:

Looks alright so far, but what if we could cover more text around the shape?

Repeating the texture

GLSL’s built-in function fract comes handy to make repetition. We’ll use it to repeat the texture coordinates when multiplying them by a scalar so it wraps between 0 and 1.

varying vec2 vUv;

uniform sampler2D uTexture;

void main() {
  vec2 repeat = vec2(2., 6.); // 2 columns, 6 rows
  vec2 uv = fract(vUv * repeat);

  vec3 texture = texture2D(uTexture, uv).rgb;
  texture *= vec3(uv.x, uv.y, 1.);

  gl_FragColor = vec4(texture, 1.);
}

Notice that we also multiply the texture by the uv components to visualize the modified texture coordinates.

We’re getting there, right? The text should also follow the object’s shape; here’s where time comes in. We need to add it to the texture coordinates, in this case to the x component so it moves horizontally.

varying vec2 vUv;

uniform sampler2D uTexture;
uniform float uTime;

void main() {
  float time = uTime * 0.75;
  vec2 repeat = vec2(2., 6.);
  vec2 uv = fract(vUv * repeat + vec2(-time, 0.));

  vec3 texture = texture2D(uTexture, uv).rgb;

  gl_FragColor = vec4(texture, 1.);
}

And for a sweet touch, let’s blend the color with the the background.

This is basically the process! RT texture, repetition, and motion. Now that we’ve looked at the mesh for so long, using a BoxGeometry gets kind of boring, doesn’t it? Let’s change it in the next final bonus chapter.

Changing the geometry

As a kid, I loved playing and twisting these tangle toys, perhaps that’s the reason why I find satisfaction with knots and twisted shapes? Let this be an excuse to work with a torus knot geometry.

For the sake of rendering smooth text we’ll exaggerate the amount of tubular segments the knot has.

createMesh() {
  this.geometry = new THREE.TorusKnotGeometry(9, 3, 768, 3, 4, 3);

  ...
}

Inside the fragment shader, we’ll repeat any number of columns we want just to make sure to leave the same number of rows as the number of radial segments, which is 3.

varying vec2 vUv;

uniform sampler2D uTexture;
uniform float uTime;

void main() {
  vec2 repeat = vec2(12., 3.); // 12 columns, 3 rows
  vec2 uv = fract(vUv * repeat);

  vec3 texture = texture2D(uTexture, uv).rgb;
  texture *= vec3(uv.x, uv.y, 1.);

  gl_FragColor = vec4(texture, 1.);
}

And here’s our tangled torus knot:

Before adding time to the texture coordinates, I think we can make a fake shadow to give a better sense of depth. For that we’ll need to pass the position coordinates from the vertex shader using a varying.

varying vec2 vUv;
varying vec3 vPos;

void main() {
  vUv = uv;
  vPos = position;

  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.);
}

We now can use the z-coordinates and clamp them between 0 and 1, so the regions of the mesh farther the screen get darker (towards 0), and the closest lighter (towards 1).

varying vec3 vPos;

void main() {
  float shadow = clamp(vPos.z / 5., 0., 1.);

  gl_FragColor = vec4(vec3(shadow), 1.);
}

See? It sort of looks like white bone:

Now the final step! Multiply the shadow to blend it with the texture, and add time again.

varying vec2 vUv;
varying vec3 vPos;

uniform sampler2D uTexture;
uniform float uTime;

void main() {
  float time = uTime * 0.5;
  vec2 repeat = -vec2(12., 3.);
  vec2 uv = fract(vUv * repeat - vec2(time, 0.));

  vec3 texture = texture2D(uTexture, uv).rgb;

  float shadow = clamp(vPos.z / 5., 0., 1.);

  gl_FragColor = vec4(texture * shadow, 1.);
}

Fresh out of the oven! Look at this sexy torus coming out of the darkness. Internet high five!


We’ve just scratched the surface making repeated tiles of text, but there are many ways to add fun to the mixture. Could you use trigonometry or noise functions? Play with color? Text position? Or even better, do something with the vertex shader. The sky’s the limit! I encourage you to explore this and have fun with it.

Oh! And don’t forget to share it with me on Twitter. If you got any questions or suggestions, let me know.

Hope you learned something new. Till next time!

References and Credits

The post Kinetic Typography with Three.js appeared first on Codrops.

Click! Here: Meet Our New Smashing Book

Click! Here: Meet Our New Smashing Book

Click! Here: Meet Our New Smashing Book

Vitaly Friedman

You’ve been there before, haven’t you? Perhaps your manager insists on using a dark pattern to trick customers into buying. Or an A/B test has just shown that an annoying pop-up does increase sign-ups. Or maybe you always end up firefighting negative reviews and angry customer inquiries and your calls to action don’t perform well.

Whether we are designers, marketers, entrepreneurs, or product owners, we are all in the same boat. We want to give users a good experience, but we also need them to take action. More often than not, these things are considered to be mutually exclusive, but they don’t have to be.

That’s why we’ve teamed up with Paul Boag to work on Click! How To Encourage Clicks Without Shady Tricks, a detailed guide on how to increase conversion and boost business KPIs without alienating customers along the way. A book that shows how to increase clicks, build trust, loyalty and drive leads while keeping users respected and happy at the same time. Jump to table of contents and download a free PDF excerpt (17.3 MB).

Print + eBook

$ 39.00

Quality hardcover. Free worldwide shipping. 100 days money-back-guarantee.

eBook

$ 19.00

DRM-free, of course. ePUB, Kindle, PDF.
Included with Smashing Membership.

About The Book

There is no shortage of books on marketing and user experience. But when it comes to bridging the gap between the two, many of us struggle to find the right balance. As businesses, we need to meet out targets — be it with install app prompts, newsletter overlays, or infamous chat widgets. But as designers, we don’t want to end up with a frustrating user experience. We really need both, and we need a strategy to get there.

That’s why we’ve written Click! — a guide with practical strategies for improving conversion and retention while building user’s loyalty and trust. The book explores how to effectively address user concerns, overcome skepticism, and encourage users to act — helping you meet your business targets and KPIs along the way. Whether you are a designer, marketer, entrepreneur or product owner, this book will surely help you avoid hidden costs and drive sales.

Here’s a short video message from Paul Boag, the author of Click!, explaining why he’s written the book and what it’s all about:

By reading this book, you will learn to:

  • Measure and boost business KPIs effectively,
  • Build a user-centric sales funnel,
  • Reduce risks and address objections,
  • Build trust and overcome skepticism,
  • Persuade people without alienating them,
  • Establish a strategy for higher conversion.
  • Psst! A little surprise shipped with the first 500 books.
  • Download a free PDF sample (17.3 MB) and get the book right away.
The book features interface design examples that take ethical design principles into account. Large preview.
The cover and chapter illustrations carefully designed by Veerle Pieters.

Table Of Contents

The book is split into 11 chapters. We’ll start by exploring the psychology of decision making and how to measure conversion. Then we’ll build a user-centric sales funnel and address user concerns effectively. Finally, we’ll explore how to encourage users to act without alienating them.

Per Axbom“This is a great book on how to practically, and ethically, optimise website conversion rates. Before, I was roughly aware of what CRO was, but now I feel confident to start implementing these techniques in projects. As you would expect, Paul explains all of the concepts in an easy-to-follow and friendly manner.”

— Dave Smyth, Agency Owner
Per Axbom“I picked up a super simple testing idea, and saw a 42% lift in conversion rate. It was surprising to me, so I ran it again to significance with the same result. That equates to about 2.5 million USD/year in revenue at no additional cost. So I’d say I got my money’s worth!”

— Brandon Austin Kinney, Director of Lead Generation

304 pages. The eBook is available (PDF, ePUB, Amazon Kindle) and printed copies are shipping now. For designers, marketers, entrepreneurs and product owners. Written by Paul Boag. Designed by Veerle Pieters.

Print + eBook

$ 39.00

Quality hardcover. Free worldwide shipping. 100 days money-back-guarantee.

eBook

$ 19.00

DRM-free, of course. ePUB, Kindle, PDF.
Included with Smashing Membership.

About the Author

Trine FalbePaul Boag is a leader in conversion rate optimisation and user experience design thinking. He has over 25 years experience working with clients such as Doctors Without Borders and PUMA. He is the author of six books and a well respected presenter.

Technical Details

  • ISBN: 978-3-945749-83-8 (print)
  • Quality hardcover, stitched binding, ribbon page marker.
  • Free worldwide airmail shipping from Germany. (Check your delivery times). Due to Covid-19 and import restrictions, there could be some delays. But you can start reading the eBook right away.
  • eBook is available as PDF, ePUB, and Amazon Kindle.
  • Get the book right away.
A quality hardcover with a bookmark. Designed with love by Veerle Pieters. Photo by Marc Thiele.
A quality hardcover with a bookmark. Designed with love by Veerle Pieters. Photo by Marc Thiele.

Community Matters ❤️

With Click!, we’ve tried to create a very focused handbook with pragmatic solutions to help everyone create a better digital product that doesn’t get abandoned due to the sheer number of pop-ups, install prompt and newsletter box overlays.

There is quite a bit of work to do on the web, but our hope is that with this book, you will be equipped with enough techniques to increase conversion and the number of happy customers.

Producing a book takes quite a bit of time, and we couldn’t pull it off without the support of our wonderful community. A huge shout-out to Smashing Members for their ongoing support in our adventures. As a result, the eBook is and always will be free for Smashing Members. Plus, Members get a friendly discount when purchasing their printed copy.

Stay smashing, and thank you for your ongoing support, everyone!

The Ethical Design Handbook

Print + eBook

$ 39.00

Quality hardcover. Free worldwide shipping. 100 days money-back-guarantee.

eBook

$ 19.00

DRM-free, of course. ePUB, Kindle, PDF.
Included with Smashing Membership.

More Smashing Books

Promoting best practices and providing you with practical tips to master your daily coding and design challenges has always been (and will be) at the core of everything we do at Smashing.

In the past few years, we were very lucky to have worked together with some talented, caring people from the web community to publish their wealth of experience as printed books that stand the test of time. Trine, Alla and Adam are some of these people. Have you checked out their books already?

How to Create Smart Coupons in WooCommerce

Several of our readers have asked us how to create smart coupons in WooCommerce to extend the default functionality.

If you want to go beyond the built-in WooCommerce coupons to add items like buy one get one coupon, free gift coupon, etc, then you’re in the right place.

In this article, we’ll cover how to create smart coupons in WooCommerce.

How to create smart coupons in WooCommerce

What You Can Do With Smart Coupons for WooCommerce

Smart coupons (or advanced coupons) are a great way to increase your sales and revenue.

Instead of simply giving your customers a blanket discount on everything in their WooCommerce cart, you can use smart coupons to do all sorts of clever things.

For instance, you can create a “buy one get one” coupon that lets customers buy one product and get another free. This can be a great way to boost sales, or even to clear out stock that you want to move faster.

You could even create a free gift coupon. This could be a great way to build your email list, reward loyal customers, and encourage people to try a new product.

You may think that creating these types of coupons for your online store would be complicated and require technical knowledge. The good news is that it’s really straightforward.

We’re going to show you how to create smart coupons using the Advanced Coupons plugin for WooCommerce.

Create Smart Coupons with Advanced Coupons Plugin

Advanced Coupons is the best WordPress coupon code plugin on the market. It allows you to create smart coupons to boost your sales and grow your business.

First, you’ll need to install and activate the Advanced Coupons plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Once you’ve done that, you’ll find the new coupon functionality under WooCommerce » Coupons page in your WordPress admin dashboard.

To create any kind of coupon, you start by clicking ‘Add New’ and then enter your chosen coupon code at the top of the screen.

Entering a code for your free gift coupon - we've used 'freeshirt' for ours

There are loads of different ways you can create smart coupons. In this article, we’re going to take you through some of the most popular and effective ways to use coupons on your WooCommerce store.

You can jump straight to each one using these quick links:

Creating a Buy One Get One Free Coupon in WooCommerce

Advanced Coupons lets you create all sorts of “buy one get one” (BOGO) coupons. You don’t necessarily have to give away something for free. You could instead have a “buy one get one half-price” offer.

A BOGO coupon could be a great way to encourage people on your email list to make their first purchase. It can also be a great way to encourage repeat purchase from existing buyers.

To create a BOGO coupon using Advanced Coupons, go to WooCommerce » Coupons and add a new coupon. Click on the BOGO tab and set the conditions for your deal.

Add coupon for your BOGO deal

You can create lots of different types of offers, including “buy two get one” or similar. The item that the customer gains doesn’t have to be free. Instead, you could discount it by any percentage you want.

Here, we’ve created an offer where customers can buy any t-shirt and get a green t-shirt for free.

A buy one get one free coupon

Tip: BOGO coupons are most effective when you’re offering a free item that’s related to the one people are buying. For instance, if you sell winter clothing, you might offer a free pair of gloves with every hat purchased.

If you want more help creating your BOGO coupon, check out our full tutorial on how to create buy one get one coupons in WooCommerce.

Creating a URL Coupon (Auto-Apply) in WooCommerce

When you send out an email newsletter or social media post with a coupon code, sometimes users don’t know how to apply the coupon code.

This leads to increase in cart abandonment. Wouldn’t it be nice if you could auto-apply the coupon code with a click of a link?

This is where WooCommerce coupon URLs come in handy.

Instead of needing to remember a code, customers can simply click on a special URL. When they do so, Advanced Coupons will automatically apply the correct coupon to their cart.

This is really useful for social media marketing, where you might be limited in how many characters you can include in a status. Being able to give the coupon code within your store’s URL saves space.

To create a URL coupon using Advanced coupons, go to WooCommerce » Coupons and add a new coupon. Set the discount under the General tab.

You’ll need to publish the coupon in order to get the URL. After that, go to the URL Coupons tab, and you’ll see the coupon URL here.

It’ll be yoursite.com/coupon/couponcode, where couponcode is whatever you entered for your coupon code.

Creating a URL that automatically adds the coupon to the customer's cart

You can customize the coupon’s URL if you want, using the Code URL Override box. This will change the end of the URL (the coupon code part).

If you want more help creating your URL coupon, check out our full tutorial on how to create URL coupons in WooCommerce.

Creating a Pre-Scheduled Coupon in WooCommerce

Planning a holiday or special sales promotion?

If you run a lot of sales during the year, scheduling coupons ahead of time can make it easier. For instance, you could set up a bunch of coupons in January for your spring sale, your summer sale, and your Black Friday deals.

Scheduling coupons can also help you improve your marketing communications with affiliate partners because you can share the coupon code with them ahead of time without worrying about it being used live.

To schedule a coupon, you simply create it in the normal way by going to WooCommerce » Coupons and clicking ‘Add New’.

Next, click on the Scheduler tab and enter a start and end date for your coupon.

Note: The coupon will begin at 12:00:00 am on the start date and end at 11:59:59 pm on the day before the end date.

Using the scheduler in Advanced Coupons

You can also edit the default messages here, if you want to. These will be shown if the customer tries to use the coupon before it’s valid or after it expires.

If you want more help creating your scheduled coupon, check out our tutorial on how to schedule a coupon in WooCommerce.

Creating a Free Gift Coupon in WooCommerce

Do you want to offer your customers a free gift? You don’t need to set a product’s price to $0 to do this. There’s a better way, by using a free gift coupon.

Free gift coupons let customers add a product to their cart for free. You can set them up so that customers have to spend a certain amount in order for the coupon to work.

This is a great way to increase average order value on your online store.

For instance, you might create a coupon, so that customers who spend $20 or more can get a free mini teddy bear. If they haven’t got $20 worth of items in their cart, they can’t use the coupon.

You could also offer a free gift without any minimum spend. This could be a great way to reward loyal customers, or to get first-time customers to give your store a try.

To create a free gift coupon, go to WooCommerce » Coupons and add a new coupon.

Next, click the Add Products tab, find the product you want to giveaway, and select ‘$: Override price’ from the Price/Discount dropdown. You can leave the box blank or enter 0.

Making your product free using the 'Price/Discount' dropdown

If you want more help creating your free gift coupon, check out our tutorial on how to create a free gift coupon in WooCommerce.

How to Promote Your Coupons in WooCommerce

Whatever type of coupon you’ve created, you’ll want to let your customers know about it.

Unless it’s an offer specifically for your email list or newsletter, it’s best practice to promote the coupon across your website.

The easiest way to do this is with OptinMonster. It’s a powerful conversion optimization tool that helps you turn casual website visitors into paying customers.

You can use it to create a coupon popup on your site like this:

BOGO coupon popup

For full instructions, just check out our tutorial on how to create a coupon popup in WordPress.

You can also use OptinMonster to display your coupons in lots of other ways such as a floating notification bar like this:

OptinMonster floating coupon bar

And even a gamified spin a wheel coupon where you can allow users to win different discounts.

Spin a Wheel - Gamified Welcome Mat

Final Thoughts and Best Practices

Smart coupons are a brilliant way to drive more sales and make more money from your store.

It’s a good idea to experiment with different types of coupon to see which works best with your audience.

This will help you consistently tweak and improve your results.

We hope this article helped you learn how to create smart coupons in WooCommerce. You might also like our ultimate guide to WooCommerce SEO and our step by step guide on how to set up conversion tracking in WooCommerce.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Create Smart Coupons in WooCommerce appeared first on WPBeginner.