Title: Leat
Author: Rens Nitert
Published: <strong>28 January, 2025</strong>
Last modified: 13 òktober, 2026

---

Search plugins

![](https://ps.w.org/leat-crm/assets/banner-772x250.png?rev=3743744)

![](https://ps.w.org/leat-crm/assets/icon.svg?rev=3529801)

# Leat

 By [Rens Nitert](https://profiles.wordpress.org/rensleat/)

[Download](https://downloads.wordpress.org/plugin/leat-crm.5.5.0.zip)

 * [Details](https://pap-cw.wordpress.org/plugins/leat-crm/#description)
 * [Reviews](https://pap-cw.wordpress.org/plugins/leat-crm/#reviews)
 *  [Installation](https://pap-cw.wordpress.org/plugins/leat-crm/#installation)
 * [Development](https://pap-cw.wordpress.org/plugins/leat-crm/#developers)

 [Support](https://wordpress.org/support/plugin/leat-crm/)

## Description

Enhance your customer experience with Leat.

Leat’s all-in-one platform empowers you to:

 * Quickly set up a fully customized loyalty program and rewards, with no coding
   required
 * Effortlessly engage customers using targeted vouchers and promotions
 * Drive growth with real-time analytics and insights
 * Seamlessly manage your loyalty program both online and offline

#### Key Features

 * **Points & Rewards Program** – Create a flexible points system where customers
   earn points for purchases
 * **Custom Rewards** – Design attractive rewards that keep customers coming back
 * **Automated Marketing** – Send targeted emails and notifications based on customer
   behavior
 * **Real-time Analytics** – Track program performance and customer engagement
 * **WooCommerce Integration** – Seamlessly works with your existing store
 * **Multi-channel Support** – Works both online and in physical stores
 * **Customer-entered amounts** – Let customers choose the amount of a gift card,
   prepaid top-up or voucher, from a range or a list of amounts you set.

#### External Services

This plugin requires an API connection to [Leat](https://www.leat.com) and its business
portal ([business.leat.eu](https://business.leat.com)) for core functionality including
reward management, customer tracking, and loyalty point calculations.

**Data transmitted includes**:
 – Customer information (email, name, order history,
purchase categories) – WooCommerce order data (order totals, products purchased,
dates) – Store configuration data – Reward and voucher definitions – Store performance
metrics and analytics

All data is transmitted securely via HTTPS to Leat’s servers in compliance with 
GDPR and other applicable privacy regulations. Data processing occurs on both leat.
com and business.leat.eu domains.

Users of this plugin should ensure they comply with the terms and privacy policies
of Leat before using this plugin:

 * [Terms of Service](https://www.leat.com/legal/terms-and-conditions)
 * [Privacy Policy](https://www.leat.com/legal/privacy-policy)

## Screenshots

[⌊Earn rules: decide how customers earn points for orders, birthdays, sign-ups and
social follows.⌉⌊Earn rules: decide how customers earn points for orders, birthdays,
sign-ups and social follows.⌉[

Earn rules: decide how customers earn points for orders, birthdays, sign-ups and
social follows.

[⌊Loyalty dashboard: a customer loyalty page built from blocks, showing credits,
vouchers, ways to earn and rewards.⌉⌊Loyalty dashboard: a customer loyalty page 
built from blocks, showing credits, vouchers, ways to earn and rewards.⌉[

Loyalty dashboard: a customer loyalty page built from blocks, showing credits, vouchers,
ways to earn and rewards.

[⌊Tiers: show each tier, its perks and how close a customer is to the next one.⌉⌊
Tiers: show each tier, its perks and how close a customer is to the next one.⌉[

Tiers: show each tier, its perks and how close a customer is to the next one.

[⌊Gift cards: sell Leat gift cards as WooCommerce products, schedule delivery and
redeem them in the cart.⌉⌊Gift cards: sell Leat gift cards as WooCommerce products,
schedule delivery and redeem them in the cart.⌉[

Gift cards: sell Leat gift cards as WooCommerce products, schedule delivery and 
redeem them in the cart.

## Blocks

This plugin provides 13 blocks.

 *   Referral Rewards Display referral program rewards and sharing options
 *   Spend Rules List Display available rewards that users can redeem with their
   credits
 *   Earn Rules List Display available ways to earn loyalty points
 *   Add to Wallet Button Link or button to add the loyalty card to a mobile wallet(
   enrolled members only)
 *   Loyalty Heading Dynamic heading that changes based on user enrollment status
 *   Coupons List Display user's available coupons from loyalty program
 *   Gift Card Balance Let customers check the balance and expiry date of a gift
   card by entering its code
 *   Join Button Button to join the loyalty program
 *   Tiers List Display loyalty program tier levels
 *   Product Points Display Display points customers can earn on product pages
 *   Loyalty Paragraph Dynamic paragraph that changes based on user enrollment status
 *   Points Display Display points that customers will earn from their order in 
   the checkout.
 *   Rewards (Checkout) Display and redeem available rewards during checkout

## Installation

 1. Upload `leat-crm-X.Y.Z.zip` to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress
 3. Add your API key in the plugin settings.
 4. Sync your rewards and vouchers with Leat to get started.
 5. Build your loyalty pages with the Leat blocks in the WordPress block editor.
 6. Add the loyalty blocks to any page or post to show points, rewards, and more.

## FAQ

### How do I get an API key?

Sign up for a Leat account at [business.leat.eu](https://business.leat.com). Once
logged in, navigate to Settings > API Integration to find your API key.

### Can I customize the loyalty dashboard appearance?

Yes! The dashboard can be customized using CSS.

### Does this work with my existing WooCommerce store?

Yes, Leat integrates seamlessly with WooCommerce.

### How are points calculated?

By default, customers earn 1 point per currency unit spent (e.g., 1 point per $1).
This can be customized in your Leat business portal, where you can also set up multipliers
for specific products or categories.

### Is this GDPR compliant?

Yes, Leat is fully GDPR compliant. We process all data in accordance with EU privacy
regulations and provide the necessary tools for handling data subject requests. 
See our [Privacy Policy](https://www.leat.com/legal/privacy-policy) for more details.

### What happens if I uninstall the plugin?

Your customer data and loyalty program settings are safely stored in your Leat account.
If you reinstall the plugin later, you can simply reconnect using your API key and
all data will be restored.

### How do I display loyalty content on my site?

Use the Leat blocks in the WordPress block editor. Add them to any page or post 
to show the loyalty dashboard, a customer’s point balance, rewards, and more — no
shortcodes required.

The legacy [leat_dashboard], [leat_reward_points] and [leat_referral] shortcodes
were removed in 5.0.0. If you used them, rebuild those areas with the Leat blocks
on a page (preferred), or use a Content Block. See the migration guide: https://
leat-docs.vercel.app/wordpress-plugin/migrating-from-shortcodes

### General Upgrade Guidelines

Before major updates (x.0.0):

 1. Backup site and database
 2. Test on staging environment
 3. Test purchase flow, points, vouchers, gift cards
 4. Verify loyalty data intact

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Leat” is open source software. The following people have contributed to this plugin.

Contributors

 *   [ Rens Nitert ](https://profiles.wordpress.org/rensleat/)

[Translate “Leat” into your language.](https://translate.wordpress.org/projects/wp-plugins/leat-crm)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/leat-crm/), check out
the [SVN repository](https://plugins.svn.wordpress.org/leat-crm/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/leat-crm/) by [RSS](https://plugins.trac.wordpress.org/log/leat-crm/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 5.5.0

 * On WordPress 7.1 and later, choose a custom icon for each earn rule from any 
   registered icon collection, including a new Leat collection, while rules without
   a choice keep their current icon.
 * Add a Gift Card Balance block where customers enter a gift card code to see its
   balance and expiry date.
 * On WordPress 7.1 and later, upload your own filled SVG icons in the earn rule
   icon picker and use them on any earn rule.
 * Fully remove the new account when joining the loyalty program fails on a multisite
   network, so the customer can sign up again with the same email address instead
   of being told it is already registered.
 * Earn rule icons now follow the `--leat-icon-color` CSS variable, so a theme can
   recolor the default icons and picked icons alike instead of the default icons
   always showing in black.
 * Modernize frontend block assets and registration for more reliable editor and
   checkout compatibility.
 * Refreshed the WordPress.org plugin page with a new banner and screenshots of 
   earn rules, the loyalty dashboard, tiers and gift cards.
 * The Leat gift card product edit screen no longer shows the Prepaid Top-up checkbox
   or the “Customer enters an amount” field, and variable products no longer show
   that amount field either.
 * A gift card product that is also marked as a prepaid top-up now issues only the
   gift card for a payment, and saving the product or its variations turns the prepaid
   setting off.
 * Gift card balance lookups now reveal only a card’s status, balance and expiry
   date and are limited to 10 per IP address every 10 minutes, and classic checkout
   applies a gift card without a separate balance lookup.
 * Keep loyalty program membership separate for each site in a multisite network,
   so a customer who joined on one site is no longer treated as a member on every
   other site.
 * Report when Leat is temporarily unreachable instead of showing a loyalty member
   as not enrolled, failing their enrollment outright, or presenting an empty loyalty
   history as if it were real.
 * Confirm compatibility with WordPress 7.1 and WooCommerce 11.2.1.

#### 5.4.0

 * Coupons no longer discount **Leat gift card** products, including gift card products
   you convert to the new type, so a gift card is always worth the amount the customer
   chose.
 * Existing gift card products can be converted to the **Leat gift card** type in
   one click from the Products list or the product’s edit screen when their setup
   maps exactly, and the conversion can be undone.
 * The setup wizard now creates **Leat gift card** products without needing WPC 
   Name Your Price, and refuses gift card amounts it can’t sell, such as a missing
   minimum or maximum or a price of 0, instead of creating a product nobody can 
   buy.
 * New **Leat gift card** product type selling a fixed or promotional amount, a 
   choice of amounts or a customer-entered amount, where customers choose the amount,
   recipient, message and delivery date on the product page and can edit them in
   the cart and checkout.
 * Gift card, prepaid and voucher products can now let customers enter their own
   amount, from a list or a range with an optional minimum and maximum, without 
   the WPC Name Your Price plugin.
 * Stores that used WPC Name Your Price for Leat products are moved to Leat’s own
   amount field automatically on update, every gift card, top-up and voucher keeps
   its value, including for orders and carts from before the update, and WPC no 
   longer changes the price of Leat products, even when it is activated later.
 * Saving a gift card, prepaid or voucher product whose customer-entered amounts
   can’t be sold, such as a maximum below the minimum or a list without a valid 
   amount, now shows a warning explaining what to fix.
 * On multilingual stores the loyalty opt-in checkbox on the block checkout now 
   shows in the visitor’s language, and Leat no longer fills the debug log with “
   translation loading was triggered too early” and gift card delivery date `placeholder`
   notices on every page load.
 * On the block checkout, an order whose gift cards each have their own recipient
   no longer shows a gift card recipient, message or delivery date that the buyer
   typed before the checkout recipient fields were hidden.
 * A gift card line whose recipient an admin changed in the delivery panel is now
   labelled “changed by admin” instead of “chosen by the customer”.
 * The gift card delivery panel only offers “Re-send this line” when that line has
   an issued gift card that was not cancelled by a refund.
 * The Re-send button in the gift card delivery panel now re-sends only gift cards
   that were already delivered, so a card scheduled for a later date is no longer
   sent early.
 * Refunding a gift card order no longer adds a “pending scheduled send cancelled”
   note when no send was scheduled.
 * A partial refund now cancels the gift card of the order line you refunded instead
   of the first gift card line of the same product, which may already have been 
   sent to someone else.
 * Editing a product no longer writes a “wc_enqueue_js is deprecated” notice to 
   the debug log on WooCommerce 10.4 and later.
 * Customers now get their credits back automatically when a redeemed reward’s coupon
   cannot be created, and free product rewards whose products are all unavailable
   can no longer be redeemed.

#### 5.3.0

 * Gift card recipient addresses can now be corrected from the WooCommerce order.
   The “Leat: Gift Card Delivery” panel shows which address the card will be delivered
   to, lets staff fix a mistyped one, and re-sends the same card — same code, balance
   and message. Every change is recorded as an order note.

#### 5.2.0

 * Gift card and birthday checkout fields now show in the shop’s language. In the
   Blocks checkout, the gift card fields (recipient email, name, message, scheduled
   delivery) and the birthday field were registered before WordPress had loaded 
   the plugin’s translations and before multilingual plugins such as Polylang had
   picked the visitor’s language, so their labels always appeared in English. They
   are now registered after translations are available, which also removes the “
   translation loading triggered too early” notice for these fields on WordPress
   6.7+. The plugin now also ships German (de_DE), French (fr_FR) and Italian (it_IT)
   translations alongside the existing Dutch ones.
 * Fixed gift cards being lost when a checkout was submitted twice. A repeated “
   Place order” click (or a retried payment) could create a second order at the 
   full price while the gift card had already been debited for the first, unpaid
   order, so customers were asked to pay the full amount at the payment provider
   and the card balance was gone until staff topped it up manually. The applied 
   gift card now stays with the checkout: a repeated submit resumes the same order
   at the same reduced total, a card is debited only once per checkout, and when
   a new order replaces an unpaid one the earlier debit is returned to the card 
   first. Gift card value debited for an order that is cancelled, fails or expires
   unpaid is now returned to the card automatically, with an order note. If a card’s
   balance changes before the order is placed, the customer is told and the order
   total is corrected instead of the difference being absorbed silently; if a card
   can no longer be charged at all, it is removed from the order, the total is restored
   and the customer sees why. The Blocks checkout now debits the gift card as well(
   it previously never did) and no longer subtracts the card twice from the order
   total. Two submits that arrive at the same moment are now serialised, so a simultaneous
   double click cannot debit the same card twice; if the gift card is momentarily
   busy with another attempt at the same order, the checkout stops with a message
   asking the customer to try again rather than placing an order the card does not
   back. If Leat cannot be reached to return a card’s value, the return is retried
   in the background instead of being left to staff. An order that is manually marked
   as paid but whose gift card can no longer be charged now moves to on-hold, so
   it is not fulfilled while part of the total is uncollected.

#### 5.1.2

 * Store managers can now filter the WooCommerce Orders list to find orders with
   scheduled gift card deliveries. The filter works with both High-Performance Order
   Storage and the legacy order screen, including schedules saved by Checkout Blocks.
 * Viewing or updating the cart is faster, and no longer stalls when Leat is slow
   to answer. Every single cart request used to make two uncached calls to Leat –
   one to look up the shopper’s contact, one to estimate the points the order would
   earn – so a slow connection added that wait to every add-to-cart, coupon and 
   checkout update. Both results are now cached, the calls are skipped entirely 
   for empty carts and stores that aren’t connected, they use a much shorter timeout,
   and after a failure the plugin pauses for five minutes instead of retrying on
   every request. Joining the loyalty programme still takes effect immediately.
 * Removed the debug messages the loyalty blocks wrote to the browser console on
   every page view, including on cart and checkout. Genuine error reporting is unchanged.
 * Redeeming a reward no longer reports “We couldn’t add your reward to the cart
   automatically” when the cart is actually fine. The block used to read the cart
   before applying the reward, so a store where any other plugin or theme breaks
   WooCommerce’s Store API failed at that first read – before the reward had been
   applied at all. The read is gone: the reward is applied first, and if the response
   can’t be read back the customer is simply shown their discount code, with links
   to their cart and checkout, instead of an error and a retry button that can never
   succeed.

#### 5.1.1

 * The Leat debug panel — the floating panel shop managers can open on an order,
   a user profile, or the Leat settings screen — now uses a light theme that matches
   the WordPress admin around it, instead of the dark panel it used before. Text,
   badges and buttons were recoloured for readable contrast on a light background,
   and long identifiers such as order and gift card UUIDs now wrap inside the panel
   rather than running past its edge and overlapping the line beneath them.
 * Gift card recipient details entered in the block-based checkout are now captured
   reliably. Previously the plugin copied the recipient email, name, message and
   scheduled delivery date onto the order at a moment when WooCommerce had not yet
   attached them, so whether they were captured depended on whether the buyer’s 
   last field edit had reached the server before “Place order” was clicked. That
   race is closed: the details are copied at the point WooCommerce writes them, 
   on every order. Scheduled delivery dates on orders affected by the earlier bug
   are also honoured now instead of the gift card being sent immediately, and the
   loyalty opt-in checkbox at block checkout no longer risks being recorded as unticked
   for the same reason.
 * Gift cards bought through the block-based checkout are no longer stranded without
   a recipient. WooCommerce stores the recipient address on the order as an additional
   checkout field, and the plugin keeps its own copy of it; on some orders that 
   copy was never written, and the gift card was then created but never emailed —
   even though the recipient address was plainly visible on the order in the admin.
   The recipient address, name and message are now read from WooCommerce’s own field
   whenever the plugin’s copy is missing.
 * The plugin’s WordPress.org page now lists the full release history under Changelog,
   instead of only the current and previous release. The complete history had always
   shipped in the plugin’s changelog.txt, but WordPress.org only renders readme.
   txt, so older entries were never visible there.

#### 5.1.0

 * The plugin now verifies that the configured Shop ID actually belongs to the connected
   Leat account. If it doesn’t – for example after switching a site between two 
   Leat accounts – a site-wide admin warning explains the problem and links to the
   settings, and loyalty syncing and gift card processing are paused (with an explanatory
   note on affected orders) until the correct shop is selected, instead of every
   gift card funding and points call silently failing with “Shop not found”.
 * The gift card checkout notice “No gift card products found” no longer floods 
   the plugin log on production sites; it is now only recorded when debug logging
   is enabled.
 * Gift cards are no longer silently skipped on stores running a persistent object
   cache. The plugin verifies each step of gift card processing by reading back 
   what it just saved; on busy stores a second request could serve a cached copy
   of the previous value, so the check failed and the gift card was never issued–
   leaving only an order note asking for intervention. The check now re-reads past
   the cache before giving up, and every unverified step is written to the plugin
   log so it can be found without opening the order.
 * When gift card creation, funding, or delivery fails, or a loyalty order cannot
   be created or processed, the order note now includes the underlying Leat API 
   error in a collapsible “Technical details” section – so the cause stays diagnosable
   on the order itself even after the plugin log has rotated.
 * The loyalty points-award call now waits up to 60 seconds instead of 10 before
   giving up. Awarding points can legitimately take longer than 10 seconds on the
   Leat side, and aborting early caused “Failed to process loyalty order” notes 
   on stores where the points had actually been awarded. A new `leat_api_request_timeout`
   filter also lets any Leat API request’s timeout be tuned per site without a plugin
   update.
 * Prepaid refunds now reverse the correct top-up transaction for every unit when
   an order line has a quantity greater than one.
 * Confirm compatibility with WordPress 7.0 and WooCommerce 10.9.4.

#### 5.0.0

 * WordPress 6.6 or newer is now required.
 * Loyalty pages now use Leat blocks or Content Blocks; the legacy loyalty shortcodes
   have been removed. Sites upgrading from an older version see a one-time migration
   notice with next steps.
 * Birthday fields can be used during registration, checkout, account editing, and
   loyalty enrollment, with a new one-time birthday reward option.
 * Free / Discounted Product rewards now support product choice and apply the reward
   to the selected item only.
 * Spend Rules make product selection clearer and stay updated when rewards change,
   even after temporary connection issues.
 * Gift cards now process more reliably through checkout and order completion, use
   the buyer’s email when no recipient is provided, and explain when follow-up is
   needed.
 * Loyalty data and rewards now load more reliably for signed-in customers, while
   unrelated orders avoid unnecessary loyalty or gift-card processing.

#### 4.6.0

 * You can now retry syncing an individual order to Leat from its order details.
 * You can now select multiple orders and sync them to Leat in one action.
 * The plugin now clearly flags incomplete setup and waits to sync until it is complete.
 * Retried order syncs now award points correctly when the order qualifies.
 * Gift cards are now consistently cancelled whenever an order is refunded — including
   when the order is set to Refunded directly or refunded by total amount, in addition
   to the existing per-line-item refunds.
 * When a single line holds several gift cards, refunding them one at a time now
   cancels a different card each time, so every refunded card is correctly voided.
 * Gift card refunds now keep card balances accurate when a refund is retried.
 * Rewards that are turned off now correctly appear unavailable.

#### 4.5.0

 * New Customers screen in the Leat admin lets you browse your loyalty members and
   open any customer to see their details.
 * Rewards now add to the cart more reliably and show clearer next steps.
 * Customers now see newly redeemed reward coupons immediately without refreshing
   the page when using content blocks.

#### 4.4.1

 * Signing in or joining via the enrollment modal no longer fails with a server 
   error when the email already exists as a Leat contact but has no WordPress account
   yet — the existing contact is now linked to the new account instead of returning
   an error.
 * A failed enrollment now returns a readable error and cleanly removes the half-
   created account, instead of triggering a fatal “critical error” and leaving an
   orphaned WordPress user.
 * Enrolling without filling in a name no longer overwrites an existing Leat contact’s
   saved first and last name with blanks.
 * Tiers List block now orders tiers from the entry level up by default, with a 
   new “Tier order” control to reverse it (top tier first).
 * Tiers List block no longer marks a higher tier as “Achieved” while the customer
   is only on a lower tier.
 * Digital gift cards no longer fail cart validation when Leat returns a zero maximum
   amount, which now correctly means the program has no maximum.

#### 4.4.0

 * Spend Rules List block can now fall back to the selected product’s photo for “
   Free / Discounted Product” rewards that don’t have a manually configured reward
   image. Enable “Show product photo for free/discounted product rewards” in the
   block’s Display Settings. Uses WooCommerce’s catalog thumbnail size for high-
   quality square imagery; draft, pending, and private products are excluded.
 * Spend Rules List images now use an aspect ratio preset (Square 1:1, Landscape
   4:3, Portrait 3:4) instead of a freeform height + fit control. Keeps reward cards
   visually consistent across the grid regardless of source image dimensions.
 * Spend Rules List grid is now fixed at 3 columns on desktop, automatically dropping
   to 2 columns under 1100px and 1 column under 600px. The Grid Columns control 
   has been removed from the block inspector.

#### 4.3.0

 * Unified sign-in, sign-up, and join experience across every loyalty block. Clicking“
   Sign in”, “Create account”, or “Join program” now opens the same in-page modal
   instead of redirecting customers to the WordPress login page, so they stay on
   the page they were browsing.
 * Gift card amounts are now validated against the program’s configured minimum 
   and maximum before checkout — on the cart page, classic checkout, and block checkout.
   Shoppers see a clear error like “Maximum gift card amount for {product} is {amount}”
   instead of paying and then having the gift card silently fail to fund due to 
   a program limit.
 * Content Blocks now always open in the Gutenberg block editor, even on sites running
   Classic Editor or other plugins that disable Gutenberg site-wide.

#### 4.2.1

 * Restored PHP 7.4 compatibility. The gift card service and the bundled PSR logger
   interface no longer use PHP 8-only syntax (union return types), which had caused
   a critical fatal error on activation/use for sites running PHP 7.4.

#### 4.2.0

 * Refreshed loyalty Gutenberg patterns with a cleaner, more modern layout — including
   a redesigned hero section that adapts to logged-in, guest, and enrolled states,
   a two-card layout showing the customer’s points balance alongside the program
   intro, and a hero background image option for richer storefront styling.
 * New “Add to Wallet” button block lets enrolled members save their loyalty card
   to Apple Wallet or Google Wallet from any page where you place the block.
 * Scheduled gift card sending — buyers can pick a future delivery date and time
   at checkout (classic and block checkout). The gift card is still created and 
   funded at the order’s trigger status as before; only the recipient email is deferred,
   delivered via a single scheduled job per order (Action Scheduler).
 * New “Minimum gift card lifetime on delivery” setting caps how far ahead delivery
   can be scheduled, derived from each gift card program’s expiry (cards expire 
   from creation, not from send), and automatically disables scheduling for programs
   whose lifetime is too short.
 * New “Leat: Gift Card Delivery” panel on the order edit screen shows per-card 
   delivery status and lets staff reschedule, cancel, send now, or re-send (force)
   scheduled gift cards.
 * Buyers now see their scheduled delivery date on the order-received page.
 * Refunds and gift-card-cancelling order statuses now withdraw individual cards
   and only cancel a pending scheduled delivery when no deliverable cards remain,
   so a partial refund leaves the remaining cards on schedule.

#### 4.1.3

 * Gift card code order note is now an internal admin note instead of a customer-
   facing note, preventing an unwanted order note email being sent to customers

#### 4.1.2

 * Enrollment modal inputs now show placeholder text using the configured label 
   values
 * Body scroll lock now also locks the html element, preventing page scroll behind
   the modal on themes that scroll via the root element

#### 4.1.1

 * Enrollment modal no longer renders behind sticky headers — overlay z-index raised
   to 999999 to exceed common theme values (e.g. Divi’s 100000)
 * Enrollment modal input fields now reset theme-injected box-shadow and inherit
   font-family, preventing themes from overriding field appearance

#### 4.1.0

 * Join Program Button now opens an enrollment modal instead of redirecting guests—
   handles both guest registration (passwordless, with optional first/last name)
   and logged-in enrollment in one step, with a success state and automatic cache-
   busting reload
 * New REST endpoint POST /leat/v1/register-and-join creates a WordPress user, Leat
   contact, and auth session in a single transactional flow; rate-limited to 10 
   requests per IP per hour to prevent spam and email enumeration
 * Join Program Button block has 10 new Gutenberg-editable attributes for all modal
   text, button labels, and field visibility toggles, accessible from two new “Modal
   Settings” and “Success” sidebar panels
 * LoyaltyHeading block no longer silently creates a Leat contact when a logged-
   in user loads the block, which was bypassing the auto_enroll_on_registration 
   setting entirely
 * Join Program Button no longer performs a redundant enrollment fetch on the frontend—
   the server-rendered enrollment status is authoritative and the block only renders
   for non-enrolled users
 * Passwordless registration via the enrollment modal now uses a session cookie (
   non-persistent) instead of a remember-me cookie

#### 4.0.1

 * Earn rules action buttons (“Claim”, “Inloggen om te claimen”) now render as underlined
   text links matching the design, instead of appearing as tiny pills with zero 
   padding caused by block color settings overriding CSS text-link styles
 * Removed the non-functional “Button Colors” inspector panel from the Earn Rules
   List block

#### 3.6.2

 * Spend Rules List block can now show available rewards to logged-out visitors 
   when “Show rewards to non-enrolled users” is enabled, with a Sign In CTA on each
   card
 * Reward card descriptions now render consistently across enrolled, non-enrolled,
   and guest states

#### 3.6.1

 * Settings save no longer blocks with “Shop ID is required” when the user is correcting
   a bad API key — shop_uuid is only required when the API key isn’t being changed
   in the same request

#### 3.6.0

 * Add optional gift card recipient name field in classic and Blocks checkout, forwarded
   to Leat send-by-email API for personalized gift card emails
 * Add “Disable recipient name” setting to hide the recipient name field (coupled
   with the recipient email toggle)
 * Show gift card recipient name in the admin debug toolbar
 * Tiers List block cards no longer stretch to match the tallest sibling
 * Add missing settings field

#### 3.5.9

 * Add contextual documentation links throughout the admin settings (header, every
   tab, onboarding steps and empty states) pointing to leat-docs.vercel.app
 * Not showing of per-tier perks in the Tiers List block.
 * Documentation link title attribute could break in translations containing apostrophes

#### 3.5.8

 * Rare fatal error when activating the plugin alongside other plugins using the
   same dependencies

#### 3.5.7

 * Spend rule type field rendered as read-only text instead of a dropdown select

#### 3.5.6

 * Promotion rules not saving due to missing uuid parameter in REST request

#### 3.5.5

 * Select fields (e.g. Gift Card Order Status) not restoring saved value after page
   refresh
 * Gift card email errors now show the actual API error reason in WooCommerce order
   notes instead of a generic failure message

#### 3.5.4

 * Blocks not rendering when loaded via shortcode or outside post content (e.g. 
   ACF fields, page builders)
 * Block default strings (buttons, messages, empty states) not translatable due 
   to wrong text domain and missing i18n wrapping

#### 3.5.3

 * Cache subscription types API response

#### 3.5.2

 * Marketing consent subscription select not rendering its options
 * Add editable empty state text for the Earn Rules List block
 * Earn Rules List empty state styling inconsistent with other blocks

#### 3.5.1

 * dev: Fix build issues

#### 3.5.0

 * Redesigned settings dashboard
 * Credits currency not respecting the “Credits name” setting, always showing “points”
 * Block editor strings not translatable due to incorrect text domain
 * Styling issues around save buttons
 * Refresh translations for nl_NL and nl_BE
 * Redesigned earn rules, webhooks, and promotions settings pages

#### 3.4.1

 * Gift cards not being created correctly on stores with High-Performance Order 
   Storage (HPOS) enabled
 * Vouchers not being created correctly on stores with High-Performance Order Storage(
   HPOS) enabled
 * Gift cards could be issued multiple times for the same order in some cases
 * Vouchers could be issued multiple times for the same order in some cases
 * Improve performance of loyalty points display in checkout
 * Improve checkout reliability when the loyalty API is slow or unavailable
 * Improve Dutch translations on Gutenberg templates (patterns)

#### 3.4.0

 * Mark rewards as “offline” to indicate to customers that they can claim this on
   location.
 * Fix debug toolbar assets not loading due to incorrect plugin root path resolution

#### 3.3.1

 * Fix fatal error when moving attendees via Event Tickets — enqueue_admin_scripts
   now accepts nullable hook argument
 * Replace exact API key length check with a minimum length validation to support
   variable-length PATs

#### 3.3.0

 * Sell vouchers directly as WooCommerce products.

#### 3.2.6

 * Add `[leat_content_block id="X"]` shortcode for rendering content blocks in page
   builders
 * Add “Shortcode” column to content blocks admin list table for easy copying

#### 3.2.5

 * Include tax in order line items instead of sending as separate charge
 * Loyalty points refund errors now show actual API error message in order notes
   instead of generic failure message
 * Shipping and fee charges now include tax amounts
 * Default reward order parts now includes tax (B2C default)
 * Increase log retention to 30 days

#### 3.2.4

 * Gift card amounts showing as undefined in legacy WooCommerce checkout
 * dev: Decrease logging

#### 3.2.3

 * Improve loyalty points calculation

#### 3.2.2

 * Add `leat_reward_order_statuses` filter to allow multiple order statuses to trigger
   points awards

#### 3.2.1

 * Settings not changeable

#### 3.2.0

 * New Rewards Checkout block for displaying and redeeming rewards

#### 3.1.6

 * dev: fix build

#### 3.1.5

 * Promotion rule label not saving when using translatable text format

#### 3.1.4

 * Add referral statistics cards to the Referral Rewards block showing referred 
   and completed counts

#### 3.1.3

 * Tiers List block not highlighting the current tier for enrolled users

#### 3.1.2

 * dev: fix build

#### 3.1.1

 * Remove DI container caching that could cause crashes on some production sites
   after plugin updates

#### 3.1.0

 * Content Blocks system for displaying Gutenberg blocks at WooCommerce hooks
 * Points display with enrollment invitation for non-members on product pages
 * Referral codes not being attributed when new users sign up via order processing
 * Gutenberg editor not showing up on certain pages
 * Points Display block not rendering on WooCommerce Blocks checkout frontend
 * Resolved Store API namespace collision between PointsExtension and GiftcardExtension
 * Improved security for Content Block rendering

#### 3.0.3

 * Loyalty Dashboard Page setting now enforces Gutenberg block editor even when 
   Gutenberg-disabling plugins are active

#### 3.0.2

 * Improved error handling consistency across all REST API endpoints

#### 3.0.1

 * Fixed gift card discount not being correctly applied to order totals during checkout
 * Resolved issue where WooCommerce would recalculate order totals and remove gift
   card discounts
 * Resolved dependency injection caching issue that could cause errors with WooCommerce
   Blocks
 * Improved gift card total calculation logic to prevent double subtraction
 * Enhanced compatibility with payment gateways to ensure correct amounts are charged

#### 3.0.0

 * Added Gutenberg blocks for building custom loyalty dashboards
 * Added block patterns for quickly constructing loyalty pages
 * New Loyalty Heading block with dynamic content based on enrollment status
 * New Loyalty Paragraph block with rich text editing and variable support
 * New Join Program Button block for enrolling customers
 * New Earn Rules List block displaying ways customers can earn points
 * New Spend Rules List block showing available redemption options
 * New Coupons List block for displaying customer vouchers and coupons
 * New Referral Rewards block for sharing referral links
 * New Tiers List block showing loyalty program tiers
 * New Points Display block integration for WooCommerce Blocks checkout
 * New Giftcard Coupon block integration for WooCommerce Blocks checkout
 * Added “Loyalty Hero with Image” pattern for creating hero sections
 * Added “Earn Rules Section” pattern for pre-built earning opportunities layout
 * Added “Spend Rules Section” pattern for pre-built redemption options layout
 * Added “Referral Section” pattern for pre-built referral program layout
 * Added “Coupons List Section” pattern for pre-built vouchers layout
 * Added “Tiers Section” pattern for pre-built loyalty tiers …

## Meta

 *  Version **5.5.0**
 *  Last updated **4 days ago**
 *  Active installations **50+**
 *  WordPress version ** 6.6 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/leat-crm/)
 * Tags
 * [Loyalty](https://pap-cw.wordpress.org/plugins/tags/loyalty/)[loyalty program](https://pap-cw.wordpress.org/plugins/tags/loyalty-program/)
   [marketing automation](https://pap-cw.wordpress.org/plugins/tags/marketing-automation/)
   [Rewards](https://pap-cw.wordpress.org/plugins/tags/rewards/)[vouchers](https://pap-cw.wordpress.org/plugins/tags/vouchers/)
 *  [Advanced View](https://pap-cw.wordpress.org/plugins/leat-crm/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/leat-crm/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/leat-crm/reviews/)

## Contributors

 *   [ Rens Nitert ](https://profiles.wordpress.org/rensleat/)

## Support

Issues resolved in last two months:

     0 out of 1

 [View support forum](https://wordpress.org/support/plugin/leat-crm/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://leat.com)