Skip to content

Samuel Aguilera Posts

cURL error 28 in WordPress

So you’re trying to use your favorite WordPress plugin but an ugly cURL error 28 is being displayed in your screen or error log… Something like

cURL error 28: Connection timed out after X milliseconds


cURL error 28: Operation timed out after X milliseconds with 0 out of 0 bytes received

What’s going on? If you search in Google you will find that in fact it’s a very common issue and it’s not tied to any plugin or WordPress itself, it’s something directly related with a server component, the cURL library, so it can affect to any web software using cURL.

In this article I’m going to explain you a few things that hopefully will help you to understand what’s the issue and things that you may check in order to fix it.

But what the hell is cURL?

cURL LogoWhen talking about WordPress, cURL is a PHP library that helps WordPress to communicate with other sites. Being a PHP library means that if you’re using an obsolete PHP version (anything older than PHP 5.6) you’re for sure also using an obsolete cURL version. So the first thing you need to do if you’re having issues with cURL is to upgrade your PHP version to at least 5.6 or 7.0 (recommended).

Note that on some server setups (e.g. cheap shared hosting) selecting a newer PHP version to run your site doesn’t necessarily means that you’re going to use a recent cURL version.

Use Stripe coupons with Gravity Forms

Gravity Forms has a Stripe add-on that allows you to charge your users at form submission using your account, but this add-on doesn’t support (currently) coupons created at your Stripe account.

Gravity Forms has a also its own Coupons add-on. Using this add-on you can create a workaround for the mentioned limitation of the Stripe add-on.

Basically we’re going to use the coupon at, a coupon created in the Gravity Forms Coupons add-on with the same name and discount, and a little snippet of code. Simply follow the steps below.

Gravity Forms merge tags as Default Value for form fields

If you’re new to Gravity Forms merge tags you may think, what the hell is a merge tag? Well they’re placeholders that are replaced dynamically by the value associated to them when used in some places like notifications or confirmations content and the default value setting for fields that supports it.

By default Gravity Forms provides a bunch of useful merge tags to insert values like the first name or the email of the currently logged user, the IP of the user, the title or ID of the page from where the user is submitting the form, or even the value of a custom post meta, and many other interesting data, I would recommend you to take a look to the Gravity Forms merge tags doc page to check them all.

I’m going to show you some real use case examples of how you can use the merge tags based on commonly asked questions that we see in support.

Charla “Introducción a Gravity Forms”

El pasado 25 de enero di una pequeña charla de introducción al uso de Gravity Forms en la Meetup WordPress Zaragoza. Que todo sea dicho de paso me olvidé de anunciar aquí…

A continuación os dejo el enlace a la presentación, si bien en esta ocasión la charla era más práctica que teórica, así que la presentación es más bien un guión de lo que fui desarrollando en la charla.

ERROR for site owner: Stoken disabled in reCAPTCHA field for Gravity Forms

reCAPTCHA Stoken Expired error
reCAPTCHA Stoken Expired error

Since Gravity Forms 2.0 the new “no captcha” reCAPTCHA  API is included in Gravity Forms. This was a highly requested feature and works pretty fine for most users, but sometimes specially if you’re using old reCAPTCHA keys or the reCAPTCHA authentication in Gravity Forms settings was done using previous API version you can get one of the following pretty cryptic message in your reCAPTCHA field:

ERROR for site owner: Stoken disabled or Error for site owner: Stoken expired