=== Cashback Tracker Pro === Contributors: keywordrush.com Run a cashback website: members earn, you pay out, the plugin keeps the books. == Installation == **Requirements** * PHP 8.0+. * WordPress 7.0+. This section describes how to install the plugin and get it working 1. Upload `cashback-tracker` folder to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Configure plugin settings 4. [User Guide](https://ctracker-docs.keywordrush.com/) == Changelog == = 3.0.0 = Cashback Tracker now runs the whole cashback site, not just the tracking. 2.x brought the clicks in and imported the coupons; everything after that — accounts, balances, payouts, referrals — you had to assemble from other plugins. 3.0 owns the entire cycle. **Before you upgrade** * Important: check Settings → General → Cashback features. This setting used to only hide the cashback box on shop pages; it now does what it always described and turns cashback off across the whole site. If yours is set to "Disabled" and you DO run a cashback programme, set it back to "Enabled" after updating, or cashback rates, member balances, payouts and referrals will stay hidden. Nothing is deleted either way, and switching back restores everything. * Changed: cashback is no longer mirrored into myCred as points. Balances, history and payouts now live in Cashback Tracker's own ledger, which the member area and payout requests are built on. Points your members already hold in myCred stay there and remain spendable. * Requires PHP 8.0+ and WordPress 7.0+. **Your members** * Member account page with cashback balances and full history — [cashback-account], plus [cashback-balance] for sidebars and landing pages. * A first-party cashback ledger behind it: every order, bonus, adjustment and payout is a transaction, with a holding period you set and a backfill of your existing order history. * Member emails for every step — welcome, order registered, order approved, order declined, plus the payout and referral messages — each with its own subject, message and on/off switch. * Members can rate shops out of five and leave a short review, so visitors can see which shops actually pay. Reviews from members who have earned cashback at that shop carry a "Verified cashback" badge. * A member's first review waits for your approval; after that theirs appear straight away. Reviews are moderated on the WordPress Comments screen you already know, and a single setting turns them off entirely without deleting what you have. * Referral program: every member gets a personal invite link, with a one-off bonus for the referrer, a welcome bonus for the friend and an ongoing share of what that friend earns. Each is optional. * Bonuses only pay once the invited member has earned real cashback, within a time limit you set, so a cheap purchase cannot farm a large bonus. Members get a "Refer a friend" tab with their link and earnings; you get a Referrals screen showing who invited whom, so one account collecting many signups is easy to spot. * Changed: the wp-admin "My orders" screen now redirects to the frontend account page. **Getting members paid** * Members request payouts from their available balance, with a minimum you set and payout methods you define. Cashback Tracker never moves money: it records the request, you pay from your own bank or PayPal, and you mark it paid. * Payout methods ask for as many details as you need — account holder, IBAN, BIC and so on — instead of one free-text box, with presets for PayPal, bank transfer, Wise, crypto and gift cards. Details are checked as they are entered and shown as labelled lines in your queue. * Payout queue: approve, pay or reject rows together, filter by member, method, date or amount, and open a Details view showing where to send the money with a copy button on every value, what the member holds, where their cashback came from and their earlier payouts. Every row in a bulk action reports its own result, so one payout somebody else already moved does not stop the rest. * Export the queue as a CSV per payout method, pay the batch at your bank, fill in the status column and import the same file back to mark rows paid or failed. Rows match on payout id, the amount in your file is never written, and checking a file first shows what every row would do without changing anything. * Record what you actually paid: a payment reference the member sees, a private note only you see, and the real payment date rather than the moment you ticked the box. Every change is logged with who made it. * A payment that bounces can be marked Failed. The money goes back to the member's balance, they are told to check their details and can request again — previously a returned transfer needed the database editing by hand. * Payout emails for members, plus a notification to you on every new request. **Your storefront** * A shop directory with category pages, A–Z browsing and sorting by highest cashback or by rating — your visitors can finally find a store without a search engine. Shop categories are live at last: the taxonomy had shipped unregistered for years. Shop lists also load far fewer database queries per page. * Store search with instant results, on the directory and anywhere you place [cashback-shop-search]. * Coupons you edit stay edited. Imported coupons are matched against what the network sent last time instead of being wiped and re-created, so only the fields you changed are kept — everything else keeps updating from the network, and "Revert" hands a field back. You can add your own coupons by hand too, and no import ever touches them. * Coupons admin screen: search, filter by shop, type, origin and status, and hide a coupon without deleting it. * Visitors can say whether a code worked, and the ones that work rise to the top of the list. One vote per coupon per visitor, and you can switch the whole thing off. * Blocks — Cashback shops, Cashback coupons, Shop search and Cashback balance — anywhere the block editor works, including a block-based sidebar, with a live preview. Pick shops by searching for them by name instead of hunting for post IDs, and let a Coupons block follow the page it sits on, so one block in a shop template shows each shop's own offers. * An SEO title and a short tagline for every shop, shown under the shop name on cards and above the description on the shop page. Meta descriptions and SEO titles now reach Yoast, Rank Math, SEOPress and The SEO Framework — only fields you left empty there are filled, nothing you typed is ever replaced. Shop and category pages also describe themselves with structured data. * Write shop descriptions, meta descriptions, taglines and coupon text with AI, using your own provider. Your key is stored by WordPress itself under Settings → Connectors and shared with every plugin on your site — Cashback Tracker never stores it. Generate one shop from its editor, rewrite one coupon from the Coupons screen, or run a capped bulk job with progress and a cancel button. Optional web search bases descriptions of less well-known merchants on the merchant's own website rather than guesswork. * Your coupons can appear inside Content Egg product blocks (Content Egg → Settings → Shops), carrying your member's tracking id. Needs Content Egg 21.7.0 or later; coupons you type into Content Egg yourself always win over an imported one with the same code. * Prefer to run it as a coupon site? Settings → General → Cashback features → Disabled takes cashback off the front end while shops, coupons, search, categories, reviews and tracking links keep working. Shop tiles show a coupon count where the rate used to be, with a Top offer box on the shop page and a "Most coupons" sort in the directory. * [cashback-shops] now uses the same shop card as the directory, gains category and letter attributes, and can sort by highest cashback or rating. Every existing attribute still does what it always did, and a template you copied into your theme still wins. * Coupon buttons follow the Main color like the rest of the storefront, and clicking a code reveals just that code, with a copy button. **Running the site** * A new admin app with Overview, Orders, Members, Payouts, Coupons and Networks screens. Add, edit, approve and decline orders by hand, and adjust or reverse member balances — editing an approved order corrects the balance automatically. * Rebuilt settings: one modern page with tabs instead of a wall of WordPress options screens, your emails on their own tab, and every network configured on the Networks screen alongside custom ones. Saving no longer contacts your affiliate networks, one invalid field no longer discards the rest of your changes, a network cannot be switched on while a credential it needs is empty, and passwords and API secrets are never sent back to the browser. * Custom networks — work with any postback-capable affiliate network without a dedicated module. Add advertisers by hand, receive orders on a token-secured postback endpoint with per-network field mapping, IP allowlist, optional HMAC signature, amount ceiling and rate limiting (off by default), and read its own log showing exactly what was sent and why it was accepted or rejected. * Two new network modules, both Beta: Rakuten Advertising and AccessTrade (Vietnam). Check your first orders and shop links before relying on them. Rakuten keeps only about two weeks of transactions, so if your scheduled tasks stop for longer than that, those orders cannot be recovered. * Advertisers now live in a dedicated table with status tracking — paused, rejected, disappeared — and a shop-page policy you choose per status. * Shop refreshes run as scheduled background batches on Action Scheduler instead of one long request. They resume where they left off, retry by themselves after a network error, never run twice over the same list, and are spread out instead of every network starting at the same moment. A CJ refresh used to run for up to 45 minutes in a single background task. * Every network now reports the shops it could not read, so a refresh that hit a rate limit never removes shops that are still live. The Networks screen shows each network's shop count and last refresh, a progress bar while one is running, and a Shops panel listing recent refreshes and anything that failed to load. * If scheduled tasks stop running on your site, Cashback Tracker now tells you. Nothing is fetched in the background when that happens — shop lists, coupons and new orders all stop updating — and previously the only sign was data quietly going stale. * A single site currency, with automatic ECB exchange rates and manual overrides. Amounts are converted as orders arrive and the rate is frozen on the row. * Award myCred points, or GamiPress points, badges and ranks, for cashback activity — orders tracked, approved or declined, payouts and referrals. You set the amounts in myCred or build the requirements in GamiPress; Cashback Tracker just reports what happened. * Security: requests to affiliate network APIs now verify the TLS certificate. They carry your API keys, so this closes the possibility of those credentials being read or your order data tampered with in transit. **Fixed** * Pending orders whose amount a network later revised were never updated, so members were credited on the original figure. * When two of your networks carry the same shop, the one paying your members more is now used. Previously it was whichever network happened to be imported first, so a shop listed in two networks could send clicks through the lower rate — and which one won could differ between two sites with the same networks connected. Percentage rates are preferred over flat amounts, since the two cannot be compared without knowing the basket. * Expired coupons were shown to visitors forever. They are now hidden, and imported ones are cleared out 30 days after they expire. * Pepperjam only ever imported the first page of your joined programmes, and dropped every programme paid a flat amount rather than a percentage. * On sites with coupon import enabled, the post body could come back empty when a page was rendered outside the main loop — by a block, by another plugin, or in an email. * Shop meta descriptions were only used on sites with no SEO plugin installed. On a site running Yoast or similar they were generated and then read by nothing. * [cashback-coupons module_id="..."] crashed the page it was on. It has never worked on any supported PHP version. * Inrdeals and Cuelinks could crash with a fatal error when a shop was looked up that was not already stored. * A CJ or Admitad advertiser with incomplete data was imported as a broken shop that overwrote a good one. * Shop pages created in the background were sometimes assigned to no author at all, on sites whose administrator account is not named "admin". * Matching a store by web address mangled addresses that contain "www" inside the name, and a few shops were stored with a redirect address instead of their own website — AliExpress from Linkwise, XL Moto from CJ — so nothing ever matched them. Corrected the next time that network refreshes its shops. * Each affiliate network now uses its own connection settings. Previously whichever network ran first decided the timeout and user agent for all of them. = 2.9.0 = * New: WordPress 7.0 compatibility. = 2.8.2 = * Improved: New algorithms for processing Linkwise orders to enhance optimization. = 2.8.0 = * New: Added 'Publisher currency' option to the CJ module. = 2.7.0 = * New: Coupon links have been updated to function as cashback tracking links. * Improved: Migrated from coupon feed to AWIN API for retrieving coupons and deals. = 2.6.2 = * Fix: CJ module: Advertiser deeplinks. = 2.6.0 = * New: Admitad module: Sales region filter for coupons. = 2.5.2 = * Fix: Impact Radius module: Advertiser logos. = 2.5.0 = * New: INRDeals (beta) module. = 2.4.0 = * New: Impact Radius module. = 2.3.0 = * New: Pepperjam module. = 2.2.0 = * New: Detailed cashback info for Linkwise advertisers. = 2.1.0 = * New: Option to hide cashback section. = 2.0.0 = * New: Linkwise module. = 1.9.0 = * New: Coupon shortcode. * New: Coupon widget. * New: Shop widget. = 1.8.0 = * New: Auto import coupons and deals to Shop pages. = 1.6.5 = * Improvement: Refresh advertisers by cron. = 1.5.0 = * New: Show cashback notice for WooCommerce products. = 1.4.1 = * Improvement: Better logo quality for Cuelinks advertisers. = 1.4.0 = * New: Cuelinks module. = 1.3.0 = * New: Commission Junction module. = 1.2.0 = * New: Convert all WooCommerce external links to tracking links automatically. = 1.1.0 = * New: Use author ID instead of user ID in tracking links. = 1.0.0 = * Initial release.