Articles:
- Access control
- How to disable login through social media
- How to set your project logo (preview) for messengers
- Changing the project (cabinet) name and other public settings
- Adding your offer to the Kwiga platform
- How to connect an additional project
- How to set a specific language for a page on Kwiga
- Notifications received by students
- Changing the password and login settings
- Changing personal information
- Sender settings and reply address
- Important settings
- How to delete a user account
- Project (School) Presentation Page
- How to Bind Your Own Domain/Subdomain
- Using variables on the project, list of available variables
- Connecting a Custom Domain (Subdomain) for Sending Emails
- How to Add Public Project Information and Contact Channels
- Student Profile Settings
This article explains how to use variables in your project—where to apply them, what data is available, and how to use them for automation and personalization. Includes a list with descriptions and examples for emails, webhooks, buttons, lessons, and more.
In this article:
General information about variables
Variables are a convenient way to insert personalized data into various elements of your project. They can be used in places like:
1. Webhooks in automations
Variables can be inserted:
-
in the webhook URL, for example:
https://example.com/hook?user={user.email} -
in the request body parameters
-
in the headers
This allows personal data to be automatically sent to third-party services.
2. CTA (Call to Action)
In buttons and links, variables can be used for:
-
personalizing button text
-
passing data through links, such as user ID or UTM tags
3. In parameters
Variables can be used in form parameters or other elements:
-
user email
-
subscription ID
-
unique codes and tags
-
any other variable available in the context
4. In redirect link (if not using payment transition)
Variables can be manually added to the redirect link:
https://my.site.com/thanks?email={user.email}&course={course.title}
5. In the redirect link for successful offer payment
In the redirect link after successful offer payment, variables from blocks contact.*, order.*, and payment.* are available
Example: https://my.site.com/success?order_id={order.id}&email={contact.email}&payment_price={payment.price}
5. In lesson info blocks
Variables and conditional blocks work inside infobox texts. For example:
-
Addressing by name: Hi, {user.first_name}!
-
Displaying course name, date, status, etc.
-
Contact data: {contact.name}, {contact.email}, and other fields
-
Conditional blocks @if/@endif: show different content depending on whether the contact has a tag, access to the offer, etc.
6. In emails
Using variables in emails makes communication more personalized and effective. With variables such as {name}, {date}, or {course_name}, the email appears to be personally addressed to the client. This increases trust, engagement, and the likelihood that the user will read the email to the end or take the desired action. In addition, variables simplify the automation of mass mailings without losing an individual approach.
7. In notifications
When setting up notifications in automation actions, variables allow you to dynamically insert information into notifications, such as the username, order number, or offer name. This simplifies and speeds up the notification creation process, making them more intuitive and adaptable for different scenarios.
List of available variables
List of available variables that are accessible in all places where variables can be used.
| Variable | Value |
|---|---|
| contact.id | Contact ID |
| contact.user_id | User ID |
| contact.first_name | Contact name |
| contact.last_name | Contact surname |
| contact.middle_name | Middle name of contact |
| contact.name | Contact full name |
| contact.email | Contact email |
| contact.phone | Contact phone |
| contact.country | Contact country. For example: Ukraine |
| contact.timezone | Contact timezone. For example: Europe/Kyiv |
| contact.currency | Contact currency. For example: USD |
| contact.city | Contact city |
| contact.utm_source | List of unique contact utm_source (separator ", ") |
| contact.utm_medium | List of unique utm_medium of the contact (delimiter ", ") |
| contact.utm_campaign | List of unique utm_campaign of the contact (delimiter ", ") |
| contact.utm_term | List of unique utm_term of the contact (delimiter ", ") |
| contact.utm_content | List of unique utm_content of the contact (delimiter ", ") |
| contact.field_<id> | Custom fields (description below) |
| datetime | Date and time in UTC format YYYY-MM-DD HH:mm:ss |
| contact.visit_source | Visit source |
| These variables are available in the redirect link for successful offer payment. | |
Custom fields
{contact.field_<id>}
Example {contact.field_123}
<id> - field ID, which can be obtained in the contact field settings
(example
https://sampleschool.kwiga.com/expert/crm/contacts?view=settings)
How to change a variable’s value
You can add options after a variable to change how it looks: append text, make letters uppercase, or format the date.
General form: {variable|option:value|option}. For example: {order.id|prefix:ORDER-} or {payment.paid_at|format:DD.MM.YYYY}.
| What you want to get | What to write |
|---|---|
| Add text before the value | {order.id|prefix:ORDER-} -> will result in ORDER-123 |
| Add text after the value | {order.id|suffix:-EU} -> will result in 123-EU |
| Make the number a fixed length | {payment.number|pad:6} -> will result in 000001 |
| Pad with your own character instead of zeros | {payment.number|pad:6|padchar:_} -> will result in _____1 |
| Make all letters uppercase | {contact.city|upper} -> KYIV |
| Make all letters lowercase | {contact.city|lower} -> kyiv |
| Capitalize only the first letter | {contact.city|ucfirst} -> Kyiv |
| Show the date in the required format | {payment.paid_at|format:DD.MM.YYYY} -> will result in 24.12.2026 |
DD.MM.YYYY, MMMM YYYY, dddd, the Carbon docs will help. For formats like Y-m-d and H:i:s, use the official PHP docs.
pad is used, the value is first padded to the required length, and only then are the other options applied.
Conditional blocks @if / @endif
Allow you to show or hide part of the text depending on a condition. If the condition is true, the block is displayed; if not, it is removed completely.
Syntax: @if(condition)...text...@endif
Example:
@if({contact.has|offer:123})Get access to the materials@endif
@if() is any variable that returns true or false. Currently, {contact.has|...} is supported (contact membership check).
contact.has condition — contact check
Allows you to check whether a contact meets certain conditions. Returns true or false. Usually used together with conditional blocks @if/@endif.
Syntax: {contact.has|type:value}
| Type | Value | Description |
|---|---|---|
offer |
Offer ID | The contact has access to the offer |
order |
Order ID | The contact has an order with this ID |
product |
Product ID | The contact has access to the product |
tag |
Tag ID or name | The contact has a tag (Cyrillic and spaces in the name are supported) |
list |
List ID | The contact is in the list |
course |
Course ID | The contact is enrolled in the course |
bootcamp |
Course ID | Alias for course (bootcamp is a subtype of course) |
webinar |
Webinar ID | The contact has access to the webinar |
closed_group |
Closed group ID | The contact has access to the closed group |
| — all of them must be met at the same time (AND logic). For example: {contact.has|offer:123|tag:VIP}
Usage examples:
| {contact.has|offer:123} | checks for the presence of an offer with ID 123 |
| {contact.has|tag:VIP} | checks a tag by name |
| {contact.has|tag:тест тег} | tag with a space and Cyrillic |
| {contact.has|offer:123|tag:VIP} | both conditions at the same time (AND) |
Variables that can be additionally used in CTA
-
in parameters
-
in redirect link (if not using payment transition)
| Variable | Value |
|---|---|
| first_name | First name from application |
| last_name | Last name from application |
| middle_name | Middle name from the application |
| name | Full name from application |
| Email from application | |
| phone | Phone from application |
| field_<id> | Custom fields Phone from the application (description below) |
| utm_source | utm_source - specifically from the visit where the application was submitted |
| utm_medium | utm_medium - specifically from the visit where the application was submitted |
| utm_campaign | utm_campaign - specifically from the visit where the application was submitted |
| utm_term | utm_term - specifically from the visit where the application was submitted |
| utm_content | utm_content - specifically from the visit where the application was submitted |
| widget_landing | Landing page URL from which the application was sent |
| widget_landign_referer | Referrer that was on the landing page when the application was sent |
|
Also, in certain forms, variables described below in Variables available in automation webhooks may be accessible By order ({order.*}) - If the Access to product (Full access/By offer) form option is selected By product({product.*}) - If the Access to product + Full access form option is selected By offer ({offer.*}) - If the Access to product + By offer form option is selected |
|
Custom fields
{field_<id>}
Example {contact.field_123}
<id> - field ID, which can be obtained in the contact field settings
(example
https://sampleschool.kwiga.com/expert/crm/contacts?view=settings)
If on the page where the CTA or Kwiga tracking script is placed, there were visits with utm tags, and the client submitted a request on the landing page without utm tags, they will be absent in these variables. But they will be available in the variables {contact.utm_...}, which are described above.
Variables available in automation webhooks (url, parameters, emails)
List of available variables
| Variable | Value |
|---|---|
| referrer | Referrer from the first known visit of the contact (Kwiga / landing with CTA) |
| initial_page | URL of the first known visit of the contact (Kwiga / landing with CTA) |
| reg_from | URL of the page where registration occurred (Kwiga / landing with CTA) |
| tags | Contact tags (delimiter ", ") |
| description | Description of the event that triggered the automation. For example: Tag test_tag added to contact |
CTA form variables
| Variable | Value |
|---|---|
| cta.id | CTA form ID |
| cta.uuid | CTA form UUID |
| cta.title | CTA form name |
| cta_request.form_data | List of user-entered data (separated by line breaks) |
| The list can be expanded. | |
Available when the following events occur:
- Application CTA
Product variables
| Variable | Value |
|---|---|
| product.id | Product ID |
| product.title | Product name |
| product.productable_type | Product type. Possible options: course, webinar, closed_group, custom_product |
| product.productable_id | ID of the course/webinar/closed group/custom product |
Available when the following events occur:
- Product access gained
- Product access removed
- Registered for webinar
- Course completed
- Quiz passed
- Reset quiz result
- Quiz transitioned to status
- Subscription access start
- Subscription access end
- Started watching lesson
- Watched lesson
- Open lesson access
- All lesson practice completed
Order variables
| Variable | Value |
|---|---|
| order.id | Order ID |
| order.price | Final price. Example 10.99 |
| order.currency_code | Order currency in code format. Example: USD |
| order.currency_symbol | Order currency in symbol format. Example: $ |
| order.currency_short_title | Order currency in abbreviated name. Example: usd |
| order.order_stage_id | Funnel status ID |
| order.order_stage_title | Funnel status name |
| order.funnel_id | Funnel ID |
| order.funnel_title | Funnel name |
| order.paid_status | Order payment status not_paid / partial_paid / paid |
| order.paid_status_title | Payment status in English words |
| order.utm_source | utm_source of order |
| order.utm_medium | utm_medium of order |
| order.utm_campaign | utm_campaign of order |
| order.utm_term | utm_term of order |
| order.utm_content | utm_content of order |
| order.next_scheduled_payment_at | Date of the next scheduled payment (for subscriptions and installment plans). Format YYYY-MM-DD HH:mm:ss |
| These variables are available in the redirect link for successful offer payment. | |
| The list can be expanded. | |
Available when the following events occur:
- Subscription started
- Subscription renewed
- Paid order
- New order
- Successful offer payment
- Failed offer payment
- Offer payment refund
- Product access gained
- Subscription access start
- Subscription access end
Payment variables
| Variable | Value |
|---|---|
| payment.id | Payment ID |
| payment.price | Payment price |
| payment.currency_code | Payment currency in code format. Example: USD |
| payment.currency_symbol | Payment currency in symbol format. Example: $ |
| payment.currency_short_title | Payment currency in abbreviated name. Example: usd |
| payment.created_at | Payment creation date. Format YYYY-MM-DD HH:mm:ss |
| payment.paid_at | Payment date. Format YYYY-MM-DD HH:mm:ss |
| payment.schedule_payment_at | Scheduled payment date. Format YYYY-MM-DD HH:mm:ss |
| payment.number | Sequential payment number in the order |
| These variables are available in the redirect link for successful offer payment. | |
| The list can be expanded. | |
Available when the following events occur:
- Successful offer payment
- Failed offer payment
- Offer payment refund
Offer variables
| Variable | Value |
|---|---|
| offer.id | Offer ID |
| offer.title | Offer name |
| The list can be expanded. | |
Available when the following events occur:
- Successful offer payment
- Failed offer payment
- Offer payment refund
- Accepted free offer
- Subscription started
- Subscription renewed
- Paid order
- New order
- Product access gained
- Subscription access start
- Subscription access end
Product subscription variables
| Variable | Value |
|---|---|
| subscription.id | Product subscription ID |
| subscription.order_id | Order ID linked to the product subscription |
| subscription.start_at | Subscription start date. YYYY-MM-DD HH:mm:ss |
| subscription.end_at | Final subscription end date. YYYY-MM-DD HH:mm:ss |
| subscription.order_end_at | Subscription end date, considering only paid payments. YYYY-MM-DD HH:mm:ss |
| subscription.paid_at | First subscription payment date. YYYY-MM-DD HH:mm:ss |
| The list can be expanded. | |
Available when the following events occur:
- Product access gained
- Subscription access start
- Subscription access end
Quiz attempt variables
| Variable | Value |
|---|---|
| quiz_attempt.id | Attempt ID |
| quiz_attempt.number_version | Version number of completion |
| quiz_attempt.quiz_id | Quiz ID |
| quiz_attempt.course_id | Course ID |
| quiz_attempt.course_lesson_id | Lesson ID |
| quiz_attempt.status_id | Status ID |
| quiz_attempt.status | Status in text form |
| quiz_attempt.scores | Points scored |
| quiz_attempt.created_at | Attempt start. Format YYYY-MM-DD HH:mm:ss |
| quiz_attempt.finished_at | Attempt end. Format YYYY-MM-DD HH:mm:ss |
| quiz_attempt.count_questions | Number of questions in the quiz |
| quiz_attempt.count_questions_incorrect | Number of questions answered incorrectly |
| quiz_attempt.count_questions_correct | Number of correctly answered questions |
| quiz.title | Quiz name |
| The list can be expanded. | |
Available when the following events occur:
- Quiz passed
- Reset quiz result
- Quiz transitioned to status
Lesson variables
| Variable | Value |
|---|---|
| lesson.id | Lesson ID |
| lesson.title | Lesson name |
| The list can be expanded. | |
Available when the following events occur:
- Quiz passed
- Reset quiz result
- Quiz transitioned to status
- Started watching lesson
- Watched lesson
- Open lesson access
- All lesson practice completed
Didn't find the answer? Contact the support service via online chat or Telegram