{"id":303797,"date":"2026-05-15T07:47:50","date_gmt":"2026-05-15T07:47:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tipjoy-tips-for-woocommerce\/"},"modified":"2026-05-15T07:47:18","modified_gmt":"2026-05-15T07:47:18","slug":"ecomtrackify-omni-tips-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ecomtrackify-omni-tips-for-woocommerce\/","author":14373742,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.11","stable_tag":"1.0.11","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Ecomtrackify Omni Tips for WooCommerce","header_author":"EcomTrackify","header_description":"Accept tips from customers across the WooCommerce journey \u2014 Cart, Checkout, Mini Cart, post-purchase pages, and anywhere via shortcode. Fixed, percentage, or custom amounts.","assets_banners_color":"73598f","last_updated":"2026-05-15 07:47:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ecomtrackify.com\/omni-tips","header_author_uri":"https:\/\/ecomtrackify.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.11":{"tag":"1.0.11","author":"hungjk07","date":"2026-05-15 07:47:18"}},"upgrade_notice":{"1.0.11":"<p>Plugin renamed to &quot;Ecomtrackify Omni Tips for WooCommerce&quot; with security and WordPress.org compliance fixes (output escaping, enqueued scripts, branding removed). Recommended for all users.<\/p>","1.0.10":"<p>Critical compatibility fix \u2014 resolves a JavaScript error (<code>wp is not defined<\/code>) and visible developer comments on the checkout page of classic themes (Storefront, Flatsome, OceanWP, Astra, etc.). Recommended for all users.<\/p>","1.0.9":"<p>Fixes dashboard totals to exclude unpaid post-purchase tips, hides the widget on empty carts, and prevents double tips when another tipping plugin is active.<\/p>","1.0.8":"<p>Initial release \u2014 add tipping to your WooCommerce store.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3532764,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3532764,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3532764,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3532764,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.11"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3532764,"resolution":"1","location":"assets","locale":"","width":1119,"height":793},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3532764,"resolution":"2","location":"assets","locale":"","width":1119,"height":793},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3532764,"resolution":"3","location":"assets","locale":"","width":652,"height":620},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3532764,"resolution":"4","location":"assets","locale":"","width":1673,"height":780},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3532764,"resolution":"5","location":"assets","locale":"","width":1676,"height":766},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3532764,"resolution":"6","location":"assets","locale":"","width":1676,"height":766},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3532764,"resolution":"7","location":"assets","locale":"","width":1669,"height":873}},"screenshots":{"1":"Tip widget on the cart page with fixed amounts","2":"Tip widget on checkout page before order notes","3":"Tip widget on order received page (Order completed)","4":"Dashboard showing tip statistics","5":"Settings \u2014 Display Locations","6":"Settings \u2014 Tip Amounts configuration","7":"Settings \u2014 Message configuration"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3148,617,8183,7586,286],"plugin_category":[45],"plugin_contributors":[263022,263023],"plugin_business_model":[],"class_list":["post-303797","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-donation","plugin_tags-tipping","plugin_tags-tips","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-ecomtrackify","plugin_contributors-hungjk07","plugin_committers-hungjk07"],"banners":{"banner":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/banner-772x250.png?rev=3532764","banner_2x":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/banner-1544x500.png?rev=3532764","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/icon-128x128.png?rev=3532764","icon_2x":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/icon-256x256.png?rev=3532764","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-1.png?rev=3532764","caption":"Tip widget on the cart page with fixed amounts"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-2.png?rev=3532764","caption":"Tip widget on checkout page before order notes"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-3.png?rev=3532764","caption":"Tip widget on order received page (Order completed)"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-4.png?rev=3532764","caption":"Dashboard showing tip statistics"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-5.png?rev=3532764","caption":"Settings \u2014 Display Locations"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-6.png?rev=3532764","caption":"Settings \u2014 Tip Amounts configuration"},{"src":"https:\/\/ps.w.org\/ecomtrackify-omni-tips-for-woocommerce\/assets\/screenshot-7.png?rev=3532764","caption":"Settings \u2014 Message configuration"}],"raw_content":"<!--section=description-->\n<p><strong>Ecomtrackify Omni Tips for WooCommerce<\/strong> adds a tipping option to your WooCommerce store. Customers can leave a tip directly on the cart, checkout, or mini cart with one click \u2014 added as a standard cart fee, compatible with every payment gateway.<\/p>\n\n<p>The plugin is lightweight, has no external dependencies on the public site, and works with any WooCommerce theme.<\/p>\n\n<h4>Who Is This For?<\/h4>\n\n<p>This plugin is built for any WooCommerce store where customers might want to show appreciation:<\/p>\n\n<ul>\n<li><strong>Restaurants &amp; food delivery<\/strong> \u2014 Accept tips on online orders<\/li>\n<li><strong>Cafes &amp; coffee shops<\/strong> \u2014 Digital tip jar at checkout<\/li>\n<li><strong>Salons &amp; spas<\/strong> \u2014 Let clients tip their stylist or therapist<\/li>\n<li><strong>Delivery &amp; courier services<\/strong> \u2014 Tip the driver at checkout<\/li>\n<li><strong>Nonprofits &amp; creators<\/strong> \u2014 Collect donations alongside purchases<\/li>\n<li><strong>Any service-based business<\/strong> \u2014 Boost team morale and revenue<\/li>\n<\/ul>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>3 Display Locations<\/strong> \u2014 Cart page, checkout page, and mini cart widget<\/li>\n<li><strong>Fixed Tip Amounts<\/strong> \u2014 Preset tip buttons (e.g., $2, $5, $10, $20) that customers can select with one click<\/li>\n<li><strong>Percentage Tips<\/strong> \u2014 Calculate tips based on order subtotal (e.g., 5%, 10%, 15%, 20%)<\/li>\n<li><strong>Custom Amount<\/strong> \u2014 \"Other\" button lets customers enter any tip amount with configurable min\/max limits<\/li>\n<li><strong>\"No Tip\" Option<\/strong> \u2014 Customers can easily decline \u2014 no pressure, no guilt<\/li>\n<li><strong>One-Click Auto-Apply<\/strong> \u2014 Tip is added instantly on click, no extra submit button needed<\/li>\n<li><strong>Tip Persistence<\/strong> \u2014 Selected tip stays when navigating between cart and checkout<\/li>\n<li><strong>Remove Tip<\/strong> \u2014 Customers can remove their tip at any time before payment<\/li>\n<li><strong>WooCommerce Blocks Support<\/strong> \u2014 Works with both classic shortcode-based and block-based cart\/checkout pages<\/li>\n<li><strong>HPOS Compatible<\/strong> \u2014 Full support for WooCommerce High-Performance Order Storage<\/li>\n<li><strong>Customizable Messages<\/strong> \u2014 Set your own widget title, description, button labels, and thank-you message<\/li>\n<li><strong>Tip Dashboard<\/strong> \u2014 View total revenue, tip count, conversion rate, average tip, and recent transactions<\/li>\n<li><strong>View Tracking<\/strong> \u2014 Track how many customers see the tip widget vs. how many actually tip<\/li>\n<li><strong>Live Preview<\/strong> \u2014 Preview your tip widget styling directly in admin settings before saving<\/li>\n<li><strong>Lightweight<\/strong> \u2014 No jQuery UI, no heavy dependencies. Clean code, fast loading<\/li>\n<li><strong>Developer Friendly<\/strong> \u2014 23+ hooks and filters for customization and extensibility<\/li>\n<li><strong>Translation Ready<\/strong> \u2014 Fully translatable with standard WordPress i18n<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to <strong>Omni Tips &gt; Settings<\/strong> and configure your tip amounts<\/li>\n<li>Choose where to show the widget (cart, checkout, mini cart)<\/li>\n<li>Customers see tip options and select an amount with one click<\/li>\n<li>The tip is added as a fee line item to the WooCommerce order<\/li>\n<li>Track your tip revenue in the <strong>Omni Tips &gt; Dashboard<\/strong><\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>tipjoy<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Make sure <strong>WooCommerce<\/strong> is installed and active.<\/li>\n<li>Navigate to <strong>Omni Tips &gt; Settings<\/strong> to configure your tip options.<\/li>\n<li>That's it! The tip widget will appear on your cart and checkout pages.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20woocommerce%20blocks%3F\"><h3>Does this work with WooCommerce Blocks?<\/h3><\/dt>\n<dd><p>Yes! This plugin is fully compatible with both classic shortcode-based and block-based cart and checkout pages. It automatically detects block pages and injects the widget via JavaScript.<\/p><\/dd>\n<dt id=\"can%20customers%20enter%20a%20custom%20tip%20amount%3F\"><h3>Can customers enter a custom tip amount?<\/h3><\/dt>\n<dd><p>Yes. Enable the \"Custom Amount\" option in settings. Customers click the \"Other\" button to enter any amount within the min\/max range you configure.<\/p><\/dd>\n<dt id=\"can%20customers%20remove%20a%20tip%20after%20adding%20one%3F\"><h3>Can customers remove a tip after adding one?<\/h3><\/dt>\n<dd><p>Yes. After selecting a tip, customers can click \"No Tip\" to remove it, or select a different amount. The tip can be changed or removed at any time before payment.<\/p><\/dd>\n<dt id=\"where%20does%20the%20tip%20appear%20on%20the%20order%3F\"><h3>Where does the tip appear on the order?<\/h3><\/dt>\n<dd><p>Tips are added as a fee line item on the WooCommerce order, labeled \"Tips\". It appears in the order totals alongside shipping, taxes, and other fees.<\/p><\/dd>\n<dt id=\"how%20is%20the%20percentage%20tip%20calculated%3F\"><h3>How is the percentage tip calculated?<\/h3><\/dt>\n<dd><p>Percentage tips are calculated based on the cart <strong>subtotal<\/strong> (product total only), excluding shipping, taxes, and other fees.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20all%20payment%20gateways%3F\"><h3>Does this work with all payment gateways?<\/h3><\/dt>\n<dd><p>Yes. Since tips are added as a standard WooCommerce cart fee before payment, they work with any payment gateway \u2014 Stripe, PayPal, Square, and all others.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20tip%20amounts%3F\"><h3>Can I change the tip amounts?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Omni Tips &gt; Settings &gt; Tip Amounts<\/strong> to configure fixed amounts, percentage amounts, or enable custom amounts with min\/max limits.<\/p><\/dd>\n<dt id=\"is%20this%20hpos%20compatible%3F\"><h3>Is this HPOS compatible?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares full compatibility with WooCommerce High-Performance Order Storage (HPOS).<\/p><\/dd>\n<dt id=\"can%20i%20show%20tips%20on%20the%20mini%20cart%3F\"><h3>Can I show tips on the mini cart?<\/h3><\/dt>\n<dd><p>Yes. Enable \"Mini Cart\" in <strong>Omni Tips &gt; Settings &gt; Display<\/strong> to show the tip widget in the mini cart sidebar or dropdown.<\/p><\/dd>\n<dt id=\"does%20this%20slow%20down%20my%20site%3F\"><h3>Does this slow down my site?<\/h3><\/dt>\n<dd><p>No. The plugin is lightweight with no external API calls, no heavy dependencies, and scripts are only loaded on WooCommerce pages where the widget is active.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20my%20theme%3F\"><h3>Does this work with my theme?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses standard WooCommerce hooks and clean CSS that works with any properly coded theme. It has been tested with popular themes including Flatsome, Astra, Storefront, OceanWP, and Kadence.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Plugin renamed to <strong>Ecomtrackify Omni Tips for WooCommerce<\/strong> (text domain <code>ecomtrackify-omni-tips-for-woocommerce<\/code>).<\/li>\n<li>Security: escaped all dynamic output in admin and frontend templates (<code>esc_html<\/code>, <code>esc_attr<\/code>, <code>esc_url<\/code>, <code>wp_kses_post<\/code> for <code>wc_price()<\/code> HTML).<\/li>\n<li>Security: wrapped all <code>$_POST<\/code>\/<code>$_GET<\/code> superglobals with <code>wp_unslash()<\/code> before sanitization.<\/li>\n<li>Security: switched all <code>json_encode()<\/code> calls to <code>wp_json_encode()<\/code>.<\/li>\n<li>Compliance: replaced <code>date()<\/code> with <code>gmdate()<\/code> for ISO date strings (Plugin Check <code>RestrictedFunctions.date_date<\/code>).<\/li>\n<li>Compliance: added translator comments and switched to numbered placeholders (<code>%1$s<\/code>\/<code>%2$s<\/code>) for sprintf strings.<\/li>\n<li>Compliance: split HTML out of <code>__()<\/code> translation strings.<\/li>\n<li>Compliance: object-cached the per-site settings query and annotated remaining <code>$wpdb<\/code> calls with <code>phpcs:ignore<\/code> for Plugin Check.<\/li>\n<li>Compliance: renamed main plugin file to <code>ecomtrackify-omni-tips-for-woocommerce.php<\/code> and replaced <code>$variable<\/code> interpolation in SQL with <code>{$wpdb-&gt;prefix}<\/code> form so Plugin Check's <code>WordPress.DB.PreparedSQL.NotPrepared<\/code> rule can verify placeholders.<\/li>\n<li>Compliance: wrapped <code>$_POST['settings']<\/code> in <code>map_deep(wp_unslash(...), 'sanitize_text_field')<\/code> for static analyzers.<\/li>\n<li>Compliance: removed <code>Domain Path: \/languages<\/code> header (folder does not ship) and the manual <code>load_plugin_textdomain()<\/code> call (WordPress.org auto-loads translations since WP 4.6).<\/li>\n<li>Compliance: moved frontend block-fallback inline <code>&lt;script&gt;<\/code> into <code>assets\/js\/block-inject.js<\/code> and enqueued via <code>wp_enqueue_script<\/code>.<\/li>\n<li>Compliance: removed frontend \"Powered by\" branding link and related CSS.<\/li>\n<li>Compliance: removed all locked\/preview Pro UI from settings and dashboard.<\/li>\n<li>Header: added <code>Requires Plugins: woocommerce<\/code>; bumped <code>Tested up to: 6.9<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Fix: <code>Uncaught ReferenceError: wp is not defined<\/code> on classic shortcode-based themes (Storefront, Flatsome, OceanWP, Astra, etc.) \u2014 the block-fallback inject script now guards <code>typeof wp !== 'undefined'<\/code> before accessing <code>wp.hooks<\/code>.<\/li>\n<li>Fix: developer HTML comments inside the tip widget template leaked as visible text on the checkout page of some classic themes (Storefront) when the order review table was re-rendered via AJAX. Comments removed from <code>tip-widget.php<\/code> \u2014 functional output unchanged.<\/li>\n<li>Fix: also exclude <code>PENDING_PAYMENT<\/code> transactions from the Dashboard \"Recent Transactions\" list (totals were already fixed in 1.0.9).<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<p>Fixes dashboard totals to exclude unpaid post-purchase tips, hides the widget on empty carts, and prevents double tips when another tipping plugin is active.<\/p>\n\n<ul>\n<li>Fix: excluded post-purchase tips with <code>PENDING_PAYMENT<\/code> status from Dashboard totals \u2014 only PAID tips count toward revenue.<\/li>\n<li>Fix: empty cart on Cart \/ Mini Cart \/ Checkout pages no longer renders the tip widget.<\/li>\n<li>Fix: widget no longer stacks on top of an existing tip fee \u2014 detects tip-like fees\/items from any tipping plugin (TipJoy, WooCommerce Tipping, YITH Tips, gratuity-style plugins).<\/li>\n<li>Fix: tip widget no longer appears on <code>\/checkout\/order-pay\/{id}\/<\/code> of a tip order (prevented tip-on-tip stacking).<\/li>\n<li>Fix: per-request location dedup for cart-context renders \u2014 prevents duplicate widget when a third-party plugin fires the same WC hook twice.<\/li>\n<li>Dev: new filters \u2014 <code>tipjoy_tip_name_patterns<\/code>, <code>tipjoy_context_has_tip<\/code>, <code>tipjoy_empty_cart_skip_locations<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Cart, checkout, and mini cart tipping<\/li>\n<li>Fixed, percentage, and custom tip amounts<\/li>\n<li>Auto-apply tip on button click (no extra submit button)<\/li>\n<li>WooCommerce Blocks compatibility with JS fallback injection<\/li>\n<li>HPOS compatibility declared<\/li>\n<li>Basic dashboard with 30-day statistics<\/li>\n<li>Customizable messages (title, description, labels)<\/li>\n<li>Preview tip widget in admin settings<\/li>\n<li>20 hooks\/filters for extensibility<\/li>\n<\/ul>","raw_excerpt":"Accept tips on Cart, Checkout, and Mini Cart with fixed amounts, percentages, or custom tips. Lightweight WooCommerce tipping plugin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/303797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=303797"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hungjk07"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=303797"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=303797"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=303797"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=303797"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=303797"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=303797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}