# What Triggers a Webhook

## Overview

Use this page to map webhook events to the actions that fire them. This is useful when building integrations, automations, and support workflows.

{% hint style="info" %}
Need the full event list and payload schemas? Use the [API reference](https://apidocs.openloyalty.io/#tag/Webhook-event) as the source of truth.
{% endhint %}

***

### Transaction and units events

#### TransactionRegistered

Sent when a transaction is created:

* In the Admin panel
* Via API: [Create a transaction](https://apidocs.openloyalty.io/#tag/Transactions/operation/_transactionPost)
* Via transaction import

#### AvailablePointsAmountChanged

Sent when a member’s available units change. Common reasons include:

* Units are spent (reward purchase or [spend endpoint](https://apidocs.openloyalty.io/#tag/Points/operation/pointsPostTransferSpend))
* Units are added or deducted manually by an admin
* A campaign adds or deducts units
* Unit transfers are imported
* A unit transfer is cancelled: [Cancel a points transfer](https://apidocs.openloyalty.io/#tag/Points/operation/pointsPostTransferCancel)
* Pending units are activated (automatically or manually)
* Units expire (automatically or manually)
* Units are blocked (see [block endpoint](https://apidocs.openloyalty.io/#tag/Points/operation/pointsPostTransferBlock)) or unblocked
* Units are transferred between members (two events are sent: sender + receiver)

#### TransactionAssignedToCustomer

Sent when a transaction is matched to a member:

* Manually in the Admin panel
* Via API: [Assign a transaction to a member](https://apidocs.openloyalty.io/#tag/Transactions/operation/transactionPostMemberAssign)
* Via import

#### CampaignEffectWasApplied

Sent when a campaign effect is applied to a member. This includes awarding or deducting units, granting rewards, and changing member custom attributes.

See also: [Reward Flow](https://help.openloyalty.io/main-features/rewards/reward-list/reward-flow).

#### PointsWillExpire

Sent **X days before units expire**. The value of `X` comes from [Expiring Notifications](https://help.openloyalty.io/main-features/webhooks/expiring-notifications).

***

### Reward and coupon events

#### RewardRedemptionStatusChanged

Sent when a redeemed reward changes status:

* In the Admin panel
* Via API: [Change redemption status](https://apidocs.openloyalty.io/#tag/Reward/operation/redemptionPostStatus)

#### CustomerBoughtReward

Sent when a member receives a reward:

* Reward is assigned manually
* Reward is granted by a campaign
* Reward is purchased from the reward catalog

See also: [Reward Flow](https://help.openloyalty.io/main-features/rewards/reward-list/reward-flow).

#### CouponWillExpire

Sent **X days before a reward coupon expires**. The value of `X` comes from [Expiring Notifications](https://help.openloyalty.io/main-features/webhooks/expiring-notifications).

***

### Member and tier events

#### CustomerRegistered

Sent when a member is created:

* In the Admin panel
* Via API: [POST /api/{storeCode}/member](https://apidocs.openloyalty.io/#tag/Member/operation/memberPost)

#### CustomerWasRegisteredWithoutActivation

Sent when a member is registered without activation:

* Via API: [POST /api/{storeCode}/member/register](https://apidocs.openloyalty.io/#tag/Member/operation/memberPostRegister)

#### CustomerUpdated

Sent when a member profile is updated in the Admin panel or via API. This includes:

* Basic profile fields (name, phone, email, card number, gender, dates, tier)
* Custom attributes: [PUT /api/{storeCode}/member/{member}](https://apidocs.openloyalty.io/#tag/Member/operation/memberPut)
* Address and company details
* Agreements

#### CustomerRequestedSendActivationCode

Sent when a member requests an activation code:

* Send code: [POST /api/{storeCode}/member/{member}/send-code](https://apidocs.openloyalty.io/#tag/Member/operation/memberPostSendCode)
* Resend code: [POST /api/{storeCode}/member/resend-code](https://apidocs.openloyalty.io/#tag/Member/operation/memberPostResendCode)

#### CustomerRequestedPasswordReset

Sent when an active member requests a password reset:

* Request reset: [POST /api/{storeCode}/member/password/reset/request](https://apidocs.openloyalty.io/#tag/Member/operation/memberPostPasswordResetRequest)

#### CustomerPhoneNumberWasChanged

Sent when a logged-in member updates their phone number in their profile.

#### CustomerLevelChanged

Sent when a member’s tier changes:

* Manual tier change (upgrade or downgrade)
* Tier threshold is reached
* A new member is created and the default tier is assigned

#### LevelWillExpire

Sent **X days before tier recalculation**. The value of `X` comes from [Expiring Notifications](https://help.openloyalty.io/main-features/webhooks/expiring-notifications).

#### CustomerEmailWasChanged

Sent when a logged-in member updates their email in their profile.

#### CustomerDeactivated

Sent when a member is deactivated:

* In the Admin panel
* Via API: [POST /api/{storeCode}/member/{member}/deactivate](https://apidocs.openloyalty.io/#tag/Member/operation/memberPostDeactivate)
