Skip to main content

Why does SmartPin or Create fail to pull images from my website? (host bot protection)

Troubleshooting when SmartPin or Create fails on some pages of your site but works on others, due to your web host's bot-protection serving a CAPTCHA to Tailwind's image fetcher.

The symptom

SmartPin (or Create / Generate Pin from a URL) fails to build a Pin for certain pages on your website, even though it works fine on other pages of the same site. The failure is often intermittent or limited to newer or less-visited pages.

The cause

This usually is not a Tailwind bug. It happens when your website's hosting provider has a bot-protection or "anti-bot" security feature enabled. When Tailwind's image fetcher tries to download the images from your page, your host serves it a CAPTCHA challenge page instead of the actual image. Tailwind receives the challenge instead of the picture, so the Pin can't be built and it fails.

A common example is SiteGround's "Anti-Bot AI" feature, which can return a /.well-known/sgcaptcha/ challenge. Other hosts and services (for example sites behind aggressive Cloudflare bot protection, or marketplaces such as Redbubble) can block automated requests in the same way.

Why it works on some pages but not others: hosts often serve cached or popular images without a challenge, so older and frequently-viewed images come through fine, while newer or less-visited images get challenged.

How to fix it

Because the block happens at your host, there are three ways to resolve it. We recommend starting with Option 1, which lets you keep your bot protection switched on.

Option 1 — Allow Tailwind through your firewall (recommended)

You don't have to disable your bot protection. Tailwind's image fetcher identifies itself on every request with the HTTP header x-tailwind-client: content-service. If you add a firewall / WAF rule that allows requests carrying that header, Tailwind gets through while everything else stays protected. Because Tailwind doesn't use a fixed IP address, a header rule is more reliable than trying to allowlist IP addresses.

  • Cloudflare: go to your domain's Security → WAF → Custom rules, create a rule with the action Skip (or Allow), and use the expression any(http.request.headers["x-tailwind-client"][*] == "content-service").

  • AWS WAF: in your Web ACL, add a custom rule that inspects a Single header named x-tailwind-client with match type Exactly matches string and value content-service, and set the action to Allow. Place the rule at the top of your rule order so it is evaluated first.

  • Akamai, Imperva, Fastly and other edge WAFs: create an allow / bypass rule that matches the request header x-tailwind-client with the value content-service, then deploy the updated configuration.

  • Wix, Squarespace, Shopify and other fully-managed hosts: these platforms don't let you write your own header rules. Contact their support and ask them to allow requests that carry the header x-tailwind-client: content-service.

  • Sucuri, Wordfence and similar plugin / proxy firewalls: these allowlist by IP address rather than by header, so a header allow-rule usually isn't available. Use Option 2 below, or place a header-capable WAF (such as Cloudflare) in front of your site.

Option 2 — Ask your host to disable anti-bot protection or exclude your image folder

If you can't add a header rule, contact your hosting provider's support and ask them to either:

  • turn off the anti-bot / bot-protection feature, or

  • exclude your image folder (for example /wp-content/uploads/) from it.

For SiteGround specifically, you can tell their support: "Your Anti-Bot AI is serving a /.well-known/sgcaptcha/ challenge to a third-party tool trying to read my product images." Once they adjust the setting, SmartPin should pull your images normally.

Option 3 — Add the image manually

If you'd rather not change any host settings, you can supply the image yourself. For SmartPin, paste the image URL directly into the image step. For Tailwind Create — or for a third-party marketplace you don't control (for example Redbubble) — upload the image to the Pin manually instead.

Did this answer your question?