Using Placeholders for Event Handlers
Placeholders can automatically replace specific information (such as customer address, order details, subscription status, etc.). Each type of notification has its own set of Placeholders that aren't available to other notification types. Placeholders allow extracting information from the database and putting it into a notification message.
The following table includes the list of Events and corresponding Placeholders that can be used in the Query parameter of the Event Handler.
The following operations with Placeholders are supported for the Query parameter:
>
<
>=
<=
=
!=
include? (for example,
order.type = "SalesOrder" and (order.plans_ids include? 2000030)
) — the Event Handler works if the Plan with id =2000030 is included in the Order)- exclude? (to exclude the certain entities (using the id, key, or name) from the massive of entities. For example, to exclude sending messages about order creation, which includes the Plan with the id = 2000000, use the following rule:
order.plans_ids exclude? 2000000)
and (for example, to exclude several entities from the massive:
(product_ids exclude? 34650) and (product_ids exclude? 34702)
)- or
- % (for example, 30% of the Financial blocking threshold:
account.financial_blocking_threshold % 30
)
Event | Placeholder | Description | Type | Example |
---|---|---|---|---|
For all events | owner.status | Status of the user with the Owner access rights | string | owner.status = "active" |
owner.country | Owner address: two-letter ISO code ISO 3166-1 alpha-2 of the country | string | owner.country = "BY" | |
owner.city | Owner address: city | string | owner.city = "Minsk" | |
current_date | Current date | date | current_date | |
Account changed Low balance Create instance Reset instance password | account.type_id | Account Type ID | integer | account.type_id = 1 |
account.type_key | Account Type key | string | account.type_key = "business" | |
account.class_id | Account Class ID (see Account Classes) | integer | account.class_id = 1 | |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "manual" | |
account.billing_day | The billing day is set in the Plan Class (see Managing Service Terms). The billing day can be set from 1 to 31 that specifies the day of the month. If the month does not include the specified number, the Invoice will be created on the last day of that month | integer | account.billing_day = 30 | |
account.financial_blocking_threshold | The limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero period | integer | account.financial_blocking_threshold = 100 | |
account.balance | Current value of the Account Balance (see Viewing the List of Charges) | integer | account.balance = 1000 | |
account.balance.was | Previous value of the Account Balance (see Viewing the List of Charges). Can be used only for the Low balance event | integer | account.balance.was = 100 | |
account.status | Current Account status: active, inactive, deleted | string | account.status = "inactive" | |
account.status.was | Previous Account status: active, inactive, deleted. Can be used only for the Account changed event | string | account.status.was = "inactive" | |
account.country | Account address: two-letter ISO code ISO 3166-1 alpha-2 of the country | string | account.country = "BY" | |
account.city | Account address: city | string | account.city = "Minsk" | |
Account created | owner.email | Account Owner email | string | owner.email = "test@example.com" |
account.id | Account ID | integer | account.id = 1 | |
account.name | Account full name (company name) | string | account.name = "Adam Smith" | |
account.owner_reset_password_url | One-time link to set the Account Owner password | string | account.owner_reset_password_url = "http://example.com/password/edit?reset_password_token=1q2w3e" | |
Low balance | account.regular_sending | This parameter is used to configure sending SMS notification about the low Account Balance:
| boolean | account.regular_sending = true |
account.has_endless_trial_subscriptions | This parameter is used to choose the subscription type, to which the SMS notifications will be sent (trial / no-trial subscription). If "account.has_endless_trial_subscriptions = true", the notification about low balance is sent only to customers with at least one non-trial endless subscription. | boolean | account.has_endless_trial_subscriptions = true | |
Invoice closed | invoice.status | Invoice status | string | invoice.status = "open" |
Manual Operation | operation.id | Manual Operation ID (see Manual Operations) | integer | operation.id = 1 |
operation.status | Manual Operation status | string | operation.status = "approval_required" operation.status = "declined" | |
operation.type | Manual Operation type | string | operation.type = "postpay_subscription_verify" operation.type = "manual_provisioning_plugin_application_install" operation.type = "manual_provisioning_plugin_application_update" | |
product.id | Product ID | integer | product.id = 1 | |
product.name | Product name | string | product.name = "ESET" | |
product_category.id | Product Category ID | integer | product_category.id = 1 | |
plan.id | Plan ID | integer | plan.id = 1 | |
plan_category.key | Plan Category ID | string | plan_category.key = "default" | |
subscription.id | Subscription ID | integer | subscription.id = 1 | |
subscription.status.was | Subscription status (previous) | string | subscription.status.was="installing" | |
subscription.status | Subscription status (current) | string | subscription.status.was="active" | |
account.type_key | Account Type key (see Account Types) | string | account.type_key = "personal" | |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "default" | |
User invitation | - | - | - | - |
Payment has been received | account.type_key | Account Type key (see Account Types) | string | account.type_key = "business" |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "manual" | |
account.billing_day | The billing day is set in the Plan Class (see Managing Service Terms). The billing day can be set from 1 to 31 that specifies the day of the month. If the month does not include the specified number, the Invoice will be created on the last day of that month | integer | account.billing_day = 30 | |
account.financial_blocking_threshold | integer | account.financial_blocking_threshold = 100 | ||
account.balance | Current value of the Account Balance (see Viewing the List of Charges) | integer | account.balance = 1000 | |
account.status | Current Account status | string | account.status = "inactive" | |
account.country | Account address: two-letter ISO code ISO 3166-1 alpha-2 of the country | string | account.country = "Belarus" | |
account.city | Account address: city | string | account.city = "Minsk" | |
payment.total | Payment amount | integer | payment.total = 100 | |
payment.status | Payment status | string | payment.status = "completed" | |
Password reset request Verify email | user.id | User ID | integer | user.id = 1 |
Before subscription expiration After subscription expiration After subscription switched from trial to non-trial Subscription changed | account.type_key | Account Type key (see Account Types) | string | account.type_key = "business" |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "manual" | |
account.billing_day | The billing day is set in the Plan Class (see Managing Service Terms). The billing day can be set from 1 to 31 that specifies the day of the month. If the month does not include the specified number, the Invoice will be created on the last day of that month | integer | account.billing_day = 30 | |
account.financial_blocking_threshold | The limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero period | integer | account.financial_blocking_threshold = 100 | |
account.balance | Current value of the Account Balance (see Viewing the List of Charges) | integer | account.balance = 1000 | |
account.status | Current Account status | string | account.status = "inactive" | |
account.country | Account address: two-letter ISO code ISO 3166-1 alpha-2 of the country. | string | account.country = "Belarus" | |
account.city | Account address: city | string | account.city = "Minsk" | |
plan.id | Plan ID | integer | plan.id = 1 | |
plan.status | Plan status | string | plan.status = "completed" | |
plan.auto_renewal_disabled | The Disable the Auto renewal option option of the Plan | boolean | plan.auto_renewal_disabled = false | |
plan_category.key | Plan Category key (see Managing Plan Categories) | string | plan_category.key = "streaming" | |
plan_period.duration_value | Duration of the subscription for the Plan | integer | plan_period.duration_value = 30 | |
plan_period.duration_type | Units of the Plan period (year, month, day) | string | plan_period.duration_type = "months" | |
plan_period.trial | Plan period is trial: true or false. The | string (boolean) | plan_period.trial = "false" | |
plan_period.setup_fee | Price of the resource installation. It is used for one-time payment | integer | plan_period.setup_fee = 100 | |
plan_period.recurring_fee | Monthly fee for the resource. This type of fee is used if the customer has to pay for the resource each month to renew the subscription | integer | plan_period.recurring_fee = 100 | |
plan_period.renewal_fee | Fee for renewing the resource | integer | plan_period.renewal_fee = 100 | |
subscription.id | Subscription ID | integer | subscription.id = 1 | |
subscription.status | Subscription status (current) | string | subscription.status = "active" | |
subscription.status.was | Subscription status (previous) | string | subscription.status.was="installing" | |
subscription.auto_renewal | If the auto renewal option is active: true or false | boolean | subscription.auto_renewal = true | |
subscription.auto_renewal_disabled | The Disable the Auto renewal option option of the Subscription | boolean | subscription.auto_renewal_disabled = false | |
subscription.days_left | Number of days before expiration day of the Subscription | integer | subscription.days_left = 7 | |
subscription.days_passed | Number of days after creation day of the Subscription | integer | subscription.days_passed = 15 | |
subscription.plan_class | Plan Class ID (see Managing Service Terms) | integer | subscription.plan_class = 1 | |
subscription.trial.status | Plan period status (trial / no-trial). You can add this placeholder to the event handler for the "Subscription is changed" event (for example, «subscription.trial = false»). In this case, if the Plan period is changed from trial to no-trial, the notifications will be sent | string | subscription.trial.status = "trial" subscription.trial.status = "no-trial" | |
subscription.renewal_amount | The amount of funds that is required for topping up the Account Balance to renew a Subscription in the automatic mode | number | subscription.renewal_amount = 123.4 | |
subscription.payment_model | Payment model: prepay or postpay For the After subscription switched from trial to non-trial Event, only | string | subscription.payment_model = "postpay" | |
product.id | Product ID (see Editing general information about the Plan) | integer | product.id = 1 | |
product.name | Product name (see Editing general information about the Plan) | integer | product.name = "Default" | |
Order changed Order created | order.id | Order ID | integer | order.id = 1 |
order.plans_ids | IDs of ordered plans | integer | order.type = "SalesOrder" and (order.plans_ids include? 2000030) | |
order.status | Current status of the Order | string | order.status = "waiting for payment" | |
order.status.was | Previous status of the Order | string | order.status.was = "provisioning" | |
order.total | Total amount of Order | integer | order.total = 100 | |
order.type | Order type (for the list of possible types, see Managing an Order) | string | order.type = "RenewalOrder" | |
order.renewal_point | The Placeholder is deprecated. In the current version of the platform, See also order.renewal_is_positive. Whether the value in the Auto-renew point (days) field is set on the Subscription's details page (see Viewing and updating Subscription's details): true or false | boolean | order.renewal_point = true | |
order.renewal_is_positive | Whether the Subscription is auto-renewed before the expiration day (see Viewing and updating Subscription's details):
| boolean | order.renewal_is_positive = true | |
product.id | Product ID included in the Order (see Viewing Order Details) | integer | product.id = 1 | |
product.name | Product name included in the Order (see Viewing Order Details) | integer | product.name = "Default" | |
subscription.payment_model | Payment model: prepay or postpay | string | subscription.payment_model = "postpay" | |
plan_category.key | Plan category key | string | plan_category.key = "Default" | |
Guaranteed payment created Guaranteed payment changed | account.type_id | Account Type ID (see Account Types) | integer | account.type_id = 1 |
account.type_key | Account Type key (see Account Types) | string | account.type_key = "business" | |
account.class_id | Account Class ID (see Account Classes) | integer | account.class_id = 1 | |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "manual" | |
guaranteed_payment.status.was | Previous status of the Guaranteed Payment (see Managing Guaranteed Payments) | string | guaranteed_payment.status.was = "provided" | |
guaranteed_payment.status | Current status of the Guaranteed Payment (see Managing Guaranteed Payments) | string | guaranteed_payment.status = "revoked" | |
Guaranteed payment will expire | guaranteed_payment.days_left | Number of days before the expiration date of a Guaranteed Payment | integer | guaranteed_payment.days_left = 1 |
Billing day is coming | billing_day | Billing day date (see Creating a Service Term) | integer | billing_day = 5 |
billing_day_left | Number of days left to the Billing day that caused the Notification event occurring (see Creating an Event Handler) On the Billing day, which caused the Notification event occurring, the Placeholder will return an amount of days left to the next Billing day | integer | billing_day_left = 7 | |
billing_day_open_charges_amount | Total amount of Charges in the Open status that will be closed or blocked on the Billing day that caused the Notification event occurring. Only Subscriptions with the Auto-renew point (days) = 0 are counted. If there are no open Charges, preliminary generation of the Charges for the next Billing period is used for calculation | number | billing_day_open_charges_amount = 120.1 | |
plan_ids | List of the Plan IDs with active Subscriptions of the Account | array(int) | plan_ids include? 200023 | |
product_ids | List of the Products IDs with active Subscriptions of the Account | array(int) | product_ids include? 100022 | |
product_names | List of the Products names with active Subscriptions of the Account | array(str) | product_names include? "Default" | |
monthly_billing | Indication that the Account has active Subscriptions with the G-Suite, CSP monthly, Pay in Full billing types, to which the Billing day that caused a Notification event occurring is applicable | boolean | monthly_billing = true | |
account.type_key | Account Type key (see Account Types) | string | account.type_key = "personal" | |
account.class_key | Account Class key (see Account Classes) | string | account.class_key = "default" | |
account.balance | Available Account Balance | number | account.balance = 58.5 | |
account.financial_blocking_threshold | The limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero period | number | account.financial_blocking_threshold = 10000 | |
subscription.expiration_date | Subscription expiration date | date DD.MM.YYYY | 01.01.2019 | |
subscription.payment_model | Payment model: prepay or postpay | string | subscription.payment_model = "postpay" | |
Payment due date is coming | payment.days_left | Number of days prior to Payment due date, when the Notification is sent | integer | payment.days_left = 5 |
Credit hold threshold was changed | account.financial_blocking_threshold | The limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero period | number | account.financial_blocking_threshold = 10000 |
Account credit hold is coming | account.financial_blocking_threshold | The limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero period | number | account.financial_blocking_threshold = 10000 |
account.balance | Current value of the Account Balance (see Viewing the List of Charges) | integer | account.balance = 1000 | |
Credit limit for postpaid subscription was changed | subscription_postpay.credit_limit | The value of the subscription debt, above which the postpaid Subscription will be stopped | integer | subscription_postpay.credit_limit = 100 |
Credit limit for postpaid subscription is approaching | subscription_postpay.current_debt | The Subscription debt that is calculated as the total amount of all blocked Charges for the Subscription for the current Billing period | integer | subscription_postpay.current_debt = 100 |
subscription_postpay.credit_limit | The value of the subscription debt, above which the postpaid Subscription will be stopped | integer | subscription_postpay.credit_limit = 100 | |
Billing day has come | billing_day | The date of the billing day when the Event occurs | integer | billing_day = 5 |
subscriptions_plan_category_keys | Plan category keys that are used for the check whether the Manager has at least one Account with a Subscription in any status except Deleted within the specified Plan categories | array | subscriptions_plan_category_keys include? "azure" | |
subscriptions_statuses | Subscription statuses that are used for the check whether the Manager has at least one Account with a Subscription in any specified status | array | subscriptions_statuses include? "active" | |
The Invoice was approved | invoice.has_attached | Indication that a third-party invoice is attached to a Payment for an approved postpaid Invoice with external management (see Managing Invoices for the Postpay model by a third-party ERP system) | boolean | invoice.has_attached = true |