Cloaker Not Working: Troubleshooting by Symptom

When a cloaker is not working, the filter itself is almost never broken: the code is in the wrong place, a cache serves an old page, or the host hides visitor addresses. Here is a symptom-by-symptom check, from everyone sees the offer to clicks but no leads.

Setup and Configuration11 min read
Cloaker Not Working: Troubleshooting by Symptom
Contents
  1. Where to start any cloaker check
  2. Symptom 1. Everyone sees the offer, even bots
  3. Symptom 2. Everyone sees the White Page
  4. Symptom 3. The filter is cutting real people
  5. Symptom 4. No visits in the log
  6. Symptom 5. PHP file and hosting problems
  7. Symptom 6. Clicks but no leads
  8. The pre-launch check in Diagnostics
  9. When to contact support
  10. In short

“The cloaker is not working” describes two opposite situations. In the first, everyone sees the offer, bots and spy tools included: budget goes to junk clicks, the offer's stats get polluted and outsiders see your funnel. In the second, everyone sees the white page, buyers included, and the budget burns without leads. There is a third, quiet one as well: the filter works correctly, but there are no conversions in the dashboard, so it looks like everything is broken. Below is a symptom-by-symptom check, in the order worth going through it.

Where to start any cloaker check

Before you change anything, do three things:

  1. Open the click log. Every visit has a decision and a reason, and most of the time the reason names the problem straight away. If there are no visits in the log, the problem is upstream of the filter, in the connection.
  2. Click Check my page in the flow's connection window (Flows → More → Connect).
  3. Open the Visit report, linked from the same window. Instead of the page, it shows every signal, every conclusion and the final decision for a single visit.

Almost every step that follows relies on these three sources. How to read the reasons is covered in why a click went to the White Page.

Symptom 1. Everyone sees the offer, even bots

The most expensive case: the filter is effectively not part of the decision, and bots, scanners and spy tools reach the offer along with people. You pay for junk clicks, the affiliate network sees low traffic quality and your funnel can be copied.

A cache serves a saved page

A caching plugin, host-level cache or CDN serves a ready-made copy of the page instead of asking for a decision for each visitor. The sign: fewer visits in the log than clicks, or decisions that “get stuck”.

What to do: exclude the landing page from caching or turn off page caching, clear the cache and test in an incognito window. For WordPress sites this is problem number one; details in WordPress cloaking plugin.

The tag lets the page render before the decision

The code is added through Google Tag Manager, with async or defer, or is not the first line in <head>. The browser then draws the page before the decision arrives.

What to do: put the code as the first line in the <head> of every page, without a tag manager, and click Check my page again.

The tag script does not load

If a network filter or a server-side blocker cuts the script, the page will not be hidden. This is why many people choose the PHP file for serious campaigns: the decision is made on the server, before the page is served.

Shadow mode or Tracker mode is on

With the PHP file in shadow mode, the filter blocks nobody and only marks who it would have blocked; the log shows the reason “Watched, not cut”. In Tracker mode everyone goes to the offer, with the reason “Tracked, not filtered”. Both modes are meant for analysis, not for a live campaign that needs bots filtered out. Shadow mode switches itself off after its set period; while it is on, every page of the dashboard shows a “Shadow mode (until …)” banner.

Your address is on the whitelist

If you test from your own device and your IP is on the flow's whitelist, you will see the offer, with the reason “Allowed by whitelist”. That does not mean everyone sees the offer.

Symptom 2. Everyone sees the White Page

If every visit goes to the white page, the traffic is almost never the cause. Check the reason in the log:

Reason in the log What happened What to do
“No active plan”, “Click limit reached” The plan is not paid or the trial clicks have run out Renew the plan; see pricing
“Flow is not running” The status is Draft or Paused Flow step 4 → Active
“Cloaking switched off” The main switch in step 2 is off Turn on Cloaking
“Flow under review” A mode is on in which the flow shows everyone the White Page Turn that mode off in the flow's Diagnostics
“Before filtering” Warm-up is in progress Wait for warm-up to end or shorten it
“Shield: not a paid click” The shield is up and the platform does not pass a click ID Lower the shield; it does not suit platforms without a click ID, such as Telegram
“The flow has no offer to send to” All offers are disabled Enable at least one offer
“Offer did not load” The offer page failed to open in Loading mode Check the offer or switch to Redirect

If the reasons vary but almost everything is blocked by “Campaign rule” or “Trust score too low”, the problem is in the filter settings; move on to symptom 3.

Symptom 3. The filter is cutting real people

The sign: only a tiny share of visits reaches the offer, and the visits that do pass bring almost no leads. A high pass rate on its own is not alarming: with paid traffic that carries a click ID, most visitors may reach the offer. A very low one, however, is a reason to dig in. ArtisanClo sends a warning itself if a day had enough clicks and the pass rate dropped to a very low level, or halved compared with the previous day.

What to check:

  • Strictness. Strict turns on IPv6 blocking, required JavaScript, a minimum time on page and a hard per-IP limit. Balanced is usually enough for a first launch.
  • IPv6 blocking. Only enable it if the offer and tracker work over IPv4; otherwise you lose real people, mobile users among them.
  • Blocking visits with no referrer on Facebook. The in-app browser often drops the referrer; there is no need to enable this for Facebook.
  • Geo. Too narrow a list of countries or regions.
  • Per-IP click limit. Mobile carriers route many subscribers through a shared address.
  • VPN. If your audience uses a VPN, VPN and proxy blocking will cut it. That is by design, since a VPN masks the country. Turn it off deliberately, if at all.

The main tool here is Diagnostics. The What to fix tab replays past visits against the current settings and reports “The X filter is cutting traffic” with an estimate of lost leads and money and a Remove the filter button. Above the list of reasons in Statistics you can see at which step visits were filtered: if the share of “Browser check” is growing, revisit the strictness.

Symptom 4. No visits in the log

  • The code is missing or on the wrong page. Check my page will report that the page opened but this connection method did not answer.
  • Repeat visits are merged. A repeat visit from the same address and browser with the same decision within a minute is merged into one click. Test from another device or wait a minute.
  • The check never came back. The visitor did not pass the script check and did not return from the waiting page; the click will appear later with the reason “JavaScript required”.
  • The check says it could not open your page. Some sites and hosts block automated checks. That does not mean the connection is broken: open the landing page yourself, and on the very first visit the method will be marked Connected.

Symptom 5. PHP file and hosting problems

Every visit has the same IP

A hosting proxy sits in front of the site, and the PHP file sees its address instead of the visitor's. In that case the filter is evaluating your server, not people. Ask the host to pass the real visitor address (the real IP / mod_remoteip setting).

A 503 error or slow loading

The site's server cannot reach ArtisanClo: outgoing connections are blocked, the curl extension is missing and allow_url_fopen is off, or the host's firewall cuts the requests. The file waits up to 4 seconds for a response. Check that the host runs PHP 7.2 or newer and allows outgoing HTTPS requests. While there is no response, the file works off the last response for a day: visitors with an ad click ID go to the offer, everyone else to the White Page.

The host returns 403

The host's protective filter (WAF, ModSecurity) mistakes the check page's requests for an attack. Add the landing page URL to the exceptions or ask the host's support to disable the filter for the site.

You changed settings, but the visitor sees the old result

With the PHP file, the decision for a single visitor is cached in the browser for up to a minute. Test in a new incognito window. There is no need to re-upload the file after editing the flow.

An outdated version of the file

If the connection window says you are running an older file, download the file again: some features (a ready-made White Page from the catalog, offer parameter rules, the live interaction check) require the latest version.

Symptom 6. Clicks but no leads

The filter can work flawlessly while Leads and Revenue in your reports stay at zero. The cause is that conversion tracking is not set up. A flow in Cloaking mode without an external tracker receives no conversions.

What to do, depending on your setup:

  • An affiliate network: in the Conversions setup section, choose the network, copy the postback URL into its dashboard and pass {click_id} in the right parameter of the offer link (for example, sub1).
  • Your own site with a form: code for the form handler, a script for the thank-you page or a pixel.
  • An external tracker: choose it in step 3 of the flow, add external_id={click_id} to the offer link and paste the postback URL into the tracker.

The Log tab in Conversions setup shows the latest incoming messages with their outcome: “lead recorded”, “click not found”, “no click_id”, “cloak without a tracker”. The outcome usually tells you right away what is wrong. Details in what is a postback and click ID and Sub ID.

The pre-launch check in Diagnostics

To avoid catching problems on live budget, look at the flow's Diagnostics before the campaign starts. It shows what the flow will answer to typical visits: a crawler, a server request, an automated browser and a real person with an ad click ID. It also checks the White Page and the offer: whether they respond, how many redirects are on the way, whether the domain is on any blocklists. Everything it finds is collected under Fix before launch.

Tip. Do not try to test the filter by visiting your link through a VPN or from a rented server. You will be testing your own network, not the flow settings, and your address may be flagged as suspicious. For your own tests, add your IP to the flow's whitelist and watch the log.

On top of that, ArtisanClo monitors running flows itself: every minute it checks whether the offer responds, every morning whether the White Page opens, and regularly whether browsers have flagged the domain. Notifications about all of this arrive in the bell and, if the bot is connected, in Telegram.

When to contact support

If none of the symptoms fit, contact support (the menu under your avatar → Contact us) and attach the Visit report link for an example of a wrong decision, along with the flow number and the click number. That way the investigation takes minutes, not a day of back-and-forth.

How to tell a bot from a human without overdoing the strictness is covered in how to filter out bots, and correct installation in how to connect a cloaker.

In short

When a cloaker is not working, start with the click log, Check my page and the Visit report. Everyone sees the offer: look for a cache, a tag manager, shadow mode. Everyone sees the white page: look at the flow status, the plan, warm-up and the shield. Real people are being cut: check strictness, IPv6, geo and Diagnostics. No leads: set up conversion tracking. And before every launch, run the flow through Fix before launch in Diagnostics. If you are still choosing a service, see what to check before buying a cloaker: a reason log and an integration check save hours of this kind of troubleshooting.

Frequently asked questions

01

How do I check whether my cloaker is working?

Click Check my page in the flow's connection window, then open the ad link in an incognito window and find the visit in the click log. Diagnostics also has a pre-launch check that shows what the flow will answer to a crawler, a server request, an automated browser and a real person with an ad click ID.

02

How can I test a cloaker without spending ad budget?

Run the pre-launch check in the flow's Diagnostics: it replays typical visits against the current settings and shows the decision for each. Then open the link with a click ID in an incognito window from your normal internet connection and find the visit in the log. Visiting your own link from servers or through a VPN is pointless: you test your own network, and your address may end up filtered.

03

Why is my cloaker letting bots through to the offer?

Most often the page is served from cache, the JS tag is added through a tag manager or is not first in the head, or shadow mode or Tracker mode is on. Less often the strictness is too soft. Check the log: if there are no visits at all, the filter simply does not see them.

04

Why do I see clicks in the dashboard but no leads or revenue?

Conversions do not appear by themselves: you need to set up conversion tracking, either an affiliate network postback, code on the thank-you page or an external tracker. A flow in Cloaking mode without an external tracker receives no conversions, so leads and revenue stay at zero.

05

Do I need to re-download the PHP file after changing settings?

No, settings are stored in the dashboard, not in the file. You only need a new version of the file when the connection window says you are running an older file. Note that the decision for a single visitor is cached in the browser for up to a minute, so test in a fresh incognito window.

Read next

See your traffic for real

Connect ArtisanClo to your site, see who actually arrives from your ads, and why every click got its decision.