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 several or after and, use additional parentheses: order.type = "RenewalOrder" and order.renewal_is_positive = true and subscription.payment_model = "prepay" and ((order.plans_ids include? 293827) or (order.plans_ids include? 293824) or (order.plans_ids include? 294340))
  • % (for example, 30% of the Financial blocking threshold: account.financial_blocking_threshold % 30 )
EventPlaceholderDescriptionTypeExample

For all Events

owner.status

Status of the user with the Owner access rightsstringowner.status = "active"

owner.country

Owner address: two-letter ISO code ISO 3166-1 alpha-2 of the countrystringowner.country = "BY"

owner.city

Owner address: citystringowner.city = "Minsk"
current_dateCurrent datedatecurrent_date

Account credit hold is coming


Account changed


Account created


Financial blocking threshold was changed


Account manager changed

Low balance


Closing documents generated

Create instance

Reset instance password

account.balance

Current value of the Account Balance (see Viewing the List of Charges)

numberaccount.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.

numberaccount.balance.was = 100
account.cityAccount address: citystringaccount.city = "Minsk"
account.class_idAccount Class ID (see Account Classes)integeraccount.class_id = 1
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "manual"
account.countryAccount address: two-letter ISO code ISO 3166-1 alpha-2 of the countrystringaccount.country = "BY"
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

numberaccount.financial_blocking_threshold = 100
account.has_endless_trial_subscriptions

Indication that the Account has at least one commercial Subscription with the endless period

booleanaccount.has_endless_trial_subscriptions = true
account.has_managerIndication that the Account is linked to a Managerbooleanaccount.has_manager = true
account.regular_sending
  • If account.regular_sending = true, the notification is sent only during the billing process.
  • If account.regular_sending = false, the notification is sent only when the balance changed.
  • If not specified, the notification is sent in all cases: during the billing processes and when the balance changed.
booleanaccount.regular_sending = true
account.statusCurrent status of the Accountstringaccount.status = "inactive"
account.status.was

Previous status of the Account

Can be used only for the Account changed Event.

stringaccount.status.was = "inactive"
account.subscription_credit_limitValue of the subscription credit limit of the Accountnumberaccount.subscription_credit_limit = 100
account.type_idAccount Type IDintegeraccount.type_id = 1
account.type_keyAccount Type keystringaccount.type_key = "business"
account.owner_reset_password_url

One-time link to set the Account Owner password

Can be used only for the Account created Event.

stringaccount.owner_reset_password_url = "http://example.com/password/edit?reset_password_token=1q2w3e"

Invoice closed


The Invoice was approved

invoice.statusInvoice statusstringinvoice.status = "open"
invoice.has_attachedIndication 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)booleaninvoice.has_attached = true
account.type.keyAccount Type keystringaccount.type_key = "business"

Manual Operation

operation.idManual Operation ID (see Manual Operations)integeroperation.id = 1
operation.statusManual Operation statusstring

operation.status = "approval_required"

operation.status = "declined"

operation.typeManual Operation typestring

operation.type = "postpay_subscription_verify"


operation.type = "manual_provisioning_plugin_application_install"


operation.type = "manual_provisioning_plugin_application_update"

product.idProduct IDintegerproduct.id = 1
product.nameProduct namestringproduct.name = "ESET"
product_category.idProduct Category IDintegerproduct_category.id = 1
plan.idPlan IDintegerplan.id = 1
plan_category.keyPlan Category IDstringplan_category.key = "default"
subscription.idSubscription IDintegersubscription.id = 1
subscription.status.wasSubscription status (previous)stringsubscription.status.was="installing"
subscription.statusSubscription status (current)stringsubscription.status.was="active"
account.type_keyAccount Type key (see Account Types)stringaccount.type_key = "personal"
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "default"

User invitation

----

Payment has been received

account.type_keyAccount Type key (see Account Types)stringaccount.type_key = "business"
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "manual"
account.billing_day

Billing day (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

integeraccount.billing_day = 30
account.financial_blocking_threshold

integeraccount.financial_blocking_threshold = 100
account.balanceCurrent value of the Account Balance (see Viewing the List of Charges)integeraccount.balance = 1000
account.statusCurrent Account statusstringaccount.status = "inactive"
account.countryAccount address: two-letter ISO code ISO 3166-1 alpha-2 of the countrystringaccount.country = "BY"
account.cityAccount address: citystringaccount.city = "Minsk"
payment.totalPayment amountintegerpayment.total = 100
payment.status

Payment status

stringpayment.status = "completed"

Password reset request

Verify email

user.idUser IDintegeruser.id = 1
Manager password reset requestmanager.idManager IDintegermanager.id = 1

Before subscription expiration

After subscription expiration

After subscription switched from trial to no-trial

Subscription changed


Credit limit for postpaid subscription was changed


Credit limit for postpaid subscription is approaching

account.balanceCurrent value of the Account Balance (see Viewing the List of Charges)numberaccount.balance = 1000
account.statusCurrent Account statusstringaccount.status = "inactive"

account.type_key

Account Type key (see Account Types)

stringaccount.type_key = "business"
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "manual"
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

numberaccount.financial_blocking_threshold = 100
account.subscription_credit_limitValue of the subscription credit limit of the Accountnumberaccount.subscription_credit_limit = 100
account.countryAccount address: two-letter ISO code ISO 3166-1 alpha-2 of the countrystringaccount.country = "BY"
account.cityAccount address: citystringaccount.city = "Minsk"
plan.auto_renewal_disabledThe Disable the Auto-renew option option of the linked Plan is active: true or falsebooleanplan.auto_renewal_disabled = false
plan.idPlan IDintegerplan.id = 1
plan.status

Plan status

stringplan.status = "completed"
plan_period.duration_value

Plan period duration

integerplan_period.duration_value = 30
plan_period.duration_typeUnits of the Plan period (year, month, day)stringplan_period.duration_type = "months"
plan_period.trial

Plan period is trial: true or false.

The true and false values should have quotation marks.

string ("boolean")plan_period.trial = "false"
plan_period.setup_fee

Fee for installing the Subscription to the Plan period

numberplan_period.setup_fee = 100
plan_period.recurring_feeMonthly fee for the Subscription to the Plan periodnumberplan_period.recurring_fee = 100
plan_period.renewal_feeFee for renewing the Subscription to the Plan periodnumberplan_period.renewal_fee = 100
plan_category.key

Plan Category key (see Managing Plan Categories)

stringplan_category.key = "streaming"
plan_category.id

Plan Category ID

integerplan_category.id= 1
subscription.idSubscription IDintegersubscription.id = 1
subscription.cspThe Subscription belongs to Microsoft CSP program: true or falsebooleansubscription.csp = true
subscription.individual_priceThe Subscription is ordered at the individual prices (see Ordering a Subscription at the individual prices): true or falsebooleansubscription.individual_price = true
subscription.status

Subscription status (current)

stringsubscription.status = "active"
subscription.status.was

Subscription status (previous)

The Placeholder is not supported for the Credit limit for postpaid subscription was changed and Credit limit for postpaid subscription is approaching Events.

stringsubscription.status.was="installing"
subscription.auto_renewalThe Auto-renew option of the Subscription is active: true or falsebooleansubscription.auto_renewal = true
subscription.auto_renewal_disabledThe Disable the Auto-renew option option of the Subscription is active: true or falsebooleansubscription.auto_renewal_disabled = false
subscription.days_leftNumber of days before expiration day of the Subscriptionintegersubscription.days_left = 7
subscription.days_passedNumber of days after creation day of the Subscriptionintegersubscription.days_passed = 15
subscription.plan_class

Service Term name (see Managing Service Terms)

stringsubscription.plan_class = "default"
subscription.payment_model

Payment model: prepay or postpay

For the After subscription switched from trial to non-trial Event, only subscription.payment_model = "prepay" is supported since the Event itself is implemented for the Prepay model only.

stringsubscription.payment_model = "postpay"
subscription_postpay.current_debtSubscription debt that is calculated as the total amount of all blocked Charges for the Subscription for the current Billing periodnumbersubscription_postpay.current_debt = 100
subscription_postpay.credit_limitValue of the subscription debt, above which the postpaid Subscription will be stoppednumbersubscription_postpay.credit_limit = 100
product.id

Product ID (see Editing general information about the Plan)

integerproduct.id = 1
product.nameProduct name (see Editing general information about the Plan)integerproduct.name = "Default"
order.type

Order type (for the list of possible types, see Managing an Order)

The Placeholder is not supported for the Credit limit for postpaid subscription was changed and Credit limit for postpaid subscription is approaching Events.

stringorder.type = "RenewalOrder"

Order changed


Order created


Resend the order

order.id

Order ID

The Placeholder is not supported for the Order changed, Order created Events.

integerorder.id = 1
order.plans_idsIDs of ordered plansintegerorder.type = "SalesOrder" and (order.plans_ids include? 2000030)
order.status

Current status of the Order

stringorder.status = "waiting for payment"
order.status.was

Previous status of the Order

The Placeholder is not supported for the Order created Event.

stringorder.status.was = "provisioning"
order.totalTotal amount of Orderintegerorder.total = 100
order.type

Order type (for the list of possible types, see Managing an Order)

stringorder.type = "RenewalOrder"
order.renewal_point

The Placeholder is deprecated. In the current version of the platform, order.renewal_point = "true" in any case.

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

booleanorder.renewal_point = true
order.renewal_is_positive

Whether the Subscription is auto-renewed before the expiration day (see Viewing and updating Subscription's details):

  • true — the Renewal Order is created before the Subscription expiration day (Auto-renew point (days) is greater than 0).
  • false — the Renewal Order is created on the Subscription expiration day (Auto-renew point (days) is equal to 0).
booleanorder.renewal_is_positive = true
subscription.status

Subscription status

stringsubscription.status = "active"
product.idProduct ID included in the Order (see Viewing Order Details)integerproduct.id = 1
product.nameProduct name included in the Order (see Viewing Order Details)integerproduct.name = "Default"
subscription.payment_modelPayment model: prepay or postpaystringsubscription.payment_model = "postpay"
plan_category.keyPlan category keystringplan_category.key = "Default"
Resend the orderorder.days_passedNumber of days passed after creating the Orderintegerorder.days_passed = 5

Guaranteed payment created


Guaranteed payment changed


Guaranteed payment will expire
account.type_idAccount Type ID (see Account Types)integeraccount.type_id = 1
account.type_keyAccount Type key stringaccount.type_key = "business"
account.class_idAccount Class ID (see Account Classes)integeraccount.class_id = 1
account.class_key

Account Class key

stringaccount.class_key = "manual"
guaranteed_payment.status.was

Previous status of the Guaranteed Payment (see Managing Guaranteed Payments)

Can be used only for the Guaranteed payment changed Event.

stringguaranteed_payment.status.was = "provided"
guaranteed_payment.statusCurrent status of the Guaranteed Payment stringguaranteed_payment.status = "revoked"
guaranteed_payment.days_leftNumber of days before the expiration date of a Guaranteed Paymentintegerguaranteed_payment.days_left = 1
Billing day is comingbilling_dayBilling day date (see Creating a Service Term)integerbilling_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

integerbilling_day_left = 7
billing_day_open_charges_amountTotal 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 calculationnumberbilling_day_open_charges_amount = 120.1
plan_idsList of the Plan IDs with active Subscriptions of the Accountarray(int)plan_ids include? 200023
product_idsList of the Products IDs with active Subscriptions of the Accountarray(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_billingIndication that the Account has active Subscriptions with the CSP monthly, Monthly Commitment, ESET solutions for ISP (Monthly), G Suite, Pay in full, and Non-refund billing types, to which the Billing day that caused a Notification event occurring is applicablebooleanmonthly_billing = true
account.type_keyAccount Type key (see Account Types)stringaccount.type_key = "personal"
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "default"
account.balanceAvailable Account Balancenumberaccount.balance = 58.5
account.financial_blocking_thresholdThe limit, within which the Account balance can be negative without moving the Account to the Credit hold status during the Subzero periodnumberaccount.financial_blocking_threshold = 10000
subscription.expiration_dateSubscription expiration datedate DD.MM.YYYY01.01.2019
subscription.payment_modelPayment model: prepay or postpaystringsubscription.payment_model = "postpay"
Payment due date is coming

payment.days_left

Number of days prior to Payment due date, when the Notification is sentinteger

payment.days_left = 5

Billing day for manager's subscriptions has come (former Billing day has come)billing_dayThe date of the billing day when the Event occursintegerbilling_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

arraysubscriptions_plan_category_keys include? "azure"
subscriptions_statusesSubscription statuses that are used for the check whether the Manager has at least one Account with a Subscription in any specified statusarraysubscriptions_statuses include? "active"

Joined payment created


Resend the joined payment

account.class_idAccount Class ID (see Account Classes)integeraccount.class_id = 1
account.class_keyAccount Class key (see Account Classes)stringaccount.class_key = "manual"
payment.days_passed

Number of days passed after creating the joined Payment

Can be used only for the Resend the joined payment Event.

integerpayment.days_passed = 5
Billing day for account's subscription has come
billing_day_passed

Number of days passed after the Billing day to trigger the Event for the previous Billing period

The billing_day_passed Placeholder is required:

  • For Subscriptions to the Microsoft Azure Plan Service (see Microsoft Azure Plan. Operator Guide) — to postpone the Event because the Charges are closed after the Billing day.
  • For other Subscriptions — if there is no need to postpone the Event, specify billing_day_passed = 0.
integerbilling_day_passed = 5
plan_category_keyKey of a Plan category of a Subscription to trigger the Eventstringplan_category_key = "azure"
subscription_statusStatus of a Subscription to trigger the Eventstringsubscription_status = "active'
account_class_keyKey of an Account class required for an Account to trigger the Eventstringaccount_class_key = "default"
Correction approvedcorrection.approved_manager_id
List of IDs of Managers who approved a Correction to trigger the Eventintegercorrection.approved_manager_id = 221