Skip to content

Reference

The enumerable parts of this section are written from the extension's own code by oce docs:reference, so they cannot quietly drift away from what the version you installed actually does.

  • Settings: every key, its default and what it does, beside what Loyalty fixes on purpose and why.
  • The API: the two read resources an integration may call, every field on each, and what the promise covers.
  • The award seam: the one call any installed extension uses to award or deduct points, its refusals and the states a movement can be in.
  • What this holds about a person: every column, why it exists, and what an erasure does to it.
  • Security verdict and what it costs: the baseline controls, and what Loyalty adds to each page of a store.

Where things are

The screen is at Extensions › Extensions › Modules › Loyalty. A store selector at the top chooses which store's settings you are editing; the right-hand column shows the earning commitment, what it costs and what the store owes. Its route, which is also the permission you grant, is extension/loyalty/module/loyalty.

The order total is at Extensions › Extensions › Order Totals › Loyalty, and holds a status and a sort order. Its shipped sort order of 2 places it before Shipping and Taxes, which is why the discount reduces tax the way a coupon does. Points never pay for postage wherever you place it, because the discount is only ever spread over the product lines.

Balances are core's. Every movement is written into OpenCart's own reward table, so it shows on the customer's Reward Points tab under Customers › Customers, and a change you make there counts at once.

The tables, all prefixed the way your store prefixes core's:

Table Holds
loyalty_movement One row per movement of points: whose, how many, what for, which order, and the state it is in
loyalty_customer Per customer, the part of the balance that can expire, when they last moved points, and their expiry warning
loyalty_setting The copy of your settings, per store, that survives an update
loyalty_pass Per store, when the scheduled pass's lock runs out

None of them is ever dropped.

The storefront routes, which is what a customer's browser opens:

Route What it is
account/reward Core's Reward Points link, served by Loyalty's page while the programme is on
extension/loyalty/account/reward That page itself
extension/loyalty/checkout/loyalty The points control and earn line on the cart
extension/loyalty/cron/loyalty The hourly pass, reachable only by OpenCart's own scheduler or php extension/loyalty/loyalty.php from a terminal

Movement descriptions. Each row in core's reward table carries a line of text, written once, when the movement happens, because core's table has no language column: Order #123, Order #123 reversed, *Points spent on order

123, Points returned from order #123, Welcome bonus, Birthday bonus

2026 and Points expired. The order, welcome and birthday lines are written in your store's default language; Points expired* is always English. Another extension awarding through the seam writes its own. Loyalty's points page does not show these lines: it labels its own rows again, in the customer's language, each time it is shown.

What a generated list cannot tell you is which of these you should change, and what happens when you do. That is guides and limits and guarantees.