diff --git a/documentation/build/point-wallet-builder.mdx b/documentation/build/point-wallet-builder.mdx new file mode 100644 index 000000000..497687881 --- /dev/null +++ b/documentation/build/point-wallet-builder.mdx @@ -0,0 +1,474 @@ +--- +title: Point wallet builder +description: Configure and manage point wallets +keywords: ['point wallet', 'wallet builder', 'pending points', 'point expiration', 'pay with points', 'earning limits', 'spending limits'] +--- + +import MetaConfig from '/snippets/metadata-configuration.mdx' + +Point wallets control how points are earned, stored, spent, and expire. + +Go to **Loyalty hub** > **Wallets** to **Create wallet**. + +## Create a wallet + +Some settings depend on each other. If something is incompatible, you will see an Action required message. + +You can also **Save draft** and finish the wallet setup later. + + + + + +### General settings + +Define the basic behavior of the wallet: +- **Type** - **Individual**: points are assigned to individual customers. +- **Allow card balance to go below zero**: customers' point balance can go below zero. + + + +This setting affects refunds and points expiration. Some options, such as revoking points below zero or expiration rules, depend on it. + + + + + + + +### Code config + +Define how wallet-related codes are generated: +- **Charset**: choose a predefined set, for example alphanumeric, or define your own. +- **Code length**: defines how many random characters the code contains. +- **Pattern**: create a custom structure using placeholders. +- **#**: replace with a random character from the selected charset. Overrides the code length. +- **Prefix** and **Postfix**: optional values added at the beginning or end of the code. + +**Code preview** shows an example of a generated code. + + + +The number of possible unique codes depends on the selected charset and code length. + + + + + + + +### Points expiration + +Define when points expire. + + + + + +Points never expire. No additional setup is required. + + + + + +Points expire after a defined period from when they are earned. + +- **Expiration period**: how long points stay valid after earning. +- **Period unit**: day (max 90), month (max 12), year (max 5). +- **Expiration rounding**: round the expiration to the nearest period. Possible settings – **No rounding**, **End of month**, **End of quarter**, **End of half-year**, **End of year**, **End of particular month**. + + + + + +Points expire on selected dates each year. + +Select **Month** and **Day of the month** to **Add date**. + +Add at least one date. You can define up to 20 expiration dates. + + + + + +Points expire after a period of inactivity. + +- **Inactivity period**: how long points remain valid without activity. +- **Period unit**: day (max 90), month (max 12), year (max 1). + +Activity types: +- **Earning activity**: resets the inactivity timer when customers earn points. +- **Spending activity**: resets the inactivity timer when customers spend points. +- **Custom activity**: resets the inactivity timer based on selected custom events. You can add up to 20 custom events. + +Select at least one activity type. Only the selected activities reset the inactivity timer. + + + + + + + +Points expiration is available only when **Allow card balance to go below zero** is disabled. If negative balance is enabled, only **No expiration – points never expire** is available. + +Time-related settings in wallet configuration use the time zone configured in project settings. They are not calculated in UTC. + + + + + + + +### Pending points + +Define when earned points become available. + + + + + +Points activate immediately after earning. + + + + + +Points activate after a defined time from when they are earned. + +- **Waiting period**: how long points remain pending before activation. +- **Period unit**: day (max 90), month (max 12), year (max 1). + + + + + +Points activate on selected calendar dates. + +Select **Month** and **Day of the month** to **Add date**. + +Add at least one date. You can define up to 20 activation dates. + + + + + +Points remain pending after selected events occur and activate after the defined cancellation period passes. + +- **Cancellation period**: defines how long points remain pending before activation is finalized. +- **Period unit**: day (max 90), month (max 12), year (max 1). + +Select **Custom event** and use **Add activity** to define which custom events trigger point activation. + +Add at least one custom event. You can define up to 20 custom events. + + + + + +Pending points can't be spent until they're activated. Activation moves points from pending to the active balance. + + + +If pending points are set to **Immediate**, you cannot use **From pending** in **Refunds → Earned points refunds**, because points are activated right away. Choose a different pending points type if you need to revoke points before activation. + + + + + + + +### Earning limits + +Control how customers earn points. + +Both **Global earning limit** and **Transactions earning limit** can apply at the same time, and the more restrictive condition applies. + + + + + +Defines the overall limit on points a customer can earn. + +- **No limit**: customers can earn an unlimited number of points. + +- **Limited**: customers can earn points only within the configured limits. + +When **Limited** is selected, configure the limit type: + +- **Balance-based**: limits the maximum number of points a customer can have at any time. + + **Max balance**: defines the maximum active point balance a customer can reach. + +- **Time-based**: limits how many points a customer can earn within a selected time period. + + **Period unit**: defines the earning period (day, week, month, quarter, year). + + **Max points per period**: defines the maximum number of points a customer can earn during the selected period. + + + + + +Defines how many points can be earned in a transaction. + +- **No limit**: customers can earn an unlimited number of points in one transaction. + +- **Limited**: customers can't earn more than the configured transaction limits. + +When **Limited** is selected, configure: + +**Max points earned per transaction**: defines the maximum number of points a customer can earn in a single transaction. + +**Min amount spent per transaction**: defines the minimum transaction amount required to earn points. + + + + + + + + + +### Spending limits + +Control how customers spend points. + +Both **Global spending limit** and **Transactions spending limit** can apply at the same time, and the more restrictive condition applies. + + + + + +Defines the overall limit on how many points a customer can spend. + +- **No limit**: customers can spend an unlimited number of points. + +- **Limited**: customers can spend points only within the configured limits. + +When **Limited** is selected, configure the limit type: + +- **Spending-based**: limits the total number of points a customer can spend across all transactions. + + **Max lifetime spending**: defines the maximum total number of points a customer can spend. + +- **Time-based**: limits how many points a customer can spend within a selected time period. + + **Period unit**: defines the spending period (day, week, month, quarter, year). + + **Max points per period**: defines the maximum number of points a customer can spend during the selected period. + + + + + +Defines how many points can be spent in a single transaction. + +- **No limit**: customers can spend an unlimited number of points in a single transaction. + +- **Limited**: customers can spend points only within the configured transaction limit. + +When **Limited** is selected, configure: + +**Max points to spend per transaction**: defines the maximum number of points a customer can spend in a single transaction. + + + + + + + + + +### Pay with points + +Configure how customers can use points to pay for orders. + +**Enable pay with points** to allow payments using points. + +When enabled, define the conversion formula: + +- **Amount unit**: fixed base unit (1 minor currency unit, for example 1 cent). This value cannot be edited. +- **Points needed**: number of points required to pay for that unit. + +The formula result defines how many points are needed to pay for 1 amount unit. + +For example, `111` means 111 points pay for 1 unit (for example, 1 cent in USD). + +You can: +- enter a formula manually +- use **Build formula** to create it using the formula builder +- reuse an existing expression in **Expression output** + +Use numeric values or functions such as `ORDER_METADATA("property")` to create dynamic conversion rules. + + + + + +### Refunds + +Control how refunds affect points. + +**Spent points refunds** and **Earned points refunds** are applied separately. + + + + + +Defines whether points used in a transaction are returned after a refund. + +- **No refund**: spent points are not returned. + +- **Refundable**: spent points can be returned after a refund. + +When **Refundable** is selected, configure the refund type: + +**Refund all**: returns all spent points. + +**Refund by item**: returns points related only to refunded items. + +**Refund by amount**: returns points proportionally to the refunded amount. + + + + + +Defines whether points earned from a transaction are kept or revoked after a refund. + +- **Keep points**: earned points remain unchanged after the refund. + +- **Revoke points**: earned points are removed after the refund. + +When **Revoke points** is selected, configure the revocation source: + +- **From balance**: revokes points from the active balance. + +- **From pending**: revokes points only from pending points. + +When **From balance** is selected, configure the revocation behavior: + + **Stop at zero**: points are revoked until the balance reaches zero. + + **Allow negative**: points are revoked even if the balance becomes negative. + + + +Allowing negative balance requires enabling **Allow card balance to go below zero**. If this setting is disabled, **Allow negative** is not available. Revoking from pending requires **Pending points** not set to **Immediate**. + + + + + + + + + + + +### Metadata + + + + + + + +### Summary + +Review your configuration before saving. + +- If everything is valid, **Save** becomes available. +- If something is incompatible, you will see Action required. +- Use **Go to step** to return to any section and make changes. +- You can also **Save draft** of the wallet. + + + + + +Once saved, the wallet is created in an active state and can be used in loyalty programs. + +If you use **Save draft**, the wallet is saved in draft status and can be completed later. + +## Wallets in loyalty programs + +You can create and manage wallets directly while working on a loyalty program in the Designer. + +### Create a wallet in a loyalty program + +In the **Building Blocks** panel, use **+** next to **Wallets**. + +This opens the same wallet builder used in the **Wallets** section. + +The wallet is created while you are working inside a program. You can assign it to the program immediately. The wallet is still saved globally and can be reused. + +### Use wallets in a program + +In the program Designer, you can assign and manage wallets directly in the program view. + +In the **Building Blocks** panel, you can: +- view all available wallets and their status +- assign a wallet to the program +- create a new wallet using **+** +- open a wallet to view its full configuration and manage its status + +In the **Wallets** section, you can: +- view wallets assigned to the program +- edit or unassign a wallet +- assign an existing wallet or create a new one +- assign a tier structure to a wallet + + + +Wallets are global objects, so assigning them to a program does not create a copy. Changes to a wallet apply everywhere it is used. Unassigning a wallet removes it from the program but does not delete it. + + + +## Managing wallets + +Go to **Loyalty hub** > **Wallets**. + +After you create a wallet, it appears in the **Wallets** section. + +Use the **three-dot menu (⋮)** to: +- activate or deactivate a wallet +- edit the wallet +- delete the wallet + +Active wallets can be used in loyalty programs. + +Deactivated wallets remain available but cannot be used until reactivated. + +Click on a wallet to check its configuration details. + +## Related features + +Wallets can be combined with the following features to build more advanced loyalty program flows. + + + + + +You can use [custom events](/prepare/custom-events#custom-events) to trigger Voucherify logic based on events defined in your integration. + +Custom events can be used for segmentation, validation rules, distributions, loyalty automation, and selected event-based configurations. + + + + + +Wallets can be assigned directly to loyalty programs in the [Designer](placeholder). + +The same wallet can be reused across multiple programs. + + + + + +You can assign a [tier structure](placeholder) to a wallet from the program view. + +Tier structures can be used together with wallets to build tier-based loyalty programs. + + + + \ No newline at end of file diff --git a/documentation/docs.json b/documentation/docs.json index 297bb9205..6a3b407f7 100644 --- a/documentation/docs.json +++ b/documentation/docs.json @@ -242,6 +242,7 @@ "root": "build/loyalty-campaign-overview", "pages": [ "build/create-loyalty-campaign", + "build/point-wallet-builder", "build/earning-rules", "build/loyalty-points", "build/loyalty-tiers",