> For the complete documentation index, see [llms.txt](https://docs.pixeleyes.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pixeleyes.de/anleitungen-instructions/english/documentation-of-our-shopware-6-plugins/bonus-points-and-loyalty-program-for-shopware-6/plugin-configuration/snippets.md).

# snippets

All visible texts of the plugin are stored as **snippets** and can be freely adjusted in the Shopware admin under **Settings › Snippets** – without code changes and separately per language.

The plugin ships translations for **German (de-DE), English (en-GB), Italian (it-IT), French (fr-FR), Turkish (tr-TR), Greek (el-GR) and Dutch (nl-NL)**.

## Placeholders

Some snippets contain placeholders in the form `%name%`. These are replaced automatically:

| Placeholder  | Meaning                                                                                   |
| ------------ | ----------------------------------------------------------------------------------------- |
| `%label%`    | Points label (e.g. "Points", "Coins") – comes from `pixelReviewBonus.general.pointsLabel` |
| `%points%`   | Number of points (number)                                                                 |
| `%count%`    | Number of entries                                                                         |
| `%name%`     | Name of a reward                                                                          |
| `%number%`   | Order number                                                                              |
| `%total%`    | Order value                                                                               |
| `%factor%`   | Factor for the points calculation                                                         |
| `%missing%`  | Points missing until the reward                                                           |
| `%current%`  | Current points balance                                                                    |
| `%required%` | Required points                                                                           |
| `%max%`      | Maximum redemptions                                                                       |
| `%date%`     | Date (cooldown end)                                                                       |
| `%page%`     | Current page                                                                              |

## Snippet overview by area

### General

| Snippet key                            | Default (EN) | Where visible                                                                                                |
| -------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------ |
| `pixelReviewBonus.general.pointsLabel` | `Points`     | Everywhere points are mentioned – change this key to adjust the label shop-wide (e.g. to "Coins" or "Stars") |

### Page title

| Snippet key                       | Default (EN)             | Where visible                                            |
| --------------------------------- | ------------------------ | -------------------------------------------------------- |
| `pixelReviewBonus.page.title`     | `Bonus Points & Rewards` | Browser tab and page title of the bonus account overview |
| `pixelReviewBonus.page.metaTitle` | `Bonus Points & Rewards` | Meta title (SEO)                                         |

### Header of the bonus account page

| Snippet key                        | Default (EN)                              | Where visible                             |
| ---------------------------------- | ----------------------------------------- | ----------------------------------------- |
| `pixelReviewBonus.header.headline` | `My Loyalty Account`                      | Large heading at the top of the main page |
| `pixelReviewBonus.header.subline`  | `Earn %label% on purchases and reviews …` | Subline below the heading                 |

### Sidebar navigation

| Snippet key                       | Default (EN) | Where visible                               |
| --------------------------------- | ------------ | ------------------------------------------- |
| `pixelReviewBonus.sidebar.link`   | `Rewards`    | Link in the customer account menu (sidebar) |
| `pixelReviewBonus.sidebar.punkte` | `My Points`  | Sub-link "My Points" in the sidebar         |

### Registration banner

Appears on the registration page when the registration bonus is active.

| Snippet key                              | Default (EN)                                                        | Where visible         |
| ---------------------------------------- | ------------------------------------------------------------------- | --------------------- |
| `pixelReviewBonus.register.heading`      | `Welcome Bonus for New Customers`                                   | Heading of the banner |
| `pixelReviewBonus.register.contentAbove` | `Register now and instantly secure %points% %label% …`              | Text above the form   |
| `pixelReviewBonus.register.contentBelow` | `After registration, you will instantly receive %points% %label% …` | Text below the form   |

### Pending reviews

"Pending reviews" tab in the bonus account.

| Snippet key                                      | Default (EN)                                     | Where visible                    |
| ------------------------------------------------ | ------------------------------------------------ | -------------------------------- |
| `pixelReviewBonus.pendingReviews.sectionTitle`   | `Earn points with reviews`                       | Section heading                  |
| `pixelReviewBonus.pendingReviews.sectionSubline` | `Share your experience … %points% %label%`       | Explanatory text below           |
| `pixelReviewBonus.pendingReviews.orderedOn`      | `Ordered on`                                     | Date column label                |
| `pixelReviewBonus.pendingReviews.orderNumber`    | `No.`                                            | Order number column label        |
| `pixelReviewBonus.pendingReviews.buttonReview`   | `Write review`                                   | Button label                     |
| `pixelReviewBonus.pendingReviews.empty`          | `All your items have been reviewed – thank you!` | Message when nothing is pending  |
| `pixelReviewBonus.pendingReviews.noOrders`       | `You haven't placed any orders yet.`             | Message when there are no orders |

### Rewards

Area with redeemable rewards.

| Snippet key                                 | Default (EN)                             | Where visible                        |
| ------------------------------------------- | ---------------------------------------- | ------------------------------------ |
| `pixelReviewBonus.rewards.sectionTitle`     | `Rewards`                                | Section heading                      |
| `pixelReviewBonus.rewards.sectionSubline`   | `Redeem your collected %label% …`        | Explanatory text                     |
| `pixelReviewBonus.rewards.typeVoucher`      | `Voucher Code`                           | Reward type badge                    |
| `pixelReviewBonus.rewards.typeProduct`      | `Free Product`                           | Reward type badge                    |
| `pixelReviewBonus.rewards.typeFreeShipping` | `Free Shipping`                          | Reward type badge                    |
| `pixelReviewBonus.rewards.pointsBadge`      | `%points% %label%`                       | Points badge on the reward card      |
| `pixelReviewBonus.rewards.buttonRedeem`     | `Redeem`                                 | Redeem button                        |
| `pixelReviewBonus.rewards.alreadyUsed`      | `✓ Code already redeemed`                | Status when the code is already used |
| `pixelReviewBonus.rewards.buttonMissing`    | `Collect %missing% more %label%`         | Button when points are missing       |
| `pixelReviewBonus.rewards.noRewards`        | `No rewards available at the moment.`    | Message when no rewards are active   |
| `pixelReviewBonus.rewards.confirmRedeem`    | `Do you really want to redeem "%name%"?` | Confirmation dialog                  |

### Tab navigation (bonus account overview)

| Snippet key                          | Default (EN)       | Where visible |
| ------------------------------------ | ------------------ | ------------- |
| `pixelReviewBonus.tabs.orders`       | `Orders`           | Tab label     |
| `pixelReviewBonus.tabs.redemptions`  | `Redeemed Rewards` | Tab label     |
| `pixelReviewBonus.tabs.transactions` | `My %label%`       | Tab label     |
| `pixelReviewBonus.tabs.referrals`    | `Invited Friends`  | Tab label     |

### Redeemed rewards (sub-page)

| Snippet key                                     | Default (EN)               | Where visible        |
| ----------------------------------------------- | -------------------------- | -------------------- |
| `pixelReviewBonus.redemptions.colReward`        | `Reward`                   | Table column heading |
| `pixelReviewBonus.redemptions.colPoints`        | `%label%`                  | Table column heading |
| `pixelReviewBonus.redemptions.colCodeInfo`      | `Code / Info`              | Table column heading |
| `pixelReviewBonus.redemptions.colStatus`        | `Status`                   | Table column heading |
| `pixelReviewBonus.redemptions.colDate`          | `Date`                     | Table column heading |
| `pixelReviewBonus.redemptions.statusCompleted`  | `Completed`                | Status badge         |
| `pixelReviewBonus.redemptions.statusPending`    | `Pending`                  | Status badge         |
| `pixelReviewBonus.redemptions.statusFailed`     | `Failed`                   | Status badge         |
| `pixelReviewBonus.redemptions.statusReset`      | `Reset`                    | Status badge         |
| `pixelReviewBonus.redemptions.statusInCart`     | `In Cart`                  | Status badge         |
| `pixelReviewBonus.redemptions.infoFreeShipping` | `Free shipping credited`   | Info text            |
| `pixelReviewBonus.redemptions.infoProduct`      | `Product requested`        | Info text            |
| `pixelReviewBonus.redemptions.copyCode`         | `Copy code`                | Button               |
| `pixelReviewBonus.redemptions.empty`            | `No rewards redeemed yet.` | Empty message        |

### Point transactions (sub-page)

| Snippet key                                       | Default (EN)              | Where visible                       |
| ------------------------------------------------- | ------------------------- | ----------------------------------- |
| `pixelReviewBonus.transactions.colDescription`    | `Description`             | Table column heading                |
| `pixelReviewBonus.transactions.colPoints`         | `%label%`                 | Table column heading                |
| `pixelReviewBonus.transactions.colType`           | `Type`                    | Table column heading                |
| `pixelReviewBonus.transactions.colDate`           | `Date`                    | Table column heading                |
| `pixelReviewBonus.transactions.typeEarn`          | `Earned`                  | Transaction type                    |
| `pixelReviewBonus.transactions.typeReview`        | `Review`                  | Transaction type                    |
| `pixelReviewBonus.transactions.typeOrder`         | `Order`                   | Transaction type                    |
| `pixelReviewBonus.transactions.typeFlow`          | `Bonus Action`            | Transaction type                    |
| `pixelReviewBonus.transactions.typeRegistration`  | `Registration`            | Transaction type                    |
| `pixelReviewBonus.transactions.typeNewsletter`    | `Newsletter`              | Transaction type                    |
| `pixelReviewBonus.transactions.typeRedeem`        | `Redeemed`                | Transaction type                    |
| `pixelReviewBonus.transactions.typeRefund`        | `Refund`                  | Transaction type                    |
| `pixelReviewBonus.transactions.typeCancelOrder`   | `Cancellation`            | Transaction type                    |
| `pixelReviewBonus.transactions.typeAdmin`         | `Special Bonus`           | Transaction type (manually awarded) |
| `pixelReviewBonus.transactions.typeReferral`      | `Friend invited`          | Transaction type                    |
| `pixelReviewBonus.transactions.empty`             | `No point movements yet.` | Empty message                       |
| `pixelReviewBonus.transactions.detailOrderPrefix` | `Order number`            | Prefix in the description           |

### Redemption confirmation & success modal

| Snippet key                                | Default (EN)                              | Where visible          |
| ------------------------------------------ | ----------------------------------------- | ---------------------- |
| `pixelReviewBonus.confirm.title`           | `Redeem reward`                           | Dialog title           |
| `pixelReviewBonus.confirm.cancel`          | `Cancel`                                  | Cancel button          |
| `pixelReviewBonus.confirm.ok`              | `Redeem now`                              | Confirm button         |
| `pixelReviewBonus.modal.voucherTitle`      | `Your Voucher Code`                       | Modal title (voucher)  |
| `pixelReviewBonus.modal.voucherSub`        | `Redeemable once …`                       | Modal subline          |
| `pixelReviewBonus.modal.voucherCopyHint`   | `Click the code to copy it.`              | Hint                   |
| `pixelReviewBonus.modal.freeShippingTitle` | `Free Shipping activated!`                | Modal title (shipping) |
| `pixelReviewBonus.modal.freeShippingSub`   | `Free shipping upgrade has been stored …` | Modal subline          |
| `pixelReviewBonus.modal.productTitle`      | `Product requested!`                      | Modal title (product)  |
| `pixelReviewBonus.modal.productSub`        | `We will contact you shortly.`            | Modal subline          |
| `pixelReviewBonus.modal.buttonClose`       | `Close`                                   | Close button           |

### Free product selection

| Snippet key                                  | Default (EN)                           | Where visible                    |
| -------------------------------------------- | -------------------------------------- | -------------------------------- |
| `pixelReviewBonus.productSelect.title`       | `Choose your free product`             | Dialog title                     |
| `pixelReviewBonus.productSelect.loading`     | `Loading products…`                    | Loading state                    |
| `pixelReviewBonus.productSelect.noProducts`  | `No products available at the moment.` | Empty message                    |
| `pixelReviewBonus.productSelect.badge`       | `Free`                                 | Badge on the product image       |
| `pixelReviewBonus.productSelect.cancel`      | `Cancel`                               | Cancel button                    |
| `pixelReviewBonus.productSelect.confirm`     | `Redeem & add to cart`                 | Confirm button                   |
| `pixelReviewBonus.productSelect.redirecting` | `Redirecting to cart…`                 | Loading state after confirmation |

### Cart

| Snippet key                            | Default (EN)                                                 | Where visible                                       |
| -------------------------------------- | ------------------------------------------------------------ | --------------------------------------------------- |
| `pixelReviewBonus.cart.qtyLockedLabel` | `1× Free`                                                    | Quantity label in the cart for locked free products |
| `pixelReviewBonus.cart.qtyLockedTitle` | `This product is provided free of charge via a bonus code …` | Tooltip text                                        |

### Toast notifications

| Snippet key                              | Default (EN)                           | Where visible                |
| ---------------------------------------- | -------------------------------------- | ---------------------------- |
| `pixelReviewBonus.toast.copied`          | `Code copied!`                         | Toast after copying the code |
| `pixelReviewBonus.toast.connectionError` | `Connection error – please try again.` | Error toast                  |
| `pixelReviewBonus.toast.unknownError`    | `An error occurred.`                   | Error toast                  |

### Error messages

| Snippet key                                         | Default (EN)                                                           | Where visible               |
| --------------------------------------------------- | ---------------------------------------------------------------------- | --------------------------- |
| `pixelReviewBonus.error.notLoggedIn`                | `You are not logged in.`                                               | Error                       |
| `pixelReviewBonus.error.invalidRewardId`            | `Invalid reward.`                                                      | Error                       |
| `pixelReviewBonus.error.rewardNotFound`             | `This reward is not available.`                                        | Error                       |
| `pixelReviewBonus.error.promotionNotLinked`         | `This reward has no linked promotion …`                                | Error (configuration error) |
| `pixelReviewBonus.error.promotionNotFound`          | `The linked promotion could not be found …`                            | Error                       |
| `pixelReviewBonus.error.promotionNoIndividualCodes` | `The linked promotion does not support individual codes …`             | Error                       |
| `pixelReviewBonus.error.codeGenerationFailed`       | `A promotion code could not be created …`                              | Error                       |
| `pixelReviewBonus.error.insufficientPoints`         | `Not enough %label%: you have %current%, but %required% are required.` | Error on redemption         |
| `pixelReviewBonus.error.deductionFailed`            | `Your %label% could not be deducted …`                                 | Error                       |
| `pixelReviewBonus.error.rewardNotYetValid`          | `This reward is not yet available.`                                    | Error                       |
| `pixelReviewBonus.error.rewardExpired`              | `This reward has expired.`                                             | Error                       |
| `pixelReviewBonus.error.maxRedemptionsReached`      | `You have already redeemed this reward %max% time(s).`                 | Error                       |
| `pixelReviewBonus.error.cooldownActive`             | `This reward can be redeemed again from %date% onwards.`               | Error                       |
| `pixelReviewBonus.error.unexpected`                 | `An unexpected error occurred …`                                       | Error                       |

### Checkout summary

| Snippet key                             | Default (EN)            | Where visible                    |
| --------------------------------------- | ----------------------- | -------------------------------- |
| `pixelReviewBonus.checkout.pointsLabel` | `%label% you will earn` | Notice on the order summary page |

### Navigation tiles (bonus account home)

| Snippet key                             | Default (EN)                            | Where visible           |
| --------------------------------------- | --------------------------------------- | ----------------------- |
| `pixelReviewBonus.nav.sectionTitle`     | `My Loyalty Account`                    | Heading above the tiles |
| `pixelReviewBonus.nav.titlePoints`      | `My %label%`                            | Tile title "Points"     |
| `pixelReviewBonus.nav.subPoints`        | `All point movements …`                 | Tile subline            |
| `pixelReviewBonus.nav.titleRedemptions` | `Redeemed Rewards`                      | Tile title              |
| `pixelReviewBonus.nav.subRedemptions`   | `All your redeemed rewards …`           | Tile subline            |
| `pixelReviewBonus.nav.titleFriends`     | `Invited Friends`                       | Tile title              |
| `pixelReviewBonus.nav.subFriends`       | `Friends you have successfully invited` | Tile subline            |
| `pixelReviewBonus.nav.titleReviews`     | `Pending Reviews`                       | Tile title              |
| `pixelReviewBonus.nav.subReviews`       | `Products … that you can still review`  | Tile subline            |
| `pixelReviewBonus.nav.titleOrders`      | `My Orders`                             | Tile title              |
| `pixelReviewBonus.nav.subOrders`        | `All your orders in one place`          | Tile subline            |
| `pixelReviewBonus.nav.go`               | `View`                                  | Tile button             |

### Invite friends (referral)

| Snippet key                             | Default (EN)                                                         | Where visible            |
| --------------------------------------- | -------------------------------------------------------------------- | ------------------------ |
| `pixelReviewBonus.referral.title`       | `Invite Friends & Earn Points`                                       | Section heading          |
| `pixelReviewBonus.referral.sub`         | `Invite friends and earn %points% %label% …`                         | Explanatory text         |
| `pixelReviewBonus.referral.rewarded`    | `%count% friend(s) successfully invited`                             | Counter                  |
| `pixelReviewBonus.referral.button`      | `Share link`                                                         | Button                   |
| `pixelReviewBonus.referral.modalTitle`  | `Your personal invite link`                                          | Modal title              |
| `pixelReviewBonus.referral.modalText`   | `Share this link … you will automatically receive %points% %label%.` | Modal text               |
| `pixelReviewBonus.referral.copyLink`    | `Copy link`                                                          | Button in the modal      |
| `pixelReviewBonus.referral.shareButton` | `Share`                                                              | Button in the modal      |
| `pixelReviewBonus.referral.copied`      | `Link copied!`                                                       | Confirmation             |
| `pixelReviewBonus.referral.shareTitle`  | `I recommend this shop to you`                                       | Title for native sharing |

### Invited friends (sub-page)

| Snippet key                                   | Default (EN)                       | Where visible                |
| --------------------------------------------- | ---------------------------------- | ---------------------------- |
| `pixelReviewBonus.referrals.colName`          | `Name`                             | Table column heading         |
| `pixelReviewBonus.referrals.colEmail`         | `Email`                            | Table column heading         |
| `pixelReviewBonus.referrals.colStatus`        | `Status`                           | Table column heading         |
| `pixelReviewBonus.referrals.colDate`          | `Invited on`                       | Table column heading         |
| `pixelReviewBonus.referrals.statusRewarded`   | `+%points% %label% received`       | Status after the first order |
| `pixelReviewBonus.referrals.statusRegistered` | `Registered (awaiting order)`      | Status after registration    |
| `pixelReviewBonus.referrals.empty`            | `You have not invited anyone yet.` | Empty message                |

### Order completion (points confirmation)

| Snippet key                        | Default (EN)                                     | Where visible                 |
| ---------------------------------- | ------------------------------------------------ | ----------------------------- |
| `pixelReviewBonus.finish.headline` | `+%points% %label% credited!`                    | Heading on the thank-you page |
| `pixelReviewBonus.finish.text`     | `You received %points% %label% for this order …` | Explanatory text              |
| `pixelReviewBonus.finish.link`     | `My %label%`                                     | Link to the bonus account     |

### Opt-out (reminder unsubscribe)

| Snippet key                            | Default (EN)                                               | Where visible                  |
| -------------------------------------- | ---------------------------------------------------------- | ------------------------------ |
| `pixelReviewBonus.optout.successTitle` | `Successfully unsubscribed`                                | Title of the confirmation page |
| `pixelReviewBonus.optout.successText`  | `You will no longer receive review reminders …`            | Text                           |
| `pixelReviewBonus.optout.errorTitle`   | `Invalid link`                                             | Error title                    |
| `pixelReviewBonus.optout.errorText`    | `The unsubscribe link is invalid or has already expired …` | Error text                     |
| `pixelReviewBonus.optout.homeLink`     | `Go to homepage`                                           | Link                           |

### Page navigation (pagination)

| Snippet key                             | Default (EN)             | Where visible                |
| --------------------------------------- | ------------------------ | ---------------------------- |
| `pixelReviewBonus.subpage.backLink`     | `Back to overview`       | Link at the top of sub-pages |
| `pixelReviewBonus.subpage.pageInfo`     | `Page %page% of %total%` | Page indicator               |
| `pixelReviewBonus.subpage.prevPage`     | `Previous`               | Previous button              |
| `pixelReviewBonus.subpage.nextPage`     | `Next`                   | Next button                  |
| `pixelReviewBonus.subpage.totalEntries` | `%count% entries`        | Total count                  |

### Internal transaction descriptions (PHP-generated)

These texts appear in the points history as the description.

| Snippet key                                     | Default (EN)                           | When used                                |
| ----------------------------------------------- | -------------------------------------- | ---------------------------------------- |
| `pixelReviewBonus.php.descriptionOrder`         | `Order #%number%`                      | Points from an order                     |
| `pixelReviewBonus.php.descriptionRegistration`  | `Registration`                         | Points on registration                   |
| `pixelReviewBonus.php.descriptionNewsletter`    | `Newsletter sign-up`                   | Points from the newsletter               |
| `pixelReviewBonus.php.descriptionReview`        | `Product review`                       | Points from a review (general)           |
| `pixelReviewBonus.php.descriptionReviewProduct` | `Review: %name%`                       | Points from a review (with product name) |
| `pixelReviewBonus.php.descriptionFlowAction`    | `Flow action: bonus points awarded`    | Points from the Flow Builder             |
| `pixelReviewBonus.php.descriptionOrderFactor`   | `Order #%number% (%total% × %factor%)` | Points from a factor calculation         |
| `pixelReviewBonus.php.descriptionCancelOrder`   | `Cancellation order #%number%`         | Points credit-back on cancellation       |
| `pixelReviewBonus.php.descriptionReferral`      | `Referral bonus`                       | Points from a referral                   |
| `pixelReviewBonus.php.descriptionRefund`        | `Reward refund`                        | Points credit-back on reward reset       |

## Tip: change the points label

To change the label "Points" shop-wide (e.g. to "Coins"), adjust a **single snippet**:

```
pixelReviewBonus.general.pointsLabel → Coins
```

All other texts use `%label%` as a placeholder and adopt the new value automatically.
