In short: If Tendlio shows "Showing, but not measured," an optimization plugin may be loading our storefront script too late, or changing it. Add tendlio to your optimizer's JavaScript exclusion list, safelist the CSS classes below if you remove unused CSS, and leave query-string removal off. Counting starts again once the fix reaches real shoppers; we don't go back and credit the orders in between.
How you know you need this #
Look for Showing, but not measured on a Growth engine or Sales lift card. The Storefront widgets report shows that widget with no results, and the product funnel shows no page views while add-to-carts keep arriving.
The full message reads: "Your shop is recording add-to-carts, but none of our page signals are arriving. A caching or JS-optimization plugin, a consent tool, or a script error on the page usually causes this."
This isn't On, but not showing, which means the widget isn't appearing at all. Here the widget works; only our counting has stopped.
The one-line fix #
In most optimization plugins, add this keyword to every field that excludes JavaScript from delay, defer, minify, or combine:
tendlio
Every Tendlio file address contains /tendlio/, and our inline settings use names such as tendlioSf and tendlioRac, so the keyword also matches them in fields that accept content keywords.
Treat storefront.js and swiper-bundle-tendlio.min.js the same way; the first needs the second. None of our scripts needs jQuery, so there's nothing else to exclude.
If your optimizer lists scripts by handle, ours are tendlio-storefront, tendlio-swiper, tendlio-seen, tendlio-sitetrack, tendlio-source, tendlio-recovery, and tendlio-deals. tendlio-source is the one that notes where each order came from. If a speed plugin holds it back, System status says so, and while the Marketing & profit report is on, so does your To do list, the same way it does for WooCommerce's own source tracking.
If you remove unused CSS #
Unused-CSS tools read the page before our JavaScript runs, so they drop the styles it adds later. Paste this exact list into the tool's safelist, one entry per line:
.swiper-initialized
.swiper-horizontal
.swiper-wrapper
.swiper-slide-active
.swiper-slide-next
.swiper-slide-prev
.swiper-pagination-bullet
.swiper-pagination-bullet-active
.swiper-button-disabled
.swiper-button-lock
.tendlio-bt--has-overflow
.tendlio-spin
.tendlio-gift-msg
.tendlio-vip-checkout-notice
.tendlio-deals__btn.is-loading
.tendlio-bt-card__atc.loading
.tendlio-bt-card__atc.added
The swiper and overflow entries keep the row, its dots, and arrows. The rest keep the add-to-cart spinner and button states, the gift line, the checkout greeting, and the Deals load-more button.
Two settings to leave off #
Leave Remove query strings from static resources off. Our file addresses end in a version number; that's how a shopper's browser learns an update arrived. Strip it and the browser can keep running last month's script against this month's plugin.
If a normal WordPress page carries [tendlio_free_gift], exclude it from page caching, like cart and checkout. The offer it shows depends on the shopper's cart, so a cached copy can show the wrong one. The claim itself still works from a stale page, because the button fetches a fresh key when clicked.
Plugin by plugin #
WP Rocket #
- Open Settings > WP Rocket > File Optimization.
- Under Delay JavaScript Execution, add
tendlioto Excluded JavaScript Files. We didn't find a Tendlio entry under One-click exclusions. - If Load JavaScript deferred is on, add
tendlioto that feature's exclusion list too. - If Remove Unused CSS is on, paste the CSS list into its CSS safelist.
Source: WP Rocket Delay JavaScript Execution, defer exclusions, defer field example, and Remove Unused CSS. Verified 23 August 2026.
LiteSpeed Cache #
- Open LiteSpeed Cache > Page Optimization > Tuning. Add
tendlioto JS Excludes and JS Deferred/Delayed Excludes. - If Guest Mode is on, also add it to Guest Mode JS Excludes. (LiteSpeed's
data-no-defer="1"tag is an alternative; we don't add it.) - Paste the CSS list under Tuning CSS > UCSS Selector Allowlist. Leave HTML Settings > Remove Query Strings off, save, and purge.
Source: LiteSpeed Cache Page Optimization. Verified 23 August 2026.
Autoptimize #
- Open Settings > Autoptimize > JS, CSS & HTML > JavaScript Options.
- Add
tendlioto Exclude scripts from Autoptimize:, especially if Also aggregate inline JS? is on. - If you optimize CSS too, add it to Exclude CSS from Autoptimize:. Autoptimize on its own has no unused-CSS safelist.
Source: Autoptimize plugin FAQ. Verified 23 August 2026.
SiteGround Speed Optimizer #
- Go to Speed Optimizer > Frontend > JavaScript.
- In Exclude from Deferral of Render-blocking JS, select the six Tendlio handles. The docs confirm minify and combine exclusion dropdowns but don't name them; select the same handles there.
- Leave Remove Query Strings From Static Resources off, or have a developer exclude Tendlio paths through SiteGround's
sgo_rqs_excludefilter;sgo_javascript_combine_exclude_all_inlinekeeps inline scripts out of combining.
Source: SiteGround Frontend Optimizations and custom filters. Verified 23 August 2026.
Perfmatters #
- Go to Perfmatters > JavaScript. Add
tendlioto Excluded from Delay and Exclude from Deferral, whichever you use. - If JS minification is on, add it to Excluded from Minification too.
- Under Perfmatters > CSS > Remove Unused CSS, paste the list into Excluded Selectors. Keep your Used CSS Method as is.
Source: Perfmatters delay JavaScript, defer JavaScript, and Remove Unused CSS. Verified 23 August 2026.
FlyingPress #
- Under FlyingPress > Optimizations > Delay JavaScript, add
tendlioto the exclusion input (the docs don't name it; go by the screen). - Go to Remove Unused CSS > Include CSS Selectors and paste the safelist (current docs use that name, not the older Force include selectors).
- Purge and preload the affected pages.
Source: FlyingPress Delay All JavaScript and Remove Unused CSS. Verified 23 August 2026.
Jetpack Boost #
- Open Jetpack > Boost. For Concatenate JS, add the six Tendlio handles to Excluded Files.
- Defer Non-Essential JavaScript has no documented site-wide keyword field; its docs offer page URL patterns or a
data-jetpack-boost="ignore"tag, so don't assume Excluded Files covers deferral; check the screen or ask support. - Optimize CSS Loading documents regeneration, not a selector safelist. Regenerate its CSS after changes.
Source: Jetpack Boost settings and JavaScript deferral exclusions. Verified 23 August 2026.
WP Fastest Cache #
- Open WP Fastest Cache > Exclude and find the JavaScript rules.
- The docs don't name a keyword field for Delay JavaScript, so check the screen or ask support how to exclude
/wp-content/plugins/tendlio/. - Render Blocking Js documents
data-wpfc-render="false"anddata-cfasync="false"; we add neither.
Source: WP Fastest Cache Delay JavaScript and Render Blocking Js. Verified 23 August 2026.
W3 Total Cache #
- Go to Performance > Minify > Advanced.
- Add each Tendlio JavaScript path from your page source to Never minify the following JS files, one relative path per line. Don't rely on a bare keyword unless your version confirms partial matching.
- Save and purge. Files excluded here also stay out of Minify's async and defer groups.
Source: W3 Total Cache Minify settings and relative-path exclusion guidance. Verified 23 August 2026.
NitroPack #
- Go to NitroPack Dashboard > Cache Settings > Cache > Excluded Resources and enable it.
- Add a rule with
*tendlio*in Asset URL/Code for external JavaScript, then a second rule for inline JavaScript. - Leave Excluded Operations empty so all optimization skips them. Save and purge.
Source: NitroPack Excluded Resources and delay troubleshooting. Verified 23 August 2026.
Consent tools #
Our storefront script is first-party and functional: it measures your own widgets and talks to no advertising service. Don't work around your consent tool; allow-list /wp-content/plugins/tendlio/ in whichever necessary or functional category fits your policy, then test a product page before and after consent. CookieYes documents those categories and script URL patterns. Developers can wire consent through the tendlio_visitor_tracking_allowed filter (default true; false turns the measurement off). Source: CookieYes prior consent guide. Verified 23 August 2026.
Cloudflare #
Cloudflare says Rocket Loader handles inline and external scripts in order, and we haven't seen it cause a Tendlio problem. If it ever does, Cloudflare's per-script opt-out is data-cfasync="false"; we don't add it by default. Bot Fight Mode can answer our scripts' requests with a challenge page, and WAF rules can't skip it for one path. If checkout capture or the checkout greeting stops working, check Cloudflare Security Analytics for challenged requests. Sources: Rocket Loader, its script opt-out, and Bot Fight Mode. Verified 23 August 2026.
After you change a setting #
Save, clear the optimizer's page and file caches and any CDN cache, and regenerate used CSS if you changed an unused-CSS setting. Then open a product page in a private window and use the widget as a shopper would.
Then wait for real shoppers. Once page signals (the views and clicks our script reports) arrive again, the card returns to Running on its own and attribution picks up from that moment. Orders placed in between stay uncounted; we don't go back for them.
Frequently asked questions #
Will excluding Tendlio slow my site? #
Barely. The files are small, load only on pages that use them, and don't pull in jQuery. Everything else your optimizer does stays in place.
Why don't you add nowprocket or another opt-out yourselves? #
It would override your optimizer settings on every store and tie us to each vendor's tags. You decide what your optimizer skips.
Does this affect my Tendlio score? #
No. Both scores come from your orders and products. Page signals only measure storefront views, widget clicks, and which orders we can tie to a widget.
I fixed it. Why are the numbers still zero? #
Clear every cache, including your CDN, then wait for real shoppers. Counting starts from now; we don't rebuild the missing stretch.
Is checkout capture affected? #
Rarely. Capture fires after a shopper types, so a delay that waits for interaction has already lifted. A script error or bot challenge can still block it.
Which optimization plugin do I have? #
Look under Plugins > Installed Plugins in WordPress, then check your host's dashboard and CDN: either can optimize pages without a plugin of its own.